У меня есть матрица с двумя столбцами, которая описывает часть данных и количество раз, когда эти данные встречаются в наборе:
A = [1 6
2 2
3 8
4 1
5 3];
Учитывая это, существует ли «элегантный» способ создания базового набора данных? т.е.
B = [1 1 1 1 1 1 2 2 3 3 3 3 3 3 3 3 4 5 5 5];
Существует множество способов перейти с B
на A
(tabulate
, используя < a href = "https://stackoverflow.com/questions/5385651/determining-the-number-of-occurrences-of-each-unique-element-in-a-vector"> unique
и histc
и т. д. ), но я не мог найти способ перейти с A
на B
. Лучшее, что я мог сделать, не элегантно:
B = [];
for ii = 1:size(A,1)
B = [B repmat(A(ii,1), 1, A(ii,2))];
end
У меня есть скрытое подозрение, что «правильный» способ сделать это - использовать bsxfun
или accumarray
, но у меня недостаточно опыта, чтобы понять, как они действительно работают.