矩阵 A = [19,20,30; 41,54,65; 72,83,95]
A = [19,20,30; 41,54,65; 72,83,95]
矩阵 B = [2,3; 1,3; 3,3]
B = [2,3; 1,3; 3,3]
输出矩阵 C = [20; 30; 41; 54; 65; 95]
C = [20; 30; 41; 54; 65; 95]
Matrix B 包括应将哪些列传输到输出矩阵 C . 例如, B 的第二行是 1 和 3 . 所以从第二排 A ;第1列和第3列之间的元素应转移到输出矩阵 C .
B
C
1
3
A
没有for循环,只有矩阵运算,我该怎么做?
由于您需要row-major order(并且Matlab按列主要顺序工作),请首先转置 A . 然后构建一个逻辑掩码,用作 A 转置的索引:
At = A.'; %' mask = (bsxfun(@ge, (1:size(At,1)), B(:,1)) & bsxfun(@le, 1:size(At,1), B(:,2))).'; %' result = At(mask);
1 回答
由于您需要row-major order(并且Matlab按列主要顺序工作),请首先转置
A
. 然后构建一个逻辑掩码,用作A
转置的索引: