open CSV and XLSX files

8 次查看(过去 30 天)
myfiles = dir(fullfile(mydir,'*.*'));
for i=1:length(myfiles);
filename = myfiles(i).name;
if myfiles.xls
emg = xlsread(filename);
elseif myfiles.csv
emg = csvread(filename);
end
I want to open both csv and xlsx extension files that are in the same folder. When I try this script it gives me an error. What is the correct script?

采纳的回答

Walter Roberson
Walter Roberson 2017-10-12
xlsread() can read csv files; you do not to handle the two differently.
But anyhow, if you have special reason for doing this, or just to see how it is done in case you want to add other formats not handled by xlsread():
myfiles = dir(fullfile(mydir,'*.*'));
for i=1:length(myfiles);
filename = myfiles(i).name;
[~, ~, ext] = fileparts(filename);
if strcmp(ext, '.xls')
emg = xlsread(filename);
elseif srcmp(ext, '.csv')
emg = csvread(filename);
end
end
  5 个评论
Walter Roberson
Walter Roberson 2017-10-12
myfiles = dir(fullfile(mydir,'*.*'));
myfiles([myfiles.isdir]) = []; %skip . and .. and all other folders
for i=1:length(myfiles);
filename = myfiles(i).name;
[~, 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('it is 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));
t = emg(:,1);
y1 = emg (:,2);
N=length(y1);
ls=size(y1);
f = 1/N; %frequency
fprintf('processed the data in file "%s". Now what?\n', filename);
end
Debbie Oomen
Debbie Oomen 2017-10-12
You are a saint!! Thank you so much

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 MATLAB 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by