Filter löschen
Filter löschen

Different computer save folder

15 Ansichten (letzte 30 Tage)
Debbie Oomen
Debbie Oomen am 12 Okt. 2017
Kommentiert: Debbie Oomen am 1 Nov. 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 Kommentare
OCDER
OCDER am 13 Okt. 2017
Bearbeitet: OCDER am 13 Okt. 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 am 13 Okt. 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

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

OCDER
OCDER am 13 Okt. 2017
Bearbeitet: OCDER am 13 Okt. 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 Kommentar
OCDER
OCDER am 13 Okt. 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!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Matthew
Matthew am 13 Okt. 2017
Bearbeitet: Matthew am 13 Okt. 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 Kommentar
Debbie Oomen
Debbie Oomen am 1 Nov. 2017
How do I get specific parameters written to this outputFile? For example: median frequency and filename

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by