Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 计数以零分隔的回合数_Matlab_Count_Zero - Fatal编程技术网

Matlab 计数以零分隔的回合数

Matlab 计数以零分隔的回合数,matlab,count,zero,Matlab,Count,Zero,我有一个像这样的向量: A = [1 2 1 1 1 4 5 0 0 1 2 0 2 3 2 2 2 0 0 0 0 33] 我想计算它包含多少组非零元素并保存它们 所以我想隔离: [1 2 1 4 5] [12] [2 3 2] [33] 然后计算组数(应为4):) 你能帮我吗 感谢统计您的群组,一种快速矢量化方法是: 这假设A是一个行向量,如示例中所示。这适用于无零、全零、空向量和我尝试过的其他几个测试用例 要获得自己的值组,可以使用变体: 在您的情况下,将len替换为 finish =

我有一个像这样的向量:

A = [1 2 1 1 1 4 5 0 0 1 2 0 2 3 2 2 2 0 0 0 0 33]
我想计算它包含多少组非零元素并保存它们

所以我想隔离:

[1 2 1 4 5]

[12]

[2 3 2]

[33]

然后计算组数(应为4):)

你能帮我吗


感谢

统计您的群组,一种快速矢量化方法是:

这假设
A
是一个行向量,如示例中所示。这适用于无零、全零、空向量和我尝试过的其他几个测试用例

要获得自己的值组,可以使用变体:

在您的情况下,将
len
替换为

finish = find([d -a0(end)]==-1) % Last index of each group
start
len
finish
length
应该与
count
的值相同,因此如果需要进行拆分,您可以使用该值。然后可以使用
start
len
(或
finish
)将组存储在单元格数组、结构或其他不规则数组中。例如:

count = length(start);
B = cell(count,1);
for i = 1:count
    B{i} = A(start(i):finish(i));
end

谢谢还有没有一种快速分割它们的方法?我的实向量包含多达10000个元素…好的,我会看一看,最后问一个单独的问题,谢谢!ps是的,这个计算在for循环中…@gabboshow:我知道你也问过关于分组的问题,所以我编辑了我的答案来添加这一部分。@gabboshow:太好了。很抱歉对这个问题最初的误解。这里的事情发展得太快了。
finish = find([d -a0(end)]==-1) % Last index of each group
count = length(start);
B = cell(count,1);
for i = 1:count
    B{i} = A(start(i):finish(i));
end