2012-05-28 14 views
5

Ho una funzione che prende un'immagine come argomento e produce un'etichetta e un punteggio come risultato. Occasionalmente voglio testare rapidamente una serie di immagini (cellulari), e il modo più comodo che conosco per farlo è usare arrayfun. Funziona bene per ottenere le etichette che la mia funzione produce, ma mi piacerebbe molto che l'output fosse un elenco di celle [label score].In che modo è possibile acquisire più valori di ritorno in una chiamata all'array di MATLAB?

Potrei scrivere un wrapper attorno alla mia funzione che acquisisce entrambi i valori e li restituisce come matrice di celle, quindi chiama tale wrapper all'interno di arrayfun, ma sembra che sia un linguaggio abbastanza comune che ci dovrebbe essere un modo per funzionare con più valori di ritorno più convenientemente. È lì? (Forse una funzione di convenienza di serie già esistente che può fare questo tipo di come il contrario di deal ...?)

+0

Potrebbe prov ide qualche pseudocodice che dimostra esattamente il comportamento che stai sperando? – tmpearce

risposta

9

è possibile ottenere l'output come due matrici utilizzando built-in sintassi:

[A, B, ...] = arrayfun(fun, S, ...); 

per esempio:

function [y,z]=foo(x) 
    y= x*x; 
    z = x + 10; 
end 

e quindi eseguire la funzione:

[A,B] = arrayfun(@foo, magic(5)) 
Problemi correlati