2010-05-23 13 views
15

Eventuali duplicati:
How do I do multiple assignment in MATLAB?MATLAB modo più semplice per assegnare gli elementi di un vettore per singole variabili

Quindi cerchiamo di dire che ho un vettore p = [1 2 3]. Voglio un comando che è simile al seguente:

[x y z] = p; 

modo che x = p (1), y = p (2), z = p (3).

C'è un modo semplice per farlo?

+3

Duplicate: http://stackoverflow.com/questions/2740704/is-there-anything-like-deal-for-normal-matlab-arrays, che è essa stessa un duplicato di http: // StackOverflow. it/questions/2337126/multiple-assignment-in-matlab – mtrw

risposta

18

Converti in cella matrice.

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

Bene, sembra che questo sia il meglio che posso fare. – rlbond

2

È possibile utilizzare deal:

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

+5

Bene, è altrettanto dettagliato di 'x = p (1); y = p (2), z = p (3) ' – rlbond

1

Ebbene, risulta non c'è modo per una riga questo, così ho scritto una funzione.

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 
Problemi correlati