creating a data array from a matrix

3 ビュー (過去 30 日間)
Damith
Damith 2014 年 5 月 30 日
コメント済み: Damith 2014 年 5 月 31 日
Hi,
I have matrix1 of 39 x 39. I need to create X and Y arrays by reading elements from rows and columns of matrix1 in a certain way.
X Y
(2,1) (1,2)
(3,1) (1,3)
(4,1) (1,4)
..
(39,1) (1,39)
(3,2) (2,3)
(4,2) (2,4)
..
(39,2) (2,39)
(4,3) (3,4)
..
(39,3) (3,39)
..
(39,38) (38,39)
How can I implement in MATLAB? Can somebody help me.
Thanks in advance,

採用された回答

Geoff Hayes
Geoff Hayes 2014 年 5 月 30 日
編集済み: Geoff Hayes 2014 年 5 月 30 日
Hi Damith - I'd go with a double for loop, pre-allocating memory for the X and Y vectors:
[m,n] = size(matrix1); % where matrix1 is the 39x39 matrix
numElems = (m-1)*m/2; % since ignoring elements on matrix diagonal
X = zeros(numElems,1);
Y = X;
at = 1;
for i=1:m
for j=i+1:m % since not interested in i==j
X(at) = matrix1(j,i);
Y(at) = matrix1(i,j);
at = at + 1;
end
end
  1 件のコメント
Damith
Damith 2014 年 5 月 30 日
Thanks a lot. It worked.

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

その他の回答 (1 件)

Udit Gupta
Udit Gupta 2014 年 5 月 30 日
This is simple if you use matlab lower triangle functions. See the example code below please.
A = magic(39) % Your Martix
mask = tril(true(39),-1);
X = A(mask);
B = A';
Y = B(mask);
  2 件のコメント
Geoff Hayes
Geoff Hayes 2014 年 5 月 30 日
That's neat!
Damith
Damith 2014 年 5 月 31 日
Great! Both works. Thanks guys.

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

カテゴリ

Help Center および File ExchangeResizing and Reshaping Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by