How to construct a matrix values by its row or column indexes?

13 ビュー (過去 30 日間)
Antonio Trujillo-Ortiz
Antonio Trujillo-Ortiz 2013 年 7 月 9 日
Hi all,
I need your help on this. Suppose we have a 4x3 matrix and we need to construct a metrix with its row and column indexes as follows,
R = 1 1 1; 2 2 2; 3 3 3; 4 4 4
C= 1 2 3; 1 2 3; 1 2 3; 1 2 3
Thx in advance.

回答 (3 件)

Evan
Evan 2013 年 7 月 9 日
編集済み: Evan 2013 年 7 月 9 日
A(sub2ind(size(A),R,C))
Example:
>>A = magic(4);
>>R = [1 1 1; 2 2 2; 3 3 3; 4 4 4];
>>C = [1 2 3; 1 2 3; 1 2 3; 1 2 3];
>>B = A(sub2ind(size(A),R,C))
B =
16 2 3
5 11 10
9 7 6
4 14 15
If you're not talking about a generalized case and just want that particular indexing of any matrix, though, it looks like you just need to trim off part of the matrix:
>>B = A(1:4,1:3);
B =
16 2 3
5 11 10
9 7 6
4 14 15
  2 件のコメント
Antonio Trujillo-Ortiz
Antonio Trujillo-Ortiz 2013 年 7 月 9 日
Hi Evan,
What I need is to get from any matrix, two new ones with its row and column indexes. I mean,
Eg, given
A = [2 5 6;12 7 0;2 9 7;4 17 1 0]
we have 4 rows and 3 columns, and we need to get matrices
R = [1 1 1;2 2 2;3 3 3;4 4 4]
and
C = [1 2 3;1 2 3;1 2 3;1 2 3]
Thx
Evan
Evan 2013 年 7 月 9 日
編集済み: Evan 2013 年 7 月 9 日
Ah, okay. So the row and column indices of every element in your array? I have submitted a new answer below that does this. Note that it looks like your example is for a 3x4 matrix, though, not a 4x3.

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


Evan
Evan 2013 年 7 月 9 日
編集済み: Evan 2013 年 7 月 9 日
[R C] = find(A);

Matt J
Matt J 2013 年 7 月 9 日
[R,C]=ndgrid(1:size(A,1), 1:size(A,2))
  2 件のコメント
Antonio Trujillo-Ortiz
Antonio Trujillo-Ortiz 2013 年 7 月 9 日
Thanks Matt J. Its just what I need.
Matt J
Matt J 2013 年 7 月 9 日
編集済み: Matt J 2013 年 7 月 9 日
Clicking on "Accept this answer" is all the thanks I need ;)

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

カテゴリ

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