[英]Find frequency of elements above a threshold for each cell in MATLAB
我有一個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
對於所有單元格都包含相同的值。 這怎么可能? 我在做什么錯呢? 請幫忙。
根據定義,高於第98個百分點的值的頻率為2%。
我猜想你得到的r
39。 122x16矩陣頂部2%的元素數量(即1952個元素)。
r = 0.02*1952;
r =
39.040
您的代碼正在驗證理論值。 也許您在想一個不同的問題?
這是一個模擬示例,對數據( n
)使用從0到100的隨機生成(均勻分布)。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.