Поэлементная репликация массива в Matlab

Скажем, у меня есть одномерный массив:

a = [1, 2, 3];

Есть ли встроенная функция Matlab, которая берет массив и целое число n и копирует каждый элемент массива n времена?

Например, вызов replicate(a, 3) должен возвратиться [1,1,1,2,2,2,3,3,3].

Обратите внимание, что это нисколько не то же как repmat. Я могу, конечно, реализовать replicate путем выполнения repmat на каждом элементе и конкатенации результата, но я задаюсь вопросом, существует ли созданный в функции, которая более эффективна.

18
задан Amro 6 December 2014 в 17:33
поделиться

2 ответа

a = [1 2 3];
N = 3;

b = reshape(repmat(a,N,1), 1, [])
.
20
ответ дан 30 November 2019 в 05:57
поделиться

Я поклонник функции KRON:

>> a = 1:3;
>> N = 3;
>> b = kron(a,ones(1,N))

b =

    1     1     1     2     2     2     3     3     3

Вы можете также посмотреть на этот связанный с этим вопрос (который касался репликации элементов двухмерных матриц), чтобы увидеть некоторые другие решения, связанные с матричным индексированием. Вот одно такое решение (вдохновленное ответом Edric):

>> b = a(ceil((1:N*numel(a))/N))

b =

    1     1     1     2     2     2     3     3     3
21
ответ дан 30 November 2019 в 05:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: