【发布时间】:2011-02-23 00:22:03
【问题描述】:
假设我有一个向量p = [1 2 3]。我想要一个看起来像这样的命令:
[x y z] = p;
所以 x = p(1)、y = p(2) 和 z = p(3)。
有没有简单的方法可以做到这一点?
【问题讨论】:
标签: matlab
假设我有一个向量p = [1 2 3]。我想要一个看起来像这样的命令:
[x y z] = p;
所以 x = p(1)、y = p(2) 和 z = p(3)。
有没有简单的方法可以做到这一点?
【问题讨论】:
标签: matlab
好吧,事实证明没有办法把它写成一行,所以我写了一个函数。
function varargout = deal_array(arr)
s = numel(arr);
n = nargout;
if n > s
error('Insufficient number of elements in array!');
elseif n == 0
return;
end
for i = 1:n
varargout(i) = {arr(i)}; %#ok<AGROW>
end
end
【讨论】:
你可以使用deal:
[x y z] = deal( p(1), p(2), p(3) )
【讨论】:
x = p(1); y = p(2), z = p(3)一样冗长
转换为元胞数组。
pCell = num2cell(p);
[x,y,z] = pCell{:};
【讨论】: