首页 文章

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

提问于
浏览
3

矩阵 A = [19,20,30; 41,54,65; 72,83,95]

矩阵 B = [2,3; 1,3; 3,3]

输出矩阵 C = [20; 30; 41; 54; 65; 95]

Matrix B 包括应将哪些列传输到输出矩阵 C . 例如, B 的第二行是 13 . 所以从第二排 A ;第1列和第3列之间的元素应转移到输出矩阵 C .

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

1 回答

  • 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);
    

相关问题