Effacer les filtres
Effacer les filtres

Create n matrix from one matrix according to elements of a column?

1 vue (au cours des 30 derniers jours)
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.

Réponse acceptée

Andrei Bobrov
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
Sleh Eddine Brika
Sleh Eddine Brika le 15 Avr 2016
It's so wonderful thank you !A really interesting command, but I really need to get separated Matrix and do you know how to dynamically generate matrix name
Andrei Bobrov
Andrei Bobrov le 15 Avr 2016
I am corrected. Thank you Azzi

Connectez-vous pour commenter.

Plus de réponses (1)

Azzi Abdelmalek
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}
  3 commentaires
Azzi Abdelmalek
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!
Sleh Eddine Brika
Sleh Eddine Brika le 16 Avr 2016
Ok, I will do it like you said ,thank you very much for your help Mr Azzi

Connectez-vous pour commenter.

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!

Translated by