如何在MATLAB的每一行中找到第一个'1'
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在MATLAB的每一行中找到第一个'1'相关的知识,希望对你有一定的参考价值。
我有一个矩阵,
A = [ 0 0 0 0 0 0 1 1 1 1 0 0; 0 0 0 0 0 1 1 1 1 0 0 0; 0 0 0 0 0 0 1 1 1 1 0 0]
我的问题是,如何在每一行中找到第一个'1'。我想输出将显示如下:
B = [7; 6; 7]
这意味着,对于第一行,在第7列中找到数字1,在第6列中找到第二行,依此类推。
答案
你可以使用max
的第二个输出,它给出了最大值的位置:
v = 1; % desired value
[~, B] = max(A==v, [], 2); % position of maxima along the second dimension
作为奖励,如果可以存在不包含所需值的行,则可以为这些行输出0
,如下所示:
[m, B] = max(A==v, [], 2);
B = B.*m;
另一答案
找到cumulative sum每行的A
并使用find
获取1的行和列下标,然后根据行排序列下标以获得所需的矩阵B
。
[rind,cind] = find(cumsum(A,2)==1);
[~, rind] = unique(rind);
B = cind(rind);
以上是关于如何在MATLAB的每一行中找到第一个'1'的主要内容,如果未能解决你的问题,请参考以下文章