Как запустить файл .m (matlab) через элемент управления java и matlab?

1

У меня есть 2 файла.m. Одна из них - это функция, а другая (read.m) считывает функцию и экспортирует результаты в файл excel. У меня есть java-программа, которая вносит некоторые изменения в.m файлы. После изменений я хочу автоматизировать выполнение/запуск файлов.m. Я загрузил matlabcontrol.jar, и я ищу способ использовать его для вызова и запуска файла read.m, который затем читает эту функцию. Может ли кто-нибудь помочь мне с кодом? благодаря

Я пробовал этот код, но он не работает.

public static void tomatlab() throws MatlabConnectionException, MatlabInvocationException {


        MatlabProxyFactoryOptions options =
            new MatlabProxyFactoryOptions.Builder()
                .setUsePreviouslyControlledSession(true)
                .build();
        MatlabProxyFactory factory = new MatlabProxyFactory(options);
        MatlabProxy proxy = factory.getProxy();


        proxy.eval("addpath('C:\\path_to_read.m')");
        proxy.feval("read");
        proxy.eval("rmpath('C:\\path_to_read.m')");

        // close connection
        proxy.disconnect();

    }
  • 0
    Можете ли вы быть более конкретным, что "не работает"?
  • 0
    @bdecaf Он не будет правильно запускать файл read.m. Он создает вывод (файл Excel) в случайных папках назначения.
Показать ещё 1 комментарий
Теги:
execution

1 ответ

0

Основываясь на официальном учебнике в Wiki проекта, кажется довольно простым начать с этого API.

Путь манипулирования может быть немного сложным, но я бы попытался загрузить весь скрипт в строку и передать его в eval (обратите внимание, что у меня нет опыта работы с этой конкретной библиотекой Matlab). Это можно сделать довольно легко (например, для соединения Files.readAllLines()).

Надеюсь, что что-то помогает.

  • 0
    Нужно ли передавать весь сценарий в eval? Есть ли способ просто выполнить файл .m?
  • 0
    Как я уже говорил, я не знаю API, но после просмотра Javadocs я не нашел никакого способа сделать это. Вероятно, есть функция для этого, хотя обходной путь, который я написал, может работать для вас. Может быть, вы должны спросить вокруг списка обсуждения проекта.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню