在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开头,则该错误无效。现在所有的代码都应该是正确的。如果出现问题,我将再次更新代码。