Arrays 从矩阵中获取每行的不同列
矩阵Arrays 从矩阵中获取每行的不同列,arrays,matlab,matrix,Arrays,Matlab,Matrix,矩阵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的第二行是1和3。因此,从第二行A;第1列和第3列之间的元素应传输到输出矩阵C 如果没有for循环,只有矩阵运算,我怎么能做到这一点呢?既然你愿意(而且Matlab是按列的主要顺序工作的),首先转置A。然后构建一个逻辑掩码,用作a转置的索引: At = A.'; %' mask = (bsxfun(@
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
的第二行是1
和3
。因此,从第二行A
;第1列和第3列之间的元素应传输到输出矩阵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);
谢谢你,路易斯。它适用于正方形矩阵。但在我的实际研究中,A不是一个方阵。所以它返回“输入必须具有相同的大小。”错误。@oarar更正。请现在试一试