2010-05-23 3 views
15

Duplicar posible:
How do I do multiple assignment in MATLAB?MATLAB manera más fácil de asignar elementos de un vector de variables individuales

Así que vamos a decir que tengo un vector p = [1 2 3]. Quiero un comando que se ve así:

[x y z] = p; 

de manera que x = p (1), y = p (2), y z = p (3).

¿Hay una manera fácil de hacer esto?

+3

duplicado: http://stackoverflow.com/questions/2740704/is-there-anything-like-deal-for-normal-matlab-arrays, que es en sí mismo un duplicado de http: // stackoverflow. com/questions/2337126/multiple-assignment-in-matlab – mtrw

Respuesta

18

Convertir a matriz de celdas.

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

Bueno, parece que esto es lo mejor que puedo hacer. – rlbond

2

Puede utilizar deal:

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

+5

Bueno, eso es tan detallado como 'x = p (1); y = p (2), z = p (3) ' – rlbond

1

Bueno, resulta que no hay manera de una sola línea de esto, así que escribió una función.

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 
Cuestiones relacionadas