许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  C#中调用MATLAB执行MATLAB代码

C#中调用MATLAB执行MATLAB代码

阅读数 5
点赞 0
article_banner

前期工作:

在C#调用MATLAB执行代码之前需要引用相关命名空间。如下所示

using MathWorks;
using MathWorks.MATLAB;
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
using MLApp;

把上面的代码输入到Visual Studio中会报错,需要将MATLAB的相关引用引用到该 项目  中。以VS2019为例。

   在“解决方案管理器”中找到“引用”,右击,选择添加引用
添加引用

   然后Matlab Application Type Library 然后点击确定添加
添加引用

然后还需要添加另外一条引用。即WMArray.dll文件

   同样右击引用,选择添加引用,然后找到MATLAB软件的安装路径,具体安装路径如下:https://www.gofarlic.com\anzhuangmulu\MatLAB\toolbox\dotnetbuilder\bin\ win64 \v4.0\MWArray.dll

   然后点击添加即可
添加后结果



调用方式:

第一种

MLApp.MLApp matlab = new MLApp.MLApp();//不能使用  MLAppClass 
string command;
command = "t=2:0.2:4*pi;y=sin(t);plot(t,y)";
matlab.Visible = 1;
matlab.Execute(command);
command = @"print(gcf,  '-djpeg',  'https://www.gofarlic.com\Test1')";
matlab.Execute(command);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Image = Image.FromFile(@"https://www.gofarlic.com\Test1.jpg");

需要注意的一点是:之前看有博主用的是MLAppClass 但是测试之后发现不可以,而MLApp可以。

   窗体文件中展示的图片结果如下:
图片展示

第二种方法

MLApp.DIMLApp matlab = null;
Type matlabAppType = System.Type.GetTypeFromProgID("Matlab.Application");
matlab = System.Activator.CreateInstance(matlabAppType) as MLApp.DIMLApp;
string command;
command = "t=2:0.2:4*pi;y=sin(t);plot(t,y)";
matlab.Visible = 1;
matlab.Execute(command);
command = @"print(gcf,  '-djpeg',  'https://www.gofarlic.com\Test1')";//C盘不可以  会出错
matlab.Execute(command);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Image = Image.FromFile(@"https://www.gofarlic.com\Test1.jpg");

图片展示

还有就是当设置到C盘时,不知道为什么会报错。

第三种方法

MLApp.MLApp matlab = null;
Type matlabAppType = System.Type.GetTypeFromProgID("Matlab.Application");
matlab = System.Activator.CreateInstance(matlabAppType) as MLApp.MLApp;
string command;
command = "t=2:0.2:4*pi;y=sin(t);h = plot(t,y)";
String path = Directory.GetCurrentDirectory();//获取当前路径
matlab.Visible = 0;
matlab.Execute(command);
command = @"print(gcf,  '-djpeg',  '" + path + "\\Test1');close all";
matlab.Execute(command);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Image = Image.FromFile(path + "\\Test1.jpg");

这种方法的效果如下所示:
图片展示

第四种方法

MLApp.MLApp matlab = new MLApp.MLApp();
matlab.Visible = 0;
string command1, command2;
command1 = "t=0:0.01:2*pi;y=sin(t);h=plot(t,y)";//matlab脚本命令行
String path = Directory.GetCurrentDirectory();//获取当前路径
command2 = @"print(gcf,  '-djpeg',  '" + path + "\\Test1');close all";
matlab.Execute(command1);
matlab.Execute(command2);       // 执行Matlab命令
matlab.Quit();
matlab = null;
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Image = Image.FromFile(path + "\\Test1.jpg"); //读取图像 

图片展示



记录笔记。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空