比如一组数(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)
求赐教这个代码怎么写,谢谢🙏
Matlab对不同连续的同一数字赋值
- 写回答
- 好问题 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。最后,还要注意最后一段连续的数字,因为最后一段数字在循环中不会被处理。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报