2010-11-15 16 views
46

Sto scrivendo 2 funzioni in MATLAB, una funzione di inizializzazione e una funzione per inserire elementi in un array trattandolo come una lista doppiamente collegata. Tuttavia, la mia funzione di inizializzazione restituisce solo "ans =" ​​e l'array inizializzato. Come posso avere anche impostare i valori delle altre mie variabili? Ecco il mio codice:MATLAB - più valori di ritorno da una funzione?

function [ array, listp, freep ] = initialize(size) 
    array = zeros(size, 3); 
    listp = 0; 
    freep = 1; 
end 
+1

Python ha anche quello. Inoltre, ha numpy, SciPy e altro;) –

+4

@Nick si prega di contrassegnare la risposta corretta come corretta ..... sono passati 2 anni, il ragazzo merita la sua risposta per essere accettato –

risposta

76

Matlab consente di restituire più valori e di riceverli in linea.

quando si voglia chiamare, ricevere variabili individuali in linea:

[array, listp, freep] = initialize(size) 
+1

hmm ho pensato di averlo provato e non l'ho fatto lavoro, ma credo di aver dimenticato le parentesi. Grazie! – Nick

+29

Inoltre, se hai una variabile di output della funzione che non ti serve, ma in seguito, il carattere ~ eviterà di sprecare memoria su una variabile spazzatura. Ad esempio, '[array, ~, freep] = initialize (size)' (Solo in R2009b e versioni successive.) – Doresoom

+2

@Nick potresti prendere in considerazione di accettare la risposta. 5 anni sono lunghi, ma direi meglio tardi che mai;). – patrik

0

Credo Octave restituire un solo valore che è il primo valore di ritorno, nel tuo caso, 'allineamento'.

E Octave lo stampa come "ans".

Altri, 'listp', 'freep' non sono stati stampati.

Perché visualizzato all'interno della funzione.

Prova questo fuori:

[ A, B, C] = initialize(4) 

E l' 'allineamento', 'listp', 'Freep' stamperà come A, B e C.

-1

cambiare la funzione che si ottiene un singolo risultato = [array, listp, freep]. Quindi c'è solo un risultato da visualizzare

-1

Utilizzare quanto segue nella funzione che si chiamerà e funzionerà correttamente.

 [a b c] = yourfunction(optional) 
    %your code 
    a = 5; 
    b = 7; 
    c = 10; 
    return 
    end 

Questo è un modo per chiamare la funzione sia da un'altra funzione e dal terminale di comando

 [aa bb cc] = yourfunction(optional); 

Le variabili aa, bb e cc ora tenere le variabili di ritorno.

+0

Questo non aggiunge nulla. – gnovice

Problemi correlati