Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 从矩阵中获取每行的不同列_Arrays_Matlab_Matrix - Fatal编程技术网

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更正。请现在试一试