簡體   English   中英

查找MATLAB中每個單元的閾值以上元素的頻率

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

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