【发布时间】:2016-09-07 20:22:20
【问题描述】:
有没有一种向量化的方式来返回矩阵每一行最后K个非零元素的索引?
例如,我的矩阵只包含0和1,每行的最后一列总是1。那么我想找到最后K的索引,其中K>1,每行的非零元素。如果一行只有 M(小于 K)个非零元素,那么该行的索引就是最后 M 个非零元素的索引。例如
A = [0 1 0 1;
1 1 0 1;
1 1 1 1;
0 0 0 1]
而我的 K = 2,那么我期望返回一个这样的矩阵
B = [0 1 0 1;
0 1 0 1;
0 0 1 1;
0 0 0 1]
即B原本是一个与A形状相同的零矩阵,然后它复制A的每一行,其中对应的列从@行的最后K个非零元素的索引开始987654326@(如果A的一行中只有M
【问题讨论】:
-
只是为了确定,对于
A中的任何行r,您想获得find(A(r,1:end-1)>0,1,'last'),但不循环r? -
几乎正确,我想找到最后K个非零元素,其中K是给定参数
-
所以你找
A(r,find(A(r,1:end-1)~=0,K,'last')),B矩阵上的整个部分真的不清楚... -
我同意你的看法。但最终,我想生成一个矩阵 B,这样我就可以将矩阵 B 的每一行用作某个索引集。
标签: matlab vectorization