找出阵列的〜nan区域的大小和数量

时间:2017-08-04 13:31:41

标签: arrays matlab nan

我有以下情节:

enter image description here

它基于阵列,其中所有彩色区域都是~isnan,白色区域是nan。

我必须找到每个彩色斑点的数量和大小(dx,dy)。有人有一个很好的方法来做到这一点?我的方法看起来像这样:

W_w_dy = nan(size(W_w)) ;
for ii = 1 : length(W_w(1,:)) ; % anzahl spalten
    tmp = W_w(:,ii) ;
    % logical for testing on nan
    find_nan = isnan(tmp) ;
    % indizes with not nan
    ind = find(find_nan==0) ;
    % initillisiere dy
    dy = zeros(length(W_w(:,1)),1) ;
    for jj = 1 : length(ind) ;
        tmp_down = 0 ;
        ind_tmp = ind(jj) ;
        while find_nan(ind_tmp) == 0 ;
            if ind_tmp > length(ind)
                break
            end
            tmp_down = tmp_down + 1 ;
            ind_tmp = ind(jj) + tmp_down ;
        end
        dy(ind(jj)) = tmp_down ;
    end
    clear tmp_down ind_tmp

%     for kk = 2 : length(dy) ;
%         if dy(kk-1) > dy(kk)
%             dy(kk) = 0 ;
%         end
%     end
    W_w_dy(:,ii) = dy ;
    clear dy find_nan tmp ind dy_neu
end

情节所依据的阵列是W_w。我的想法是遍历每一列并获得一个数组,其中每个单元格都写在下面,许多单元格是~isnan。

这也可以为每一行完成。但我真的不知道如何计算eddies并让每个eddie得到一个dx和一个dy。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我现在有问题的解决方案。

find_nan = ~isnan(W_w) ;

stat = regionprops(find_nan,'Centroid','BoundingBox') ;

查找函数regionprops()

以下是Mathworks awnser的链接:

https://de.mathworks.com/matlabcentral/answers/351569-find-size-and-number-of-nan-areas-of-array?s_tid=email_ans_new_ans_ans_h#answer_276804