簡體   English   中英

索引超過矩陣尺寸錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM