我有以下情节:
它基于阵列,其中所有彩色区域都是~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。
感谢您的帮助。
答案 0 :(得分:1)
我现在有问题的解决方案。
find_nan = ~isnan(W_w) ;
stat = regionprops(find_nan,'Centroid','BoundingBox') ;
查找函数regionprops()
以下是Mathworks awnser的链接: