Повышение / понижение логического вектора (не с нулями) - PullRequest
0 голосов
/ 19 октября 2019

Надеюсь, вы поможете мне с небольшой проблемой. Я хочу увеличить и уменьшить вектор с нулями и единицами. Для этого у нас есть функции upsample и downsample, однако функция upsample в Matlab добавляет к вектору только нули. Я хотел бы повторить значение, вместо того, чтобы просто ставить нули.

К сожалению, функция upsample не делает этого. Таким образом, я попытался использовать repmat (в третьем измерении), а затем изменить форму, чтобы вернуться к старому формату. Я знаю, что это должно быть возможно с этими функциями, но если я просто использую их, вектор просто дублируется и добавляется в конец.

Пример: вектор ввода: [1 0 0 1 0 1 01 1 1 0 0] (они должны быть случайными).

Теперь я хочу повысить (скажем) в 2 раза. Затем я хочу получить: [1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 1 1 1 1 1 0 0 00].

Заранее спасибо за любую помощь!

1 Ответ

2 голосов
/ 19 октября 2019

Вы можете использовать repelem:

>> repelem([1 0 1],2)
ans =
     1     1     0     0     1     1

Или использовать repmat и reshape, когда input является вектором столбца:

>> input = [1 0 1];
>> reshape(repmat(input, 2, 1), 1, [])
ans =
     1     1     0     0     1     1
...