我有一个矩阵,
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列找到第二行,依此类推。
答案 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