До тех пор, пока я понял накопитель, это означает «Создание n-й строки вывода: 1) найти n в подпункте 2), если n находится в m1, m2, m3-й элемент в sub, 3) применяют функцию к m1, m2, m3-й элемент val 4), то есть n-я строка вывода «Накопитель MatLab неожиданно меняет порядок
Я где-то не прав?
Я использовал следующий код.
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}
А =
2 10 13
1 11 14
1 12 10
U =
1
2
ие =
3
1
IU =
2
1
1
Vals =
10
13
11
14
12
10
подлодки =
2
2
1
1
1
1
r2 =
[1x4 double]
[1x2 double]
ANS =
12 11 14 10
ANS =
13 10
=========================
Но я ожидал r{1} = 11 14 12 10
и r{2} = 10 13
.
Почему заказчик неожиданно изменил порядок?
Как я могу получить ожидаемый результат?
где сортируют предназначается в [линейной индексации ] (http://www.mathworks.com/help/matlab/math/matrix-indexing.html # f1-85511), если у вас есть несколько столбцов 'subs'. Подробнее см. [Этот вопрос] (http://stackoverflow.com/questions/17536558/) Я недавно спросил. – Oleg
@Mohsen_Nosratinia Спасибо! Это работает. Я буду голосовать за ваш ответ, как только я получу достаточную репутацию. – user1849133
@ user2604484 Что вы должны сделать, так это _accept_ ответ –