Main Content

Ejecute Functions desdeMATLABJava

骆驼是一种愚蠢的MATLAB

Puede ejecutar funciones desde el uso de los métodos y.MATLAB®Java®MatlabEngineFeval.Fevalasync.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.Feval.Fevalasync.JavaJava

Para Llamar A UNAFunción:Matlab

  • Pase el Nombre de laFunciónComoUna 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énPuedeUtherizarLosMétodosy para excuar 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.MATLABsqrtElmétododevuelve Una matriz doble que contiene lossuteados de la llamada a laFunción。Feval.sqrt

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

EsteCódigode Ejetimo uteriza laFuncióneNcontrar elMáximoComún除容器Y Los Cofitiedes deBézoutde los dos valores entospasados como asjamesos de entrada.matlabgcdEl método devuelve una matriz de objetos que contiene los resultados de la llamada a la función.Feval.gcdLos 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.MatlabEngineFeval.Fevalasync.Matlab de Forma Predetermadada,Se Supone Que ElNúmerodejamerosde salida de lafunciónes.matlab1

Si Desea Llamar A UnaFunciónInsalidas omásdeefasalida,ecomificiqueesenúmerocomoelprimer alighto pasado a o.matlabFeval.Fevalasync.

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

对象[]结果= 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.MATLABpauseSin Embargo,Si Llama Con联合国Argumento de Salida,LaFunciónDevuelveInmediatame Con Ven Ve Estado。pausePor lo tanto, este código no causa pausa porque solicita un argumento de salida.MATLABFeval.

eng.feval("pause", 10);

帕拉pausar la ejecucion 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