Populate matrix with non-zero elements from previous matrix

4 vues (au cours des 30 derniers jours)
Tomás Nunes
Tomás Nunes le 13 Avr 2018
Commenté : Stephen23 le 13 Avr 2018
I have a 7567*32 matrix in which every row has 4 non-zero elements and the rest are zeros. I want to create a 7567*4 matrix that is populated only with the non-zero elements from the previous matrix. Is there a way to do so?

Réponse acceptée

Stephen23
Stephen23 le 13 Avr 2018
Modifié(e) : Stephen23 le 13 Avr 2018
I guess you want to keep those non-zero values in the same rows in which case try this, where M is your matrix:
Z = M.';
Z = reshape(Z(Z~=0),4,7567).'
  3 commentaires
Stephen23
Stephen23 le 13 Avr 2018
Modifié(e) : Stephen23 le 13 Avr 2018
Generate the indices from the first matrix, and get the values from the second matrix:
>> X = [0 1 -1 1 0 -1; -1 1 0 0 -1 1; 0 0 1 1 -1 -1]
X =
0 1 -1 1 0 -1
-1 1 0 0 -1 1
0 0 1 1 -1 -1
>> M = [0 0.2 -0.3 0.4 0 -0.5; -0.6 1.3 0 0 0.1 1.5; 0 0 0.9 0.8 -0.1 -0.2]
M =
0.00000 0.20000 -0.30000 0.40000 0.00000 -0.50000
-0.60000 1.30000 0.00000 0.00000 0.10000 1.50000
0.00000 0.00000 0.90000 0.80000 -0.10000 -0.20000
>> Z = M.';
>> Z = reshape(Z(0~=X.'),4,[]).'
Z =
0.20000 -0.30000 0.40000 -0.50000
-0.60000 1.30000 0.10000 1.50000
0.90000 0.80000 -0.10000 -0.20000
Stephen23
Stephen23 le 13 Avr 2018
Tomás Nunes's "Answer" moved here:
Thank you so much, you're the best

Connectez-vous pour commenter.

Plus de réponses (0)

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