Перенаправление окна Команды MATLAB Вывод на Java

Вывод к окну Команды MATLAB

MATLAB® отображает сообщения об ошибке и выход от функций, которые не отключены с точкой с запятой в окне команды MATLAB. Можно перенаправить этот выход к Java® с помощью java.io.StringWriter. MatlabEngine fevalfevalAsynceval, и evalAsync методы поддерживают использование потоков вывода, чтобы перенаправить MATLAB выход.

Перенаправление MATLAB Вывод

whos MATLAB команда отображает информацию о текущих переменных рабочей области в окне команды MATLAB. Используйте StringWriter передавать этот выход потоком на Java.

import  com.mathworks.engine.*;
import java.io.*;

public class RedirectOutput {
    public static void main(String[] args) throws Exception {
        MatlabEngine engine = MatlabEngine.startMatlab();
        // Evaluate expressions that create variables
        eng.evalAsync("[X,Y] = meshgrid(-2:.2:2);");
        eng.evalAsync("Z = X.*exp(-X.^2 - Y.^2);");
        // Get the output of the whos command
        StringWriter writer = new StringWriter();
        eng.eval("whos", writer, null);
        System.out.println(writer.toString());
        writer.close();
        eng.close();
    }
}

Перенаправление сообщений об ошибке MATLAB на Java

Этот пример кода пытается оценить выражение MATLAB, которое имеет синтаксическую ошибку (несбалансированные одинарные кавычки). Ввод этого оператора в MATLAB вызывает ошибку:

disp('Hello'')

MATLAB возвращает это сообщение об ошибке в командном окне:

 disp('Hello'')
      ↑
Error: Character vector is not terminated properly.

Чтобы перенаправить это сообщение об ошибке на Java, используйте StringWriter с eval метод. Отловите MatlatSyntaxException исключение выдается ошибкой и записью сообщение об ошибке MATLAB на Java.

import  com.mathworks.engine.*;
import java.io.*;

public class javaRedirectOut {
    public static void main(String[] args) throws Exception {
        MatlabEngine engine = MatlabEngine.startMatlab();
        StringWriter writer = new StringWriter();
        try {
            eng.eval("disp('Hello'')", null, writer);
        } catch (MatlabSyntaxException e) {
            System.out.println("Error redirected to Java: ");
            System.out.println(writer.toString());
        }
        writer.close();
        eng.close();
    }
}

Похожие темы