2011-03-01 12 views
12

No sé si MATLAB puede hacer esto, y lo quiero puramente por estética en mi código, pero ¿puede MATLAB crear dos variables al mismo tiempo?¿Define múltiples variables al mismo tiempo en MATLAB?

Ejemplo

x = cell(4,8); 
y = cell(4,8); 

¿Hay una manera de escribir el código de algo similar a:

x&y = cell(4,8); 
+1

La búsqueda de la estética en el código MATLAB siempre es una batalla cuesta arriba. Pero mira mi respuesta a continuación. –

+1

Si desea inicializar las variables con * valores * diferentes, entonces este es un duplicado de [¿Cómo hago múltiples asignaciones en MATLAB?] (Http://stackoverflow.com/questions/2337126/how-do-i- do-multiple-assignment-in-matlab) Si quiere inicializarlos con el * mismo * valor, entonces [sugerencia de Andrew] (http://stackoverflow.com/questions/5158032/define-multiple-variables-at-the -same-time-in-matlab/5158206 # 5158206) para usar [DEAL] (http://www.mathworks.com/help/techdoc/ref/deal.html) es lo que desea. – gnovice

Respuesta

25

Use listas separadas por comas para obtener múltiples variables en el lado izquierdo de una expresión.

Puede usar deal() para poner varias asignaciones en una línea.

[x,y] = deal(cell(4,8), cell(4,8)); 

Llámalo con una sola entrada y todas las salidas obtienen el mismo valor.

[x,y] = deal(cell(4,8)); 

>> [a,b,c] = deal(42) 
a = 
    42 
b = 
    42 
c = 
    42 
+0

Esto es perfecto, muchas gracias. – user379362

3

Depende de la función que utilice para generar los datos. Usted puede crear su propia función en MATLAB que tiene más de una salida:

[a, b, c] = foo(); 

Muchos función incorporada también tienen esta opción. Pero esto debe ser respaldado directamente por la función de retorno.

+0

Sí, son compatibles. Como puede ver, la sintaxis de coma es la respuesta. –

+0

OK. Acabo de eliminar la última línea de tu respuesta. –

+0

Incluso me gusta su respuesta más. Aunque no es muy detallado, el "¿Cómo devuelvo estos valores en ese formato?" no está en la pregunta. –

Cuestiones relacionadas