una subfunciones programacion otra llamar funciones funcion evaluar dentro crear como basicas anidadas matlab

subfunciones - funciones en matlab programacion



¿Cómo obtengo el segundo valor de retorno de una función sin usar variables temporales? (2)

A menos que haya una necesidad apremiante de hacer esto, probablemente desaconsejaré. La claridad de tu código sufrirá. Almacenar las salidas en variables temporales y luego pasar estas variables a otra función hará que su código sea más limpio, y las diferentes maneras en que puede hacer esto se describen aquí: ¿Cómo ignorar elegantemente algunos valores de retorno de una función MATLAB? .

Sin embargo, si realmente quiere o necesita hacer esto, la única manera factible en que puedo pensar sería crear su propia función secondreturnvalue . Aquí hay un ejemplo más general llamado nth_output :

function value = nth_output(N,fcn,varargin) [value{1:N}] = fcn(varargin{:}); value = value{N}; end

Y lo llamarías pasando como entradas 1) el número de argumento de salida que deseas, 2) un identificador de función para myfunc , y 3) cualquier argumento de entrada que necesites pasar a myfunc :

abs(nth_output(2,@myfunc,x))

Tengo una función que devuelve dos valores, así:

[a b] = myfunc(x)

¿Hay alguna forma de obtener el segundo valor de retorno sin usar una variable temporal y sin alterar la función?

Lo que estoy buscando es algo como esto:

abs(secondreturnvalue(myfunc(x)))


No que yo sepa. subsref no parece funcionar en este caso, posiblemente porque la segunda variable ni siquiera se devuelve desde la función.

desde matlab 2009b es posible usar la notación

[~, b] = function(x)

si no necesita el primer argumento, pero esto todavía usa una variable temporal para b .