How do I do multiple assignment in MATLAB? How do I do multiple assignment in MATLAB? arrays arrays

How do I do multiple assignment in MATLAB?


You don't need deal at all (edit: for Matlab 7.0 or later) and, for your example, you don't need mat2cell; you can use num2cell with no other arguments::

foo = [88, 12];fooCell = num2cell(foo);[x y]=fooCell{:}x =    88y =    12

If you want to use deal for some other reason, you can:

foo = [88, 12];fooCell = num2cell(foo);[x y]=deal(fooCell{:})x =    88y =    12


Note that deal accepts a "list" as argument, not a cell array. So the following works as expected:

> [x,y] = deal(88,12)x = 88y = 12

The syntax c{:} transforms a cell array in a list, and a list is a comma separated values, like in function arguments. Meaning that you can use the c{:} syntax as argument to other functions than deal. To see that, try the following:

> z = plus(1,2)z = 3> c = {1,2};> z = plus(c{:});z = 3


To use the num2cell solution in one line, define a helper function list:

function varargout = list(x)% return matrix elements as separate output arguments% example: [a1,a2,a3,a4] = list(1:4)varargout = num2cell(x);end