Extracting rows from a matrix based on values in columns

1 vue (au cours des 30 derniers jours)
Maria445
Maria445 le 8 Oct 2017
Commenté : Maria445 le 8 Oct 2017
Following on from this question
What if I have more than 1 column? That is, I want A to be a 6-by-4 matrix for example, so to have C{1} = 4-by-3 matrix?

Réponse acceptée

Guillaume
Guillaume le 8 Oct 2017
It's much easier to do this with the newer splitapply rather than the older accumarray:
A = [[1;1;3;2;3;1], rand(6, 3)]
C = splitapply(@(rows) {rows}, A(:, 2:end), A(:, 1))
  2 commentaires
Cedric
Cedric le 8 Oct 2017
I am up-voting even though ...
;)
Maria445
Maria445 le 8 Oct 2017
Awesome, thanks!

Connectez-vous pour commenter.

Plus de réponses (1)

Kaushik Lakshminarasimhan
for n=2:4, C_temp(:,n-1) = accumarray(A(:,1),A(:,n),[],@(n){n}); end
for m=1:size(C_temp,1), C{m} = cell2mat(C_temp(m,:)); end

Catégories

En savoir plus sur Creating, Deleting, and Querying Graphics Objects dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by