Create n matrix from one matrix according to elements of a column?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Sleh Eddine Brika
le 15 Avr 2016
Commenté : Sleh Eddine Brika
le 16 Avr 2016
I have a sorted matrix (according to the element of the third column)
A = [ 4 2 0 ;3 7 0 ; 8 9 3 ; 7 5 3; 4 4 3]
I want to get n matrix (in this case 2) from A, according to the value of the element of the third column, to get
M1 = [ 4 2 0 ; 3 7 0]
M2 = [8 9 3 ; 7 5 3; 4 4 3].
I know how many matrix I will have and the different elements to study using the function 'unique' that provide me a matrix (for this case) B=[0;3].
I tried with the functions 'genvarname' and 'eval' but I didn't find a good solution.
0 commentaires
Réponse acceptée
Andrei Bobrov
le 15 Avr 2016
Modifié(e) : Andrei Bobrov
le 15 Avr 2016
[~,~,c] = unique(A(:,end));
M = accumarray(c,(1:size(A,1))',[],@(x){A(x,:)});
2 commentaires
Plus de réponses (1)
Azzi Abdelmalek
le 15 Avr 2016
A = [ 4 2 0 ;3 7 0 ; 8 9 3 ; 7 5 3; 4 4 3]
[ii,jj,kk]=unique(A(:,3))
out=accumarray(kk,1,[],@(x) {A(x,:)})
% the first matrix and the second are
out{1}
out{2}
It's not a good idea to generate multiple names http://matlab.wikia.com/wiki/FAQ#How_can_I_create_variables_A1.2C_A2.2C....2CA10_in_a_loop.3F
3 commentaires
Azzi Abdelmalek
le 15 Avr 2016
@Sleh Eddine, it's easier to call your matrices with one variable and indices: out{1}, out{2},... then using multiple variables!
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements 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!