[英]Index Exceeds Matrix Dimensions Error
我目前正在創建海拔高度直方圖,在該直方圖中會發生某種類型的大氣不穩定性。 具體來說,就是當我們所稱的值N ^ 2小於零時。 這就是問題所在。我正在嘗試將發生頻率與海拔高度作圖。
load /data/matlabst/DavidBloom/N_square_Ri_number_2005.mat
N_square(N_square > 0) = 0;
N_square = abs(N_square);
k = (1:87);
H = 7.5;
p0 = 101325;
nbins = (500);
N_square(N_square==0)=[];
Alt = zeros(1,578594);
PresNew = squeeze(N_square(:,:,k,:));
for lati = 1:32
for long = 1:64
for t = 1:1460
for k = 1:87
Alt(1,:) = -log((PresNew)/p0)*H;
end
end
end
end
所以,讓我解釋一下我在做什么。 我正在加載具有所有這些不同變量的文件。 鏈接到圖像這顯示了它顯示的不同變量。 接下來,我將使用4-D矩陣N_square並將所有大於零的值過濾為等於0。然后,將剩余的負值的絕對值作為絕對值。 然后,我定義幾個變量並繼續進行下一個過濾。
(N_square(N_square==0)=[];
這個目標的目的是只丟棄所有N_square的值為0的值。我認為這是問題開始的地方。 跳到for循環,然后使用N_square的第3維並將壓力轉換為高度。
我擔心的是,當我運行此代碼時,PresNew = squeeze(N_square(:,:,k,:)); 給我錯誤。
Error in PlottingN_2 (line 10) PresNew = squeeze(N_square(:,:,k,:));
而且我不知道為什么。
關於如何避免這種災難並使我的代碼更簡單的任何想法或建議? 謝謝。
當您從多維數組中刪除隨機元素時,它們會被刪除, 但是它不再是有效的多維數組,因為它上面有孔。 因此,MATLAB會將結果折疊為向量,並且您無法像嘗試的那樣索引向量的第三維。
data = magic(3);
% 8 1 6
% 3 5 7
% 4 9 2
% Remove all values < 2
data(data < 2) = []
% 8 3 4 5 9 6 7 2
data(2,3)
% Index exceeds matrix dimensions.
解決方案是在索引編制后(即在循環內)刪除0
值。
Alt = zeros(1,578594);
for lati = 1:32
for long = 1:64
for t = 1:1460
for k = 1:87
% Index into 4D matrix
PresNew = N_square(:,:,k,:);
% NOW remove the 0 values
PresNew(PresNew == 0) = [];
Alt(1,:) = -log((PresNew)/p0)*H;
end
end
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.