Ответ 1
Преобразование в массив ячеек.
pCell = num2cell(p);
[x,y,z] = pCell{:};
Возможный дубликат:
Как выполнить множественное присвоение в MATLAB?
Итак, скажем, у меня есть вектор p = [1 2 3]
. Мне нужна команда, которая выглядит так:
[x y z] = p;
так что x = p (1), y = p (2) и z = p (3).
Есть ли простой способ сделать это?
Преобразование в массив ячеек.
pCell = num2cell(p);
[x,y,z] = pCell{:};
Вы можете использовать deal
:
[x y z] = deal( p(1), p(2), p(3) )
Ну, оказывается, нет способа в однострочном, поэтому я написал функцию.
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