C#调用MATLAB 库函数记录

来源:互联网 发布:网络空间研究院 编辑:程序博客网 时间:2024/06/07 01:37

    <span style="font-size:24px;"> 记录c#调用MATLAB COM 执行MATLAB语句,首先必须保证电脑上安装了MATLAB应用软件。</span>     


1添加应用。(右键引用,添加引用)如图:

COM中找到MATLAB库版本,选中,然后确定。

2.了解接口提供的类对象

<span style="font-size:18px;"> class MLApp {        int visible;//设置MATLAB的显示与隐藏,为1显示,为0隐藏        string Execute(string Name);//执行MATLAB命令        void Feval(string bstrName, int nargout, out object pvarArgOut, ···)//执行MATLAB函数        string GetCharArray(string Name, string Workspace);//从指定的MATLAB工作空间中获取字符数组        void GetFullMatrix(string Name, string Workspace, ref System.Array pr, ref System.Array pi);//从指定的MATLAB工作空间获得矩阵        dynamic GetVariable(string Name, string Workspace);//从指定工作区获取变量数据        void GetWorkspaceData(string Name, string Workspace, out object pdata);//从指定工作区获取变量的数据保存在pdata中        void MaximizeCommandWindow();//最大化MATLAB窗口        void MinimizeCommandWindow();//最小化MATLAB窗口        void PutCharArray(string Name, string Workspace, string charArray);//像指定的MATLAB工作空间中设置字符数组        void PutFullMatrix(string Name, string Workspace, System.Array pr, System.Array pi);//像指定的MATLAB工作空间中设置矩阵        void PutWorkspaceData(string Name, string Workspace, object data);//像MATLAB工作区传递数值型数据        void Quit();//退出MATLAB工作环境    }</span>


3.C#代码;

//矩阵运算<span style="font-size:18px;">public MLApp.MLApp mymatlab = new MLApp.MLApp();//声明MATLAB对象实例,启动MATLAB</span><span style="font-size:18px;">string command1="z=[0:0.1:5]";</span><span style="font-size:18px;">string resultstr1 = mymatlab.Execute(command1); //执行MATLAB命令,resultstr1位矩阵运算执行结果//画图string command2="z=[0.1:0.1:2];y=sin(pi*z);plot(y)";</span><pre name="code" class="html"><span style="font-size:18px;">string resultstr2 = mymatlab.Execute(command2); //此处正确运行后会有MATLAB图像框弹出,调试可以发现resultstr2为空//将图像保存到工程图像文件夹中,close all用来关闭MATLAB图像框,i_rd为我生成的随机数,这样保存的图像将会有很多string command3 = "print(gcf,   '-djpeg', 'C:\\Users\\chenhao\\Documents\\Visual Studio 2012\\Projects\\what\\what\\images\\pictures1_" + i_rd + "');close all";mymatlab.Execute(command2);</span>





0 0