2016-07-22 8 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) 

を私はエラーを取得します。

エラー:almost_F_script(line 16) June(:、:m)= dlmread(files(m).name); %3次元マトリックスにファイルをロードする

私は本当にあなたの助けに感謝します!ありがとうございました

+1

72 x 144以外のファイルがあります。 – Suever

+0

ありがとうございます。私はループがm = 969になったときにエラーメッセージを表示するので、問題であるはずです。私は約12000のファイルを持っており、それは1年間しかないので、それが唯一のファイルになるとは思わない。私は10年のファイルが必要なので、私はより多くのファイルを取得します。そのループの中に別のスクリプトを挿入する方法があるので、72x144次元を持たないファイルの場合は、欠損値を補間するでしょうか?一方、問題を抱えているファイルの名前を取得するにはどうすればよいですか?この場合、対応するmは969です。私を助けてくれてありがとう! –

+0

スクリプトを実行する前に 'dbstop if error'を呼び出すだけで、エラーが発生した場所でデバッグプロンプトが正しく表示され、問題の原因となっているファイルと原因を調べることができます – Suever

答えて

-1

問題は、私が72x144の.TVSファイルと1x10368の.txtファイルを私のデータセットとして使用していたためです。私はちょうど.txtファイルと同じデータを変換した後、72x144に6月のループの結果を再構成し、すべて正常に機能しました。とにかく助けてくれてありがとう!