zoukankan      html  css  js  c++  java
  • c#直接调用matlab

    http://blog.sina.com.cn/s/blog_6317acb50100v0jw.html

    编译环境:c#,xp系统,Matlab6.5

    新建一个窗体项目,添加matlab引用。

    然后试了四种方式调用matlab:

    第一种

    1. MLApp.MLAppClass matlab = new MLApp.MLAppClass();  
    2. matlab.Visible = 1;  
    3. matlab.Execute("figure(1)");  

    第二种

    1. MLApp.DIMLApp matlab = null;  
    2. Type matlabAppType = System.Type.GetTypeFromProgID("Matlab.Application");  
    3. matlab = System.Activator.CreateInstance(matlabAppType) as MLApp.DIMLApp;  
    4. matlab.Visible = 1;  
    5. matlab.Execute("figure(2)");  

    第三种

    1. MLApp.MLApp matlab = null;  
    2. Type matlabAppType = System.Type.GetTypeFromProgID("Matlab.Application");  
    3. matlab = System.Activator.CreateInstance(matlabAppType) as MLApp.MLApp;  
    4. matlab.Visible = 1;  
    5. matlab.Execute("figure(3)");  

    第四种

    1. MLApp.MLApp matlab = new MLApp.MLApp();  
    2. matlab.Visible = 1;  
    3. 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");   
        }

     
     
  • 相关阅读:
    Uva(10129)+Uva(10054)
    Uva 10004(二分图的判定)
    flume系列之—flume ng使用demo
    目前可选的开源日志收集项目
    flume系列之一flume简介
    Objective-C之null NaN undefined
    Objective-C之category
    Objective-C协议与非正式协议
    Objective-C学习笔记_命令行参数获取
    Objective-C学习笔记_Xcode模拟命令行填入参数执行
  • 原文地址:https://www.cnblogs.com/MarshallL/p/4042616.html
Copyright © 2011-2022 走看看