在matlab中迭代一个向量

时间:2016-11-06 18:28:28

标签: matlab vector

所以我正在制作一个节目。我需要迭代一个类似于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

1 个答案:

答案 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

当然,您可以通过将值存储在适当的数组中来更改打印。