Tant que j'ai compris accumarray, cela signifie "Faire la nième ligne de la sortie: 1) trouver n dans le sous 2) si n est en m1, m2, m3 ème élément en sous, 3) appliquer la fonction à m1, m2, m3 e élément de val 4) qui est la nième ligne de la sortie "MatLab accumarray changeant de façon inattendue commande
Ai-je tort quelque part?
J'ai exécuté le code suivant.
A = [2 10 13 ; 1 11 14; 1 12 10]
[U,ix,iu]= unique(A(:,1))
vals = reshape(A(:, 2:end).', [], 1)
subs = reshape(iu(:, ones(size(A, 2)-1,1)).', [], 1)
r2 = accumarray(subs, vals', [], @(x){x'})
r2{1}
r2{2}
A =
2 10 13
1 11 14
1 12 10
U =
1
2
ix =
3
1
iu =
2
1
1
vals =
10
13
11
14
12
10
subs =
2
2
1
1
1
1
r2 =
[1x4 double]
[1x2 double]
ans =
12 11 14 10
ans =
13 10
=========================
Mais je me attendais r{1} = 11 14 12 10
et r{2} = 10 13
.
Pourquoi accumarray a soudainement changé la commande?
Comment puis-je obtenir le résultat attendu?
Où sorted on entend dans la [indexation linéaire ] (http://www.mathworks.com/help/matlab/math/matrix-indexing.html # f1-85511) détecter si vous avez plusieurs sous-colonnes. Pour plus de détails voir [cette question] (http://stackoverflow.com/questions/17536558/) J'ai récemment demandé. – Oleg
@Mohsen_Nosratinia Merci! Cela marche. Je voterai pour votre réponse une fois que j'aurai atteint une réputation suffisante. – user1849133
@ user2604484 Ce que vous devez faire est de _accepter_ la réponse –