Matlab - 在一行中处理变量的值

时间:2011-04-14 08:46:43

标签: matlab variables vector

  

可能重复:
  How do I do multiple assignment in MATLAB?

假设我有值向量v = 1:3
我希望将矢量值分配给变量a=1, b=2, c=3
使用[a, b, c] = deal(v) a=b=c=[1 2 3]结果a=v(1), b=v(2), c=v(3)尝试这样做。

除了显而易见的{{1}}?

之外,有没有人知道这样做的任何内容?

2 个答案:

答案 0 :(得分:1)

不是一个单行(我确定那里有一个!),但是这里有一个你可以添加到你的MATLAB路径的功能,似乎做了正确的事情:

function varargout  = deal2 ( inputVec ) 

for i = 1:nargout
    varargout{i} = inputVec(i);
end

end

使用此:

>> [a, b, c] = deal2([1 200 10])

a =

 1


b =

200


c =

10

如果输出的数量小于或等于输入矢量的长度,这将适用于任何长度的输入矢量和输出数量。

答案 1 :(得分:1)

不是一个单行,但接近。

% Convert v to be a cell array, with each element in a different cell.
v = 1:3;
v2 = arrayfun(@(x) x, v, 'UniformOutput', false)

% Assign each cell to a different variable
[a, b, c] = v2{:}