m0_74573708 2022-12-17 14:14 采纳率: 33.3%
浏览 55
已结题

Matlab对不同连续的同一数字赋值

比如一组数(1 1 0 2 2 0 0 0 2 1 2 2 2 2 1 1 1 2 2 2 0)
对2进行赋值
对于连续出现少于等于两个的2赋值为1
连续出现大于等于三个的2赋值为0
数组变成(1 1 0 1 1 0 0 0 1 1 0 0 0 0 1 1
1 0 0 0 0)
求赐教这个代码怎么写,谢谢🙏

  • 写回答

4条回答 默认 最新

  • ShowMeAI 2022-12-17 14:45
    关注

    详细的代码实现及解释如下,望采纳

    % 定义数组
    arr = [1 1 0 2 2 0 2 1 2 2 2 2 1 1 1 2 2 2 0];
    
    % 对连续的数字进行赋值
    count = 1;
    for i = 2:length(arr)
        if arr(i) == arr(i-1)
            count = count + 1;
        else
            if arr(i-1) == 2
                if count <= 2
                    arr(i-count:i-1) = 1;
                else
                    arr(i-count:i-1) = 0;
                end
            end
            count = 1;
        end
    end
    
    % 对最后一段连续的数字进行赋值
    if arr(end) == 2
        if count <= 2
            arr(end-count+1:end) = 1;
        else
            arr(end-count+1:end) = 0;
        end
    end
    
    % 输出结果
    disp(arr);
    

    代码中,我们使用了一个循环来遍历数组中的每个元素,并使用一个计数器来记录连续的数字数量。如果当前数字和上一个数字相同,那么计数器就加一;如果不同,就对上一段连续的数字进行赋值,并将计数器重置为 1。最后,还要注意最后一段连续的数字,因为最后一段数字在循环中不会被处理。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 12月30日
  • 已采纳回答 12月22日
  • 修改了问题 12月17日
  • 创建了问题 12月17日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?