2011-03-01 13 views
12

Non so se MATLAB può farlo, e lo voglio puramente per l'estetica nel mio codice, ma MATLAB può creare due variabili contemporaneamente?Definire più variabili contemporaneamente in MATLAB?

Esempio

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

C'è un modo per scrivere il codice qualcosa di simile a:

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

Cercare l'estetica nel codice MATLAB è sempre una battaglia in salita. Ma vedi la mia risposta qui sotto. –

+1

Se vuoi inizializzare le variabili con * diversi * valori, allora questo è un duplicato di [Come faccio a svolgere più compiti in MATLAB?] (Http://stackoverflow.com/questions/2337126/how-do-i- do-multiple-assignment-in-matlab) Se vuoi inizializzarli con lo * stesso * valore, quindi [il suggerimento di Andrew] (http://stackoverflow.com/questions/5158032/define-multiple-variables-at-the -same-time-in-matlab/5158206 # 5158206) per utilizzare [DEAL] (http://www.mathworks.com/help/techdoc/ref/deal.html) è ciò che desideri. – gnovice

risposta

25

Utilizzare elenchi separati da virgole per ottenere più variabili nel lato sinistro di un'espressione.

È possibile utilizzare deal() per inserire più assegnazioni di una riga.

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

Chiamarlo con un singolo ingresso e tutte le uscite ottengono lo stesso valore.

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

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

Questo è perfetto, grazie mille. – user379362

3

Dipende dalla funzione che si utilizza per generare i dati. È possibile creare la propria funzione in MATLAB che ha più di un'uscita:

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

Molti funzione built-in hanno anche questa opzione. Ma questo deve essere supportato direttamente dalla funzione di ritorno.

+0

Sì, sono supportati. Come vedi, la sintassi della virgola è la risposta. –

+0

OK. Ho appena rimosso l'ultima riga dalla tua risposta. –

+0

Mi piace anche la tua risposta di più. Anche se non molto dettagliato, il "Come restituisco questi valori in quel formato?" non è nella domanda. –

Problemi correlati