MATLAB Answers

creating a data array from a matrix

54 views (last 30 days)
Damith
Damith on 30 May 2014
Commented: Damith on 31 May 2014
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,

  0 Comments

Sign in to comment.

Accepted Answer

Geoff Hayes
Geoff Hayes on 30 May 2014
Edited: Geoff Hayes on 30 May 2014
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 Comment

Damith
Damith on 30 May 2014
Thanks a lot. It worked.

Sign in to comment.

More Answers (1)

Udit Gupta
Udit Gupta on 30 May 2014
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 Comments

Damith
Damith on 31 May 2014
Great! Both works. Thanks guys.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!