Use a vector as an index

16 ビュー (過去 30 日間)
Michael B.
Michael B. 2014 年 11 月 5 日
コメント済み: Michael B. 2014 年 11 月 6 日
I have a matrix of variable dimension and would like to access it with an index stored in a variable, something like this:
matrix = [1, 2; 3, 4; 5, 6]
idx = [3, 1]
elem = matrix(idx) % should result in access to element (3, 1) => 5
Of course, this does not work and will instead get element numbers 3 and 1 (which have values 3 and 1 in that case).
I know sub2ind, but that does not help either, since the number of dimensions is variable. Is there a built-in solution for my problem or will I have to write an access method by myself? (It's not too difficult, but a built-in solution would be preferable.)
  1 件のコメント
Mikhail
Mikhail 2014 年 11 月 5 日
Yeah, I don't know simple solution too.

サインインしてコメントする。

採用された回答

Guillaume
Guillaume 2014 年 11 月 5 日
You can use cell expansion to comma separated list to index your matrix. So first convert your index matrix into a cell array, then convert the cell array into a list:
c = num2cell(idx);
matrix(c{:}); %expand c into comma separated list
  5 件のコメント
Guillaume
Guillaume 2014 年 11 月 5 日
I agree. Unfortunately, the way matlab is designed prevents any simpler method.
Saying that, you can always write your own helper function based on this:
function v = matindex(matrix, vecidx)
%MATINDEX use vector vecidx as an nD index intro matrix to return value v
cidx = num2cell(vecidx);
v = matrix(cidx{:});
end
Michael B.
Michael B. 2014 年 11 月 6 日
And that's exactly why I wonder even more about the lack of a built-in way to do it - it would be so simple.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by