2012-05-28 8 views
5

Tengo una función que toma una imagen como argumento y produce una etiqueta y una puntuación como resultado. De vez en cuando quiero probar rápidamente una matriz (de células) de imágenes, y la forma más conveniente que conozco de hacerlo es usando arrayfun. Esto funciona bien para obtener las etiquetas que produce mi función, pero realmente me gustaría que la salida sea una lista de celdas [label score].¿Cómo puedo capturar múltiples valores devueltos en una llamada a arrayfun de MATLAB?

Podría escribir un contenedor alrededor de mi función que capture ambos valores y los devuelva como una matriz de celda, y luego llame a ese contenedor dentro de arrayfun, pero parece que esto es una locución bastante común que debería haber una manera de trabajar con múltiples valores de retorno más convenientemente. ¿Esta ahí? (Tal vez una función de confort estándar ya existe que puede hacer esto Algo así como lo contrario de deal ...?)

+0

Podría prov ¿Tiene algún pseudocódigo que demuestre exactamente el comportamiento que espera? – tmpearce

Respuesta

9

usted puede conseguir su salida como dos matrices usando una función de sintaxis:

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

Por ejemplo:

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

Y a continuación, ejecutar la función:

[A,B] = arrayfun(@foo, magic(5)) 
Cuestiones relacionadas