2015-10-27 3 views
1

Вектор x является 1 матрицы с размерностьюMATLAB: Скопировать первые п элементы вектора, то пропустите п элементы, а затем скопировать на следующий п элементах

Я хотел бы сделать первые 20 элементов вектора x и скопируйте их в вектор y, а затем скопируйте следующие 20 элементы вектора x в вектор z, а затем скопируйте следующие 20 элементов в вектор y и так далее.

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

ответ

4

Это может быть достигнуто путем изменения формы вектора на матрицу, выбирая нечетные/четные столбцы и, наконец, уплощение матрицу:

m = reshape(a, 20, []); 
x = m(:,1:2:end); x = x(:); 
z = m(:,2:2:end); z = z(:); 
+0

Эта идея хороша, но в последний раз я проверил, Matlab не позволяет функцию индексирования Результаты. Могут потребоваться некоторые дополнительные временные переменные. –

+1

Когда у меня есть вектор 2000x1 с именем 'a', это, похоже, выдает сообщение об ошибке «Ошибка:() -индексирование должно появляться последним в выражении индекса.». Вы знаете, почему это так? – user1205197

+1

ОК, октава позволяет это. –

Смежные вопросы