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

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日