矩阵 A = [19,20,30; 41,54,65; 72,83,95]
矩阵 B = [2,3; 1,3; 3,3]
输出矩阵 C = [20; 30; 41; 54; 65; 95]
矩阵B
包括应将哪些列转移到输出矩阵C
。例如,B
is1
和的第二行3
。所以从第二行A
; 第一和第三列之间的元素应该转移到输出矩阵C
。
没有for循环,只有矩阵运算,该怎么办?
由于您需要行优先顺序(并且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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句