返回行和列索引的矩阵

时间:2015-12-03 07:01:38

标签: arrays matlab matrix

我确信这个问题必须在其他地方得到解答,但我似乎无法找到答案。

给定矩阵M,返回两个矩阵的最有效/简洁方法是什么,分别包含M元素的行索引和列索引。

E.g。

M = [1 5 ; NaN 2]

我想要

MRow = [1 1; 2 2]
MCol = [1 2; 1 2]

一种方法是做

[MRow, MCol] = find(ones(size(M)))
MRow = reshape(MRow, size(M))
MCol = reshape(MCol, size(M))

但这似乎并不特别简洁也没有效率。

2 个答案:

答案 0 :(得分:3)

这基本上相当于在行和列索引的可能值上构建规则网格。它可以使用meshgrid来实现,这比使用find更有效,因为它避免构建1的矩阵并试图“找到”基本上已知的结果。

M = [1 5 ; NaN 2];

[nRows, nCols] = size(M);
[MCol, MRow] = meshgrid(1:nCols, 1:nRows);

答案 1 :(得分:3)

使用meshgrid

[mcol, mrow] = meshgrid(1:size(M,2),1:size(M,1))