vector unpacking for octave

2020-04-04 06:16发布

问题:

Octave(/matlab)'s notation for handling multiple return values

[a, b] = f(x)

suggests that the values returned by f(x) are in a sort of row vector and that Octave supports vector unpacking (like Python's tuple-unpacking).

Yet when I put

[a, b] = [1, 2]

I get

error: invalid number of output arguments for constant expression

Does octave support vector-unpacking?

If so, what's the proper notation?

I can't find anything in the documentation

回答1:

I don't have Octave to test, but in MATLAB you can "unpack" cell arrays.

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

x1 =
     1
x2 =
     2

You can convert numerical vector to a cell array as x = num2cell([1 2]);.

I have to add that this works for MATLAB starting from version 7.0. For earlier version you have to use DEAL function.