如何防止数据被覆盖? MATLAB

时间:2014-06-03 13:30:25

标签: arrays matlab loops

目前我用来上传多个文件并导入数字数据的代码。但是代码会覆盖以前选择的文件,并只提供最终选定文件的数据。这是代码:

[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中的单独单元格中,我该如何处理?提前谢谢了。

1 个答案:

答案 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