Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.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
Matlab 查找矩阵中向量元素的列位置_Matlab_Matrix_Indices - Fatal编程技术网

Matlab 查找矩阵中向量元素的列位置

Matlab 查找矩阵中向量元素的列位置,matlab,matrix,indices,Matlab,Matrix,Indices,给定向量如a=[2 5 9]和矩阵如 8 11 5 b = 2 6 1 4 9 3 找到b的哪个列包含a的每个元素的最佳方法是什么?在这个例子中,我想要一个类似于[1 3 2]的输出,因为2在第一列,5在第三列,9在第二列。出于我的目的,可以安全地假设一个数字只能出现在一列中。一种方法- [colID,~] = find(squeeze(any(bsxfun(@eq,b,permute(a,[1 3 2])),1))) 或者,如果您希望避免挤压和任何- [~

给定向量如
a=[2 5 9]
和矩阵如

    8  11  5 
b = 2   6  1
    4   9  3
找到
b
的哪个列包含
a
的每个元素的最佳方法是什么?在这个例子中,我想要一个类似于
[1 3 2]
的输出,因为
2
在第一列,
5
在第三列,
9
在第二列。出于我的目的,可以安全地假设一个数字只能出现在一列中。

一种方法-

[colID,~] = find(squeeze(any(bsxfun(@eq,b,permute(a,[1 3 2])),1)))
或者,如果您希望避免挤压
任何
-

[~,colID,~] = ind2sub([size(b) numel(a)],find(bsxfun(@eq,b(:),a)))

另一种方法是使用
ismember

A = [2 5 9];
B = [8 11 5; 2 6 1; 4 9 3];
[~, ind] = ismember(A,B);
[~, col] = ind2sub(size(B), ind)

col = 

1   3   2
另一种方法:

[~, index] = ismember(a, b);
[row, col] = ind2sub(size(b, 1), index);

我对此有点困惑,为什么期望的输出向量是
permute
函数的参数?@siegel haha我没有将输入输入到它<代码>[1 3 2]
是我正在用
置换
移动的维度。因此,有了它,我告诉它交换dim-2和dim-3,保持dim-1不变。对于
b=magic(4)
a=[5,6,2,1]
,您希望得到什么输出?rayryeng和Divakar都实现了一些不同的功能,您的示例碰巧返回了相同的功能。嗨,Daniel,我希望您发布的示例使用
1,3,2,4
。谢谢你注意到这一点!