我有一个4-D矩阵。尺寸为经度,纬度,天数,年份为[17,14,122,16]。 我必须找出每个单元格的值超过98百分位数的频率,以便最终输出与17x14的数组一样,包含超过98%阈值的值的出现次数。
我做了一些事情,它为每个细胞提供了一个与98百分位相关的17x14矩阵,但我无法确定出现的频率。
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
包含所有单元格的相同值。这怎么可能?我做错了什么?请帮忙。
答案 0 :(得分:0)
根据定义,高于第98百分位数的值的频率为2%。
我猜你r
的价值是39; 122x16矩阵的前2%中的元素数(即1952个元素)。
r = 0.02*1952;
r =
39.040
您的代码正在验证理论值。也许你在想一个不同的问题?
这是一个模拟示例,使用从0到100的随机生成的(均匀分布)数据(n
)。
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);
% After you do n=squeeze(n), it gives 2-D matrix of 122x16
% dimensions.
n = rand(122,16)*100; % simulation for your 2-D matrix
k=k+1;
q=prctile(n(:),98);
r{k}=nansum(nansum(n>=q));
p{k}=q;
end
end