如何在MATLAB的每一行中找到第一个'1'

时间:2017-11-07 21:14:34

标签: matlab matrix find

我有一个矩阵,

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列找到第二行,依此类推。

2 个答案:

答案 0 :(得分:7)

您可以使用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;

答案 1 :(得分:4)

查找A每行的cumulative sum并使用find获取1的行和列下标,然后根据行对列下标进行排序以获得所需的矩阵{{ 1}}。

B