【发布时间】:2016-06-09 19:29:46
【问题描述】:
我目前正在创建一个高度直方图,在该直方图上会发生某种大气不稳定性。具体来说,就是当我们所说的 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
所以,让我解释一下我在做什么。我正在加载一个包含所有这些不同变量的文件。 Link To Image 这显示了它显示的不同变量。接下来,我采用 4-D 矩阵 N_square 并将所有大于零的值过滤为等于 0。然后我采用剩余负值的绝对值。然后我定义了几个变量并继续进行下一个过滤。
(N_square(N_square==0)=[];
这个目标是放弃 N_square 的所有值为 0 的值。我认为这就是问题的开始。跳到 for 循环,然后我采用 N_square 的第三维并将压力转换为高度。
我担心的是,当我运行它时, PresNew = squeeze(N_square(:,:,k,:));给了我错误。
Error in PlottingN_2 (line 10)
PresNew = squeeze(N_square(:,:,k,:));
我也不知道为什么。
关于如何避免这场灾难并使我的代码更简单,有什么想法或建议吗?谢谢。
【问题讨论】:
-
当您使用
N_square(N_square == 0)) = []删除随机点的元素时,这使得它不再是一个 4D 矩阵而是一个列向量,因此您无法使用k索引第三个维度。
标签: matlab