Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Ejecute Functions desdeMATLABJava

Llamar a funcionesMATLAB

Puede ejecutar funciones desde el uso de los métodos y.MATLAB®Java®MatlabEnginefevalfevalAsync Estos métodos funcionan como la función.MATLABfeval Utilice y cuando desee devolver el resultado de la ejecución de la función a o para pasar argumentos de.fevalfevalAsyncJavaJava

Para llamar a una función:MATLAB

  • Pase el nombre de la función como una cadena.

  • Defina los argumentos de entrada requeridos por la función.MATLAB

  • Especifique el número de salidas que se esperan de la función (1 se asume si no se especifica).MATLAB

  • Defina el tipo devuelto adecuado para las salidas de la función.MATLAB

  • Utilice escritores para redirigir la salida de la ventana de comandos a.MATLABJava

También puede utilizar los métodos y para evaluar expresiones.MatlabEngineevalevalAsyncMATLAB Estos métodos le permiten crear variables en el espacio de trabajo, pero no devuelven valores.MATLAB

Ejecutar función con único argumento devuelto

Este código de ejemplo utiliza la función para encontrar la raíz cuadrada de los elementos en una matriz de dobles.MATLABsqrt El método devuelve una matriz doble que contiene los resultados de la llamada a la función.fevalsqrt

import com.mathworks.engine.*;  public class javaFevalFunc{     public static void main(String[] args) throws Exception{         MatlabEngine eng = MatlabEngine.startMatlab();         double[] a = {2.0 ,4.0, 6.0};         double[] roots = eng.feval("sqrt", a);         for (double e: roots) {             System.out.println(e);         }         eng.close();     } }

Ejecutar función con varios argumentos devueltos

Este código de ejemplo utiliza la función para encontrar el máximo común divisor y los coeficientes de Bézout de los dos valores enteros pasados como argumentos de entrada.MATLABgcd El método devuelve una matriz de objetos que contiene los resultados de la llamada a la función.fevalgcd Los valores devueltos son enteros.

Dado que la función devuelve tres argumentos de salida, especifique el número de valores devueltos como el primer argumento al método.MATLABgcdfeval

import com.mathworks.engine.*;  public class javaFevalFcnMulti {     public static void main(String[] args) throws Exception {         MatlabEngine eng = MatlabEngine.startMatlab();         Object[] results = eng.feval(3, "gcd", 40, 60);         Integer G = (Integer)results[0];         Integer U = (Integer)results[1];         Integer V = (Integer)results[2];         eng.close();     } }

Cuándo especificar el número de argumentos de salida

Los métodos y permiten especificar el número de argumentos de salida devueltos por la función.MatlabEnginefevalfevalAsyncMATLAB De forma predeterminada, se supone que el número de argumentos de salida de la función es.MATLAB1

Si desea llamar a una función sin salidas o más de una salida, especifique ese número como el primer argumento pasado a o.MATLABfevalfevalAsync

Por ejemplo, este código llama a la función con la sintaxis de tres argumentos de salida:MATLABgcd

Object[] results = eng.feval(3, "gcd", 40, 60);

funciones pueden comportarse de manera diferente dependiendo del número de salidas solicitadas.MATLAB Algunas funciones no pueden devolver ninguna salida o un número especificado de salidas. Por ejemplo, la función mantiene la ejecución durante un número especificado de segundos.MATLABpause Sin embargo, si llama con un argumento de salida, la función devuelve inmediatamente con un valor de estado.pause Por lo tanto, este código no causa pausa porque solicita un argumento de salida.MATLABfeval

eng.feval("pause", 10);

Para pausar la ejecución de los 10 segundos solicitados, especifique el número de salidas como.MATLAB0

eng.feval(0, "pause", 10);

Nota

Para asegurarse de que se llama a una función sin salidas, especifique el número de argumentos devueltos como.MATLAB0

Temas relacionados