我有一个类似于这个的矩阵M:
M = [ 1, 2, 3, 0, 0;
1, 2, 0, 0, 0;
2, 3, 4, 5, 0;
4, 5, 6, 0, 0;
1, 2, 3, 4, 5;
]
我正在尝试使用A中每行的最右边非零值来获取列向量,但仅适用于具有第一列== 1的行.
我能够为行计算过滤器:
r = M( :, 1 ) == 1;
> r = [ 1; 1; 0; 0; 1 ]
我有一组索引“M中每行的最右边的非零值”:
> c = [ 3, 2, 4, 3, 5 ]
如何在A的切片中组合这些以获得我正在寻找的东西?我正在寻找类似的东西:
A( r, c )
> ans = [ 3; 2; 5 ]
但出于某种原因,这样做会让我得到3×3矩阵.
最佳答案 我能想到的最短路径如下:
% Get the values of the last non-zero entry per row
v = M(sub2ind(size(M), 1:size(M,1), c))
% Filter out the rows that does not begin with 1.
v(r == 1)