从矩阵中获取每行的不同列

时间:2015-05-18 20:26:21

标签: 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的第二行是13。所以来自A的第二行;第1列和第3列之间的元素应转移到输出矩阵C

没有for循环,只有矩阵运算,我该怎么做?

1 个答案:

答案 0 :(得分:3)

由于您需要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);