http://blog.sina.com.cn/s/blog_6317acb50100v0jw.html
編譯環境:c#,xp系統,Matlab6.5
新建一個窗體項目,添加matlab引用。
然后試了四種方式調用matlab:
第一種
- MLApp.MLAppClass matlab = new MLApp.MLAppClass();
- matlab.Visible = 1;
- matlab.Execute("figure(1)");
第二種
- MLApp.DIMLApp matlab = null;
- Type matlabAppType = System.Type.GetTypeFromProgID("Matlab.Application");
- matlab = System.Activator.CreateInstance(matlabAppType) as MLApp.DIMLApp;
- matlab.Visible = 1;
- matlab.Execute("figure(2)");
第三種
- MLApp.MLApp matlab = null;
- Type matlabAppType = System.Type.GetTypeFromProgID("Matlab.Application");
- matlab = System.Activator.CreateInstance(matlabAppType) as MLApp.MLApp;
- matlab.Visible = 1;
- matlab.Execute("figure(3)");
第四種
- MLApp.MLApp matlab = new MLApp.MLApp();
- matlab.Visible = 1;
- matlab.Execute("figure(4)");
四種情況在本機上均可啟動matlab
然后把生成的程序copy到(包括Interop.MLApp.dll)
1,xp系統,matlab2009a
發現第一和第四種方式運行會報錯,第二和第三種可以啟動matlab。
這MLApp.MLAppClass, MLApp.DIMLApp,MLApp.MLApp三者的區別我不曉得,杯具。
2,win7系統,matlab2009a
結果同1。
編譯環境:c#,win7系統,Matlab2009
四種調用方式不變,在本機上均可運行
然后把生成的程序copy到(包括Interop.MLApp.dll)
1,xp系統,matlab6.5
發現第一和第四種方式運行會報錯,第二和第三種可以啟動matlab。
2,xp系統,matlab2009a
四種情況在本機上均可啟動matlab
結論:為了避免matlab版本問題,最好使用第二和第三種方法。
C#調用Matlab 引擎
在C#中調用Matlab, 需要先配置一下Matlab編譯器, 然后在VS里面引用Matlab組件
具體操作如下:
在VS里面引用Matlab組件
引用 .Net MWArray API (不是必須)
引用Matlab Application Type Library
using MathWorks;
using MathWorks.MATLAB;
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
using MLApp;
private void button1_Click(object sender, EventArgs e)
{
MLApp.MLAppClass matlab = new MLApp.MLAppClass();
string command;
command = "t=2:0.2:4*pi;y=sin(t);plot(t,y)";
matlab.Visible = 1;
matlab.Execute(command); // 執行Matlab命令
command = @"print(gcf, '-djpeg', 'c:\Test1')"; // 保存圖片
matlab.Execute(command);
matlab.Quit();
matlab = null;
pictureBox1.Image = Image.FromFile(@"c:\Test1.jpg");
}
具體操作如下:
在VS里面引用Matlab組件
引用 .Net MWArray API (不是必須)
引用Matlab Application Type Library
using MathWorks;
using MathWorks.MATLAB;
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
using MLApp;
private void button1_Click(object sender, EventArgs e)
{
MLApp.MLAppClass matlab = new MLApp.MLAppClass();
string command;
command = "t=2:0.2:4*pi;y=sin(t);plot(t,y)";
matlab.Visible = 1;
matlab.Execute(command); // 執行Matlab命令
command = @"print(gcf, '-djpeg', 'c:\Test1')"; // 保存圖片
matlab.Execute(command);
matlab.Quit();
matlab = null;
pictureBox1.Image = Image.FromFile(@"c:\Test1.jpg");
}