MATLAB Самый простой способ присвоить элементы вектора отдельным переменным

Возможный дубликат:
Как выполнить множественное присвоение в MATLAB?

Итак, скажем, у меня есть вектор p = [1 2 3]. Мне нужна команда, которая выглядит так:

[x y z] = p;

так что x = p (1), y = p (2) и z = p (3).

Есть ли простой способ сделать это?

Ответы

Ответ 1

Преобразование в массив ячеек.

pCell = num2cell(p);
[x,y,z] = pCell{:};

Ответ 2

Вы можете использовать deal:

[x y z] = deal( p(1), p(2), p(3) )

Ответ 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