Можно запустить симуляции Simulink® с помощью MATLAB® Engine API в Java®. Вот основные шаги, чтобы запустить симуляцию программно.
Создайте движок MATLAB, возражают и запускают сеанс работы с MATLAB.
Загрузите модель Simulink в MATLAB (load_system).
Запустите симуляцию определенными параметрами симуляции (sim).
Доступ к результатам методов использования симуляции возвращенного Simulink.SimulationOuput объект.
Для получения информации о рабочих симуляциях программно из MATLAB, смотрите Симуляции Индивидуума Запуска (Simulink).
vdp Simulink блок-схема симулирует уравнение Ван дер Поля, которое является дифференциальным уравнением второго порядка. Модель решает уравнения с помощью начальных условий и параметров конфигурации, заданных моделью.

Этот код MATLAB показывает команды, чтобы запустить симуляцию программно. Simulink.SimulationOuput объект get метод возвращает результаты и временной вектор.
mdl = 'vdp'; load_system(mdl); simOut = sim(mdl,'SaveOutput','on',... 'OutputSaveName','yOut',... 'SaveTime','on',... 'TimeSaveName','tOut'); y = simOut.get('yOut'); t = simOut.get('tOut');
Этот код MATLAB создает график симуляции выход и экспортирует график в файл изображения JPEG.
plot(t,y) print('vdpPlot','-djpeg')
Этот код Java запускает vdp Simulink симуляция модели и возвращает результаты на Java. Реализация выполняет эти операции:
Создает движок MATLAB, возражают и запускают сеанс работы с MATLAB.
Вызывает load_system MATLAB команда, чтобы запустить Simulink и загрузить vdp смоделируйте асинхронно. Опросите задачу до Future возвращается.
Вызывает sim MATLAB команда, чтобы установить параметры симуляции и запустить симуляцию. Опросите задачу до Future возвращается.
Получает результат симуляции. Выход sim функцией является Simulink.SimulationOuput MATLAB объект, который создается в базовом рабочем пространстве MATLAB.
Engine API не поддерживает этот тип объекта. Поэтому этот пример использует объект get метод, чтобы получить доступ к данным моделирования в рабочем пространстве MATLAB.
Создает диаграмму данных моделирования и экспортирует этот график в файл JPEG.
Возвращает результаты симуляции и временной вектор на Java как double массивы.
import com.mathworks.engine.*;
import java.util.concurrent.Future;
import java.util.Arrays;
public class RunSimulation {
public static void main(String[] args) throws Exception {
MatlabEngine eng = MatlabEngine.startMatlab();
Future<Void> fLoad = eng.evalAsync("load_system('vdp')");
while (!fLoad.isDone()){
System.out.println("Loading Simulink model...");
Thread.sleep(10000);
}
Future<Void> fSim = eng.evalAsync("simOut = sim('vdp','SaveOutput'," +
"'on','OutputSaveName','yOut'," +
"'SaveTime','on','TimeSaveName','tOut');");
while (!fSim.isDone()) {
System.out.println("Running Simulation...");
Thread.sleep(10000);
}
// Get simulation data
eng.eval("y = simOut.get('yOut');");
eng.eval("t = simOut.get('tOut');");
// Graph results and create image file
eng.eval("plot(t,y)");
eng.eval("print('vdpPlot','-djpeg')");
// Return results to Java
double[][] y = eng.getVariable("y");
double[] t = eng.getVariable("t");
// Display results
System.out.println("Simulation result " + Arrays.deepToString(y));
System.out.println("Time vector " + Arrays.toString(t));
eng.close();
}
}