creating a data array from a matrix

3 次查看(过去 30 天)
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 个)

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);

类别

Help CenterFile Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by