目前我用来上传多个文件并导入数字数据的代码。但是代码会覆盖以前选择的文件,并只提供最终选定文件的数据。这是代码:
[FileName,PathName,FilterIndex] = uigetfile('*.txt*','MultiSelect','on');
numfiles = size(FileName,2);
for ii = 1:numfiles
FileName{ii};
A=[];
entirefile =fullfile(PathName,FileName{ii});
fid = fopen(entirefile);
tline = fgets(fid);
while ischar(tline)
parts = textscan(tline, '%f;');
if numel(parts{1}) > 0
A = [ A ; parts{:}' ];
end
tline = fgets(fid);
end
fclose(fid);
end
FileData = A
我意识到如果我将A =[];
放在for loop
之外,所有数据都将被写入A并且文件不会被覆盖。但是,我更愿意更改我的代码,以便每个文件中的数据位于数组A中的单独单元格中,我该如何处理?提前谢谢了。
答案 0 :(得分:0)
在以下代码中,Filedata
是包含每个文件数据的单元格。
[FileName,PathName,FilterIndex] = uigetfile('*.txt*','MultiSelect','on');
numfiles = size(FileName,2);
Filedata= cell(1,numfiles);
for ii = 1:numfiles
FileName{ii};
A=[];
entirefile =fullfile(PathName,FileName{ii});
fid = fopen(entirefile);
tline = fgets(fid);
while ischar(tline)
parts = textscan(tline, '%f;');
if numel(parts{1}) > 0
A = [ A ; parts{:}' ];
end
tline = fgets(fid);
end
fclose(fid);
FileData{ii} = A;
end
您可以使用以下代码遍历单元格
for ii = 1:numfiles
A = FileData{ii} ; %// A will be a 755x8 double matrix
%// do something with A
end