所以我正在制作一个节目。我需要迭代一个类似于sample = [0; 0; 0; 1; 1; 1 ; 0]
的向量。我正在考虑使用带累加器的循环来构建一个新的2d数组,其中第1列显示多少0或1,第2列是哪个标记。但我是matlab语法的新手,检查文档我主要看切片。欢迎任何关于构建新矩阵的想法。
下的样本矢量和输出
arr = [0; 0; 0; 1; 1; 1; 0];
tokenizeSignal(arr)
ans =
3 0
3 1
1 0
答案 0 :(得分:2)
建议的策略(数组仅包含1和0):
初始化2个计数器
count_0 = 0;
count_1 = 0;
遍历整个数组arr
arr = [0; 0; 0; 1; 1; 1; 0];
[n,m] = size(arr); %m is espected equal to 1
y = arr[1,1]; %first element of the array, we need a reference
启动循环并读取当前元素
for i=1:n
x = arr[i,1];
如果最后一个元素为零或一个
,则开始计算最后一组中有多少个零或多少个零 if (x == 0 && y == 0)
count_0 = count_0 + 1;
count_1 = 0;
else if (x == 1 && y == 1)
count_1 = count_1 + 1;
count_0 = 0;
end
每次值改变时打印(“序列”的最后一个字段)
if (x != arr[1,i+1] && count_1 > 0 && i<n)
print(count_1, '1');
else if (x != arr[1,i+1] && count_0 > 0 && i<n)
print(count_0, '0');
end
更新值并关闭FOR循环
y = x;
end
退出周期,最后一次打印
if (count_1 > 0)
print(count_1, '1');
else if (count_0 >)
print(count_0, '0');
end
当然,您可以通过将值存储在适当的数组中来更改打印。