2014-06-05 18 views
0

我使用的是從多個文件導入數據,並將它們保存到單元陣列的代碼,代碼如下:如何使用循環創建的數組? Matlab的

[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; 

    A = FileData{ii}; 
    X = A(:,1); 
    Y = A(:,5); 
    DataToUse = [X,Y]; 
end 

現在我的問題是我想使用由創建的第一個DataToUse循環,這將是從第一個文件,第一個數據到其他文件的數據,但我不能分開它。我試過DataToUse(1),DataToUse(1,1)DataToUse(:,[1,2]),但沒有一個適合我。數據類型的一個例子是:

DataToUse =

0.0762 0.0271 
0.0763 0.2671 
0.0764 0.4079 
0.0765 0.0510 
0.0766 0.0087 
0.0767 0.0099 
0.0768 0.0067 
0.0769 0.0047 
0.0770 0.0047 
0.0771 0.0349 
0.0772 0.2094 
0.0773 0.2740 
0.0774 0.0294 
0.0775 0.0100 
0.0776 0.0159 

我因有這種數據的不同數量的多少文件被選中,但我想只用前開始和稍後再使用其他人。任何人都知道我該如何去做這件事?提前感謝

回答

0

的解決方案是使用電池陣列,像這樣:

firstLoopXY = DataToUse{1} 

享受:

DataToUse{ii} = [X, Y] 

以獲得所需的輸出後,您的for循環把這個!

+0

謝謝!工作幾乎完美,但由於某種原因,它給了我兩次信息。任何想法如何制止這一點? – user3580436

+0

它實際上爲我提供的數據數量與上載和導入數據所用的文件數量相同。也許與'DataToUse {ii}'有關? – user3580436

+1

你是否一般對編程新手?如果你是新手,那我完全沒問題,我只是問,因爲如果你是新手,我想要更加精確。瞭解for循環的工作原理非常重要:對於範圍[1,numfiles]中的每個整數,循環內的每個語句都會執行一次。因此,如果您在for循環中放置'firstLoopXY = DataToUse {1}',則它將針對每個文件執行一次,如您所述。如果你把它放在for循環底部的'end'之後,它只會執行一次。順便說一句,如果你在循環中放入了'DataToUse {ii}',它會每次顯示**這個**文件數據。 –