Прежде всего мне очень сложно описать проблему действительно хорошо, но я попробую.Группировка строк матрицы в терминах одного столбца
Говорят, что у нас есть матрице А
A = [23 1;
45 1
78 1
86 1
98 2
1 2
23 2
14 3
15 4
85 4]
То, что я хочу, как выход
B{1} = [23,45,78,86]
B{2} = [98,1,23]
B{3} = [14]
B{4} = [15,85]
Имейте в виду, что оригинал А огромная матрица, и я не хочу это сделать с петлями. Я хотел бы использовать функции, которые используют параллельную обработку.
это блестящий ти. – bop
привет, что делать, если вы не можете использовать параметр № 2, потому что есть одна отсутствующая запись, но вы хотите скопировать все столбцы в A, а не только в первую, так что не можете использовать накопитель? – Austin
@ Jake: вы можете определенно использовать 'accumarray':' B = accumarray (A (:, 2), (1: size (A, 1)) ', [], @ (x) {A (x, :) }, {}); '. Трюк состоит в том, чтобы передать индексный вектор в накопитель. – Jonas