Effacer les filtres
Effacer les filtres

creating a data array from a matrix

7 vues (au cours des 30 derniers jours)
Damith
Damith le 30 Mai 2014
Commenté : Damith le 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,

Réponse acceptée

Geoff Hayes
Geoff Hayes le 30 Mai 2014
Modifié(e) : Geoff Hayes le 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
  1 commentaire
Damith
Damith le 30 Mai 2014
Thanks a lot. It worked.

Connectez-vous pour commenter.

Plus de réponses (1)

Udit Gupta
Udit Gupta le 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 commentaires
Geoff Hayes
Geoff Hayes le 30 Mai 2014
That's neat!
Damith
Damith le 31 Mai 2014
Great! Both works. Thanks guys.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by