Different computer save folder

2 visualizaciones (últimos 30 días)
Debbie Oomen
Debbie Oomen el 12 de Oct. de 2017
Comentada: Debbie Oomen el 1 de Nov. de 2017
I have a script that I need to share with my professor. I used the commands uigetfile and uigetdir so that my professor can select my sent files for analysing but I was wondering if there was an easier way that my professor could use the scripts and if there is a way that he can write everything to a folder? I have already seen something like this : [pathname ] but I can not figure it out. Please help
  6 comentarios
OCDER
OCDER el 13 de Oct. de 2017
Editada: OCDER el 13 de Oct. de 2017
I see, so you want to save the output folder to the parent directory of the script? EX:
Professor computer has:
C:/ThisDir/Script
C:/ThisDir/EMG
You want script to automatically find the EMG files, and then save results to:
C:/ThisDir/output.xlsx ? or
C:/ThisDir/Ouput/output.xlsx ?
Also, I'm assuming output.xlsx is saving T, f, fs, etc for every .emg file (so 100 emg files will give you 100 data rows) ?
Debbie Oomen
Debbie Oomen el 13 de Oct. de 2017
Yes. The professor can click on the folder with the multiple raw EMG data files (for example folder name: testsubject 1) and then let Matlab performs the analysis on every file in that folder. Then I want matlab to write all analysed data to a new excel sheet in the same folder (testsubject 1) on his computer

Iniciar sesión para comentar.

Respuesta aceptada

OCDER
OCDER el 13 de Oct. de 2017
Editada: OCDER el 13 de Oct. de 2017
Try this out and see if it works. It assumes there an "emg" subfolder. If it can't find it, then it will ask prof to select the dir. Also, "filename" is changed to the full filename. Once the loop is done, it will save all results to a summary.xlsx file in the same dir of mydir (emg directory).
%Figure out key folder paths
ScriptDir = fileparts(mfilename('fullpath')); %script subfolder
MainDir = fileparts(ScriptDir); %folder above the script folder
mydir = fullfile(MainDir, 'emg'); %emg subfolder
%Select the emg folder
if ~exist(EmgDir, 'dir') %If the default emg folder is not there, ask prof to select it
mydir = uigetdir(EmgDir);
end
if isnumeric(mydir)
error('No directory selected');
end
%Get files, not folders
myfiles = dir(fullfile(mydir,'*.*'));
myfiles([myfiles.isdir]) = []; %skip . and .. and all other folders
results = cell(length(myfiles), 1);
for i=1:length(myfiles)
%filename = myfiles(i).name; %this needs the directory too.
filename = fullfile(mydir, myfiles(i).name); %this way, you get the dir + filename
[~, basename, ext] = fileparts(filename);
if isempty(basename)
fprintf('skipping dot file "%s"\n', filename)
continue %go on to next file
end
switch ext
case {'.xls', '.xlsx'}
fprintf('xlsread for file "%s"\n', filename);
emg = xlsread(filename);
case '.csv'
fprintf('it is csvread for file "%s"\n', filename);
emg = csvread(filename);
otherwise
fprintf('Warning: file "%s" is unrecognized extension\n', filename);
continue %go on to next file
end
fprintf('processing data with %d rows and %d columns\n', size(emg,1), size(emg,2));
%%%Plot signal
t = emg(:,1);
y1 = emg (:,2);
N=length(y1);
ls=size(y1);
f = 1/N; %frequency
fs= 1000; %sampling frequency
T = 1/fs; %period between each sample
results{i} = {filename N mat2str(ls) f fs T}; %Saving results (Fixed version)
end
%Saving everything to excel in the same dir of the emg files
targetFile = fullfile(mydir, 'summary.xlsx');
xlswrite(targetfile, cat(1, results{:}));
  1 comentario
OCDER
OCDER el 13 de Oct. de 2017
Oh, didn't realize ls was a matrix. Change this:
results{i} = {filename N ls f fs T}; %ERROR
results{i} = {filename N mat2str(ls) f fs T}; %FIXED
%but, ls will be saved something like '[1 100]'.
%Another way is to split ls into row & col components like this:
results{i} = {filename N ls(1) ls(2) f fs T}; %FIXED
NOTE: consider replacing ls with something else as this is a matlab function. Also, reserve the Answer sections for answers only, to prevent confusion as to which is an answer.
Hope this helps!

Iniciar sesión para comentar.

Más respuestas (1)

Matthew
Matthew el 13 de Oct. de 2017
Editada: Matthew el 13 de Oct. de 2017
A simple way to do this is to use mfilename to find the path to where the file is being run on the professor's computer.
[folderPath,fileName] = fileparts(mfilename('fullpath'));
OutputPath = fullfile(folderPath,'OutputDirectory');
if ~exist(OutputPath,'dir')
mkdir(OutputPath)
end
outputFile1 = fopen(fullfile(OutputPath,'OutputFile1.txt'),'w');
fclose(outputFile1);
  1 comentario
Debbie Oomen
Debbie Oomen el 1 de Nov. de 2017
How do I get specific parameters written to this outputFile? For example: median frequency and filename

Iniciar sesión para comentar.

Categorías

Más información sobre Startup and Shutdown en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by