Create a matrix on the basis of other matrix
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hi given a vector
SPI= [2 3 4 8 11 13 14 15 16 19 20];
and the array
AA= [1 2 3 4 0 11 15;
0 0 0 8 13 16 0;
0 0 0 0 0 18 0;
0 0 0 0 0 19 0;
0 0 0 0 0 20 0];
I want to create a matrix DD that is AA but with just the element inside SPI. So:
DD = [ 2 3 4 0 11 15;
0 0 8 13 16 0;
0 0 0 0 0 0;
0 0 0 0 19 0;
0 0 0 0 20 0];
may someone help me?
2 Commenti
Walter Roberson
il 14 Ott 2019
I notice that you delete the first column of AA as it is left without any elements from SPI. Why are you not also deleting the all-zero row 3 ? Or if the rule is that the first row has to contain an element from SPI, why are you not deleting the column [0; 13; 0; 0; 0] ? What are the rules?
Risposta accettata
Fabio Freschi
il 14 Ott 2019
Modificato: Fabio Freschi
il 14 Ott 2019
% your data
SPI = [2 3 4 8 11 13 14 15 16 18 19 20];
AA = [1 2 3 4 0 11 14 15;
0 0 0 8 13 16 0 0;
0 0 0 0 0 0 0 0;
0 0 0 0 0 19 0 0;
0 0 0 0 0 20 0 0];
% mask
iMask = ismember(AA,SPI);
% matrix DD with zeros
DD = AA.*iMask;
% now you can filter out the rows and cols of all zeros
DD = DD(:,any(iMask,1)); % cols filter
DD = DD(any(iMask,2),:); % rows filter
6 Commenti
Walter Roberson
il 15 Ott 2019
Fabio's suggested code will eliminate the row 0 0 0 0 0 0;
I do not understand at the moment why that row is being kept in the desired solution.
Fabio Freschi
il 15 Ott 2019
Me neither! but I kept all steps separated to that the OP can pick the parts of his choice
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Resizing and Reshaping Matrices 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!