Chamando uma função MATLAB em C #
-
29-10-2019 - |
Pergunta
Desenvolvi uma função MATLAB e estou procurando uma maneira de chamar essa função de outro aplicativo C # e passar alguns parâmetros para ela e obter os resultados no programa C #.
Ouvi dizer que posso usar Dynamic Data Exchange (DDE) ou objetos COM, mas posso fazer isso?
Solução
Há um bom exemplo no MATLAB Central .
Mostra três maneiras de se comunicar com o MATLAB :
- COM
- MATLAB .NET Bulider
- compilador MATLAB
COM (não tenho experiência com isso)
Contras: o MATLAB deve ser instalado no computador de destino.
O construtor MATLAB .NET compila seu código MATLAB para o conjunto .NET e você pode usá-lo diretamente.
Prós: o MATLAB não precisa ser instalado no computador de destino
Contras: é caro
Compilador MATLAB compila seu código MATLAB em uma biblioteca C / C ++ ou arquivo EXE. Você pode usá-lo por meio de P / Invoke .
Prós: o MATLAB não precisa ser instalado no computador de destino
Contras: é caro, muito P / Invoke.
Outras dicas
Há uma terceira opção: delegados .Iniciando o MATLAB -> carregar o conjunto .NET -> executar a função .NET com delegado identificador para uma função MATLAB.
Há um ótimo exemplo neste site sobre como configurar tudo.Você pode usar a ferramenta de implantação MATLAB .NET.
Você precisa
- Instale o MCR (Matlab Compiler Runtime).
- Implante sua função Matlab para .NET Assembly usando Matlab Deploy Ferramenta.Isso criará um arquivo .dll.
- Adicione uma referência .dll dentro de seu projeto .NET.
- Adicione referência ao MATLAB.NET.
A vantagem deste método é que a máquina de destino não requer a instalação do MATLAB, mas por outro lado, a execução é bastante cara.