2015-11-05 21 views
2

我正在使用以下代碼使用importdatafor命令讀取多個文件。我有的問題是隻保存最後一個文件。我從importdata得到了一個矩陣,但它應該是6個矩陣保存使用importdata導入的多個文件

如何保存我導入的所有矩陣?

myFolder = 'M:\Matlab\Experiment-Result\read all'; 
filePattern = fullfile(myFolder, '*.dat') 
theFiles = dir(filePattern); 
for k = 1 : length(theFiles) 
    baseFileName = theFiles(k).name; 
    fullFileName = fullfile(myFolder, baseFileName); 
    fprintf(1, 'Now reading %s\n', fullFileName); 
    Data = importdata(fullFileName); 
end 

回答

1

很簡單的原因。 Data在循環的每次迭代中不斷被覆蓋,因此一旦for循環停止,只有從最後一次迭代中讀入的數據纔會被保存。如果你想節省每次迭代的數據,我不知道你的數據是如何組織的,但要使其成爲最適應能力強,使Data單元陣列:

myFolder = 'M:\Matlab\Experiment-Result\read all'; 
filePattern = fullfile(myFolder, '*.dat') 
theFiles = dir(filePattern); 
Data = cell(1,numel(theFiles)); %// Change 
for k = 1 : length(theFiles) 
    baseFileName = theFiles(k).name; 
    fullFileName = fullfile(myFolder, baseFileName); 
    fprintf(1, 'Now reading %s\n', fullFileName); 
    Data{k} = importdata(fullFileName); %// Change 
end 

要訪問第k個數據文件,簡單地做:

out = Data{k}; 

然後可以使用out就好像它是一個矩陣和索引/片到它,但是你認爲合適的方式。

+0

謝謝!當我想從第三個矩陣使用第2行時,我可以如何調用該行? – Ali

+0

@Ali easy。首先得到第三個矩陣,然後訪問第二行:'out = Data {3}; row = out(2,:);' – rayryeng