Как сгенерировать вектор повторяющихся элементов для заданной длины - PullRequest
0 голосов
/ 07 декабря 2018

Для данной длины, T, я бы хотел, чтобы упорядоченная последовательность повторялась до тех пор, пока она не достигнет T.Упорядоченная последовательность: v = (1:12)'.

If T = 12, the output vector should be v

If T = 13, the output vector should be v and in addition the first element of v, thus [v; v(1)]

If T = 15, the output vector should be [v; v(1); v(2); v(3)]

If T = 24, the output vector should be [v; v]

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Вы можете использовать индексирование вместе с оператором по модулю, чтобы решить эту проблему.Единственное осложнение - индексация на основе MATLAB 1.Мы генерируем индексы 1:T, затем используем mod, чтобы обернуть их вокруг.Из-за индексации на основе 1 нам необходимо вычесть 1 из индексов перед применением mod, а затем снова добавить 1:

v = 1:12;
T = 15;
output = v(mod(0:T-1,numel(v))+1)
0 голосов
/ 07 декабря 2018

Решил это по модулю:

T = 800

v             = (1:12)';
nbRest        = mod(T,length(v));
nbFit         = floor(T/length(v));
currentMonths = [repmat(v, nbFit,1); v(1:nbRest)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...