gpt4 book ai didi

matlab - 如何计算矩阵列中值的运行长度?

转载 作者:行者123 更新时间:2023-12-04 04:45:25 25 4
gpt4 key购买 nike

我有一个由列向量组成的矩阵,其值可以为 0 或 1。我希望实现的是拥有某种形式的自动化过程,以创建一个简洁的结构来显示结果。也就是说,该过程将创建结果向量 v1、v2、v3、v4、v5,它们对应于每个列变量的每个序列中连续 1 的数量。

例如 d=

 0 1 1 1 1 
1 1 0 0 0
1 1 1 0 1
0 0 0 0 0
1 1 0 1 1

我们得到
v1=[2,1]
v2=[3,1]
v3=[1,1]
v4=[1,1]
v5=[1,1,1]

最佳答案

这在没有循环的情况下工作。

代码应该是不言自明的,否则问我。结果变量是一个元胞数组,因为结果对于 d 的每一列都有不同的大小.

nrows = size(d,1);
d_neg_cell = num2cell(~d,[nrows 1]);
zeros_d = cellfun(@find, d_neg_cell, 'UniformOutput', 0);
find_runs = @(v) nonzeros( diff([0; v; nrows+1])-1 ).';
sol = cellfun(find_runs, zeros_d, 'UniformOutput', 0);

为您 d矩阵这给出:
>> sol{:}
ans =
2 1
ans =
3 1
ans =
1 1
ans =
1 1
ans =
1 1 1

关于matlab - 如何计算矩阵列中值的运行长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18282458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com