Запустите Matlab Script в C # - PullRequest
       2

Запустите Matlab Script в C #

0 голосов
/ 23 апреля 2019

У меня есть скрипт Matlab textcreator.m, который создает файл результатов output.txt.

И есть некоторая ссылка matlab.aplication(), которая "переводит" функцию matlab в c #, и часть кода трудно преобразовать в c #, и я решил просто запустить созданный мной скрипт.

using System; 
using System.Collections.Generic; 
using System.Text; 
MLApp.MLApp matlab = new MLApp.MLApp(); 
matlab.Execute(@"cd d:\textcreator.m"); 

Как запустить скрипт Matlab textcreator.m, когда я нажимаю кнопку на моем компьютере с Matlab?

1 Ответ

1 голос
/ 23 апреля 2019

Вы почти получили его, но вместо matlab.Execute("cd d:\textcreator.m") вам следует matlab.Execute("cd d:\"), а затем matlab.Execute("run textcreator.m"). Итак, ваш код должен быть:

MLApp.MLApp matlab = new MLApp.MLApp(); 
matlab.Execute("cd d:\");
matlab.Execute("run textcreator.m");

Я также выкопал простую оболочку MLApp, которую я написал довольно давно. Думаю, это будет полезно для вас.

class MLWrapper
{
    private readonly MLApp.MLApp _mlapp;

    public MLWrapper(bool visible = false)
    {
        _mlapp = new MLApp.MLApp();

        if (visible)
            ShowConsole();
        else
            HideConsole();
    }

    ~MLWrapper()
    {
        Run("close all");
        _mlapp.Quit();
    }

    public void ShowConsole()
    {
        _mlapp.Visible = 1;
    }

    public void HideConsole()
    {
        _mlapp.Visible = 0;
    }

    /// <summary>
    /// Run a MATLAB command.
    /// </summary>
    /// <returns>Text output displayed in MATLAB console.</returns>
    public string Run(string cmd)
    {
        return _mlapp.Execute(cmd);
    }

    /// <summary>
    /// Run a MATLAB script.
    /// </summary>
    /// <returns>Text output displayed in MATLAB console.</returns>
    public string RunScript(string scriptName)
    {
        return Run($"run '{scriptName}'");
    }

    /// <summary>
    /// Change MATLAB's current working folder to the specified directory.
    /// </summary>
    public void CD(string directory)
    {
        Run($"cd '{directory}'");
    }

    public object GetVariable(string varName)
    {
        _mlapp.GetWorkspaceData(varName, "base", out var data);
        return data;
    }

    public void SetVariable(string varName, object value)
    {
        _mlapp.PutWorkspaceData(varName, "base", value);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...