Populate matrix with non-zero elements from previous matrix
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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?
0 Commenti
Risposta accettata
Stephen23
il 13 Apr 2018
Modificato: Stephen23
il 13 Apr 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 Commenti
Stephen23
il 13 Apr 2018
Modificato: Stephen23
il 13 Apr 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
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!