2016-07-22 178 views
-3

我有大約2400個文件(其中一些是tsv,另一些是.txt)。我被告知他們是72x144(但我沒有檢查全部)。當我運行此腳本:下標分配尺寸不匹配3

load area.mat %Area Calculation % 

%area= transpose(area); 

area= repmat(area,1,144); % replicating the vector area 144 times 

files= dir('200*'); % loading files of June 
for m=1:length(files) 
June(:,:,m)= dlmread(files(m).name); % loading files in a 3 dimensional %matrix 
end 


June(June<0)= NaN; % replacing outliers by Not a Number NaN 
outliers = isnan(June); % detect NaNs 

t= 1:numel(June); % creating a variable t which take values from 1 to number %of elements of matrix June 

June(outliers) = interp1(t(~outliers), June(~outliers), t(outliers),'nearest'); % interpolating NaNs by nearest values 
z= mean(June,3); % obtaining a matrix June that consists of averages of same cells 

June_temp= z.*area; % weighing temperatures by fractions of areas ??????? 
June_AvgTemp= sum(June_temp(:)); 
fprintf('The average temperature of June is %0.4f Kelvins, %0.4f degrees Celsius\n',June_AvgTemp,June_AvgTemp-273.15) 

我得到的錯誤:

下標的轉讓尺寸不匹配。

near_F_script(第16行)的錯誤 June(:,:,m)= dlmread(files(m).name);在三維矩陣中加載文件的百分比

我真的很感謝你的幫助!謝謝

+1

你有一個不是72 x 144的文件。 – Suever

+0

謝謝你的回答。我認爲這一定是問題,因爲當我的循環達到m = 969時,它給了我那個錯誤信息。我不認爲這將是唯一的文件,因爲我有大約12000個文件,而且只有一年。我將獲得更多文件,因爲我需要10年的文件。那麼是否有方法可以在該循環中插入另一個腳本,以便每當一個文件不具有72x144尺寸時,它會插入缺失值?同時我怎麼才能得到有問題的文件的名稱?在這種情況下,相應的m是969.謝謝你幫助我! –

+0

我只是在運行腳本之前調用'dbstop if error',然後它會將調試提示放置在發生錯誤的位置,您可以調查哪個文件導致問題,以及爲什麼 – Suever

回答

-1

這個問題是由於我使用72x144的.TVS文件和1x10368作爲我的數據集的.txt文件。我只是將相同的數據轉換爲.txt文件,然後我將6月的循環結果重新設置爲72x144,並且一切正常。無論如何,謝謝你的幫助!