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日

悬赏问题

  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟
  • ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在
  • ¥15 前端echarts坐标轴问题