creating a data array from a matrix
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Damith
am 30 Mai 2014
Kommentiert: Damith
am 31 Mai 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 Kommentare
Akzeptierte Antwort
Geoff Hayes
am 30 Mai 2014
Bearbeitet: Geoff Hayes
am 30 Mai 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
Weitere Antworten (1)
Udit Gupta
am 30 Mai 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 Kommentare
Siehe auch
Kategorien
Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!