小han工 2018-11-25 06:52 采纳率: 0%
浏览 473
已结题

matlab 区域计算问题,求一段 matlab 程序

现有由0和1组成的数组,求一个程序,能自动计算数组中由1组成区域的个数(区域可能可能规则,也可能不规则),每个区域中1的数量以及区域中心位置。比如说以下数组:

 J=zeros(100);
J(50:59,30:39)=1;
J(50:59,70:79)=1;
J(50:59,50:59)=1;
J(70:79,40:49)=1;
  • 写回答

1条回答 默认 最新

  • crf_moonlight 2018-11-25 07:53
    关注
     J = zeros(100);
    J(50:59,30:39)=1;
    J(50:59,70:79)=1;
    J(50:59,50:59)=1;
    J(70:79,40:49)=1;
    
    [rows, columns] = size(J);
    count = 0;
    
    % 找到一个值为1的点的坐标
    [y, x] = find(J==1, 1);
    while ~isempty(y)
        count = count + 1;
        flag = 1;
        ns = 1;
        sy(1) = y;
        sx(1) = x;
        while flag
            nns = 0;
            nsy = [];
            nsx = [];
           % 向周围扩散
           for i = 1:ns
               J(sy(i), sx(i)) = 0;
               % top
               if sy(i) > 1 && J(sy(i)-1, sx(i))==1
                   nns = nns + 1;
                   nsy(nns) = sy(i) - 1;
                   nsx(nns) = sx(i);
               end
              % down
               if sy(i) < rows && J(sy(i)+1, sx(i))==1
                   nns = nns + 1;
                   nsy(nns) = sy(i) + 1;
                   nsx(nns) = sx(i);
               end
              % left
               if sx(i) > 1 && J(sy(i), sx(i)-1)==1
                   nns = nns + 1;
                   nsy(nns) = sy(i);
                   nsx(nns) = sx(i) - 1;
               end
              % right
               if sx(i) < columns && J(sy(i), sx(i)+1)==1
                   nns = nns + 1;
                   nsy(nns) = sy(i);
                   nsx(nns) = sx(i) + 1;
               end
           end
    
           ns = nns;
           sy = nsy;
           sx = nsx;
    
           if ns == 0
               flag = 0;
           end
    
        end
    
        [y, x] = find(J==1, 1);
    end
    
    disp(count);
    
    评论

报告相同问题?

悬赏问题

  • ¥20 蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏