2013-03-13 3 views
5

октавы (/ MATLAB) 'ы обозначения для обработки нескольких возвращаемых значениявектора распаковка октава

[a, b] = f(x) 

предполагает, что значения, возвращенные F (X) находятся в своем роде вектор-строке и что октавных поддерживает вектор распаковка (например, при распаковке Python).

Но когда я ставлю

[a, b] = [1, 2] 

Я получаю

error: invalid number of output arguments for constant expression

ли распаковка вектор-поддержка октава?

Если да, то в чем правильная нотация?

я ничего не могу найти в документации

+0

Квадратные скобки ('[]') имеют немного другое значение, когда правая часть назначения является вызовом функции. Чего вы хотите добиться именно? –

+0

У меня есть два вектора (A и B), которые я хочу повторить одновременно. В python я бы сделал для a, b in zip (A, B): // Делайте некоторые вещи с a и b – dspyz

ответ

2

я не имею октаву, чтобы проверить, но в MATLAB вы можете «распаковать» клеточные массивы.

x = {1 2}; 
[x1,x2] = x{:} 

x1 = 
    1 
x2 = 
    2 

Вы можете преобразовать числовой вектор в массив ячеек в качестве x = num2cell([1 2]);.

Я должен добавить, что это работает для MATLAB, начиная с версии 7.0. Для более ранней версии вы должны использовать функцию DEAL.

+0

Это работает и в Octave. Благодарю. Это все еще кажется немногословным для такой общей операции – dspyz

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

  • Нет связанных вопросов^_^