【发布时间】:2014-11-28 08:53:32
【问题描述】:
我有一个 4-D 矩阵。维度是经度、纬度、天、年,如 [17,14,122,16]。 我必须找出每个单元格的值高于 98% 的频率,以便最终输出以 17x14 数组的形式出现,其中包含高于 98% 阈值的值的出现次数。
我做了一些事情,它为我提供了一个 17x14 的矩阵,该矩阵包含与每个单元格的 98 个百分位数相关的值,但我无法确定出现的频率。
k=0;
p=cell(1,238);
r=cell(1,238);
for i=1:17
for j=1:14
n=m(i,j,[1:122],[1:16]);
n=squeeze(n);
k=k+1;
q=prctile(n(:),98);
r{k}=nansum(nansum(n>=q));
p{k}=q;
end
end
此代码给出矩阵p 很好,但矩阵r 包含所有单元格的相同值。这怎么可能?我做错了什么?请帮忙。
【问题讨论】:
-
您是否可以切换到二维矩阵,因为您的所有数据都是数字的?然后第一列是经度,第二列是纬度,依此类推。对这个矩阵的操作会更容易理解。您能否提供一个最小的代码示例来返回您的 4D 数组的示例?
-
执行 n=squeeze(n) 后,它会给出 122x16 维度的二维矩阵。
标签: matlab matrix distribution frequency