在matlab中迭代向量

在matlab中迭代向量,matlab,vector,Matlab,Vector,所以我在做一个节目。我需要迭代一个类似以下内容的向量sample=[0;0;0;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 建

所以我在做一个节目。我需要迭代一个类似以下内容的向量
sample=[0;0;0;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个计数器

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 (count_1 > 0)
 print(count_1, '1');
else if (count_0 >)
 print(count_0, '0');
end
当然,您可以通过将值存储在适当的数组中来更改打印。

建议的策略(数组仅包含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 (count_1 > 0)
 print(count_1, '1');
else if (count_0 >)
 print(count_0, '0');
end

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

请举例说明您希望看到的输入示例数据的输出。好的,我将更新问题。请举例说明您希望看到的输入示例数据的输出。好的,我将更新问题哇,谢谢你这么全面的回答。这太棒了——它还回答了我的其他问题。@U火星人,不客气!我编辑了一个小错误,如果数组以0开头,则该错误无效。现在所有的代码都应该是正确的。如果出现问题,我会再次更新代码。哇,谢谢你这么全面的回答。这太棒了——它还回答了我的其他问题。@U火星人,不客气!我编辑了一个小错误,如果数组以0开头,则该错误无效。现在所有的代码都应该是正确的。如果出现问题,我将再次更新代码。