MATLAB与C#混合编程的两种方法

写程序少不了参考别人的经验,因为参加项目需要,在进行系统开发的时候,需要用到MATLAB和C#的混合编程,为此总结了一下经验~

1.编程工具   我使用的是VS2013 及MATLABR2015b,一般来说,混合编程对版本要求不是很高

2.先总体介绍一下两种混合编程的大致区别:

(1)目前使用最广的方法是先封装MATLAB程序为dll文件,然后在VS中进行引用,便可以在VS中调用其封装的函数,封装dll的方法MATLAB里有,并且比较简单,后面会附上详细的教程。封装dll的引用方法比较受欢迎可能是这种方法相对来说比较普及,且封装dll适合任何程序,也就是说你用MATLAB写的程序度可以封装成dll,听起来是不是很cool,没错,不仅仅是某种函数的算法,只要是可以用的程序度可以封装。

这种方法最大的缺点也就是在封装dll文件时,MATLAB必须要配置好环境,很多没有调试成功主要问题也出现在这,后面详细介绍

(2)当然第二种方法就不需要封装成dll了,感觉是不是很棒,你只需要将你编写的MATLAB文件放在你用VS创建项目的bin文件夹下面,这种方法的局限性在于它更适合于函数数值计算,因为在调用传递参数的时候,一般的数值,字符串,泛型类型度可以,只要不是像什么shp图形文件数据或者其他类型的文件数据,因为小编在使用这种方法的时候就碰到过shp文件数据无法直接传参,也就不得不使用了封装dll的方法,好了,说了折磨多,赶紧上点干货。

一:调用dll文件形式

1.确保安装好MATLAB及VS,版本要求不高,但是确保MATLAB是安装的破解文件,也就是必须是包含“mcc”以及“compiler”文件,如果不是完全破解,在后期的MATLAB编译以及打包会出现错误。

2.封装MATLAB程序为dll

1.打开MATLAB,在出现的界面中依次点击“新建----->函数”

在这里我就编辑一个最简单的画图函数,之后在窗口命令行中输入deploytool, 出现后选择第三个 Library Compiler如图:然后接下来便是选择设置,按照图上操作;最后选择Microsoft Framework时,一般选择4.0;

 

 

完成后出现如下图,接下来就是等待了;

 

 

3.VS里面配置引用环境并调用函数

首先VS里面新建一个窗体项目,我这取名叫test,选中并点击右键选择添加引用,按“浏览”查找,找到你生成dl的l文件夹,然后添加之后在VS里新建项目,然后写上代码:记得using  drew;

代码如下图所示: 

 

 

好了,运行后,结果如下图所示 :

第二种方法:直接调用MATLAB函数代码

这种方法很方便,值得注意的是:1.MATLAB程序可以放在VS创建工程项目的bin文件夹下的debug里2.VS项目中需要引用MLApp.dll,一般在添加引用时,在COM组件选项中寻找3.最好要安装好matlab软件,这里比较容易出错

下面贴出C#中如何调用MATLAB编写的矩阵相加的函数add(),c=a+b;

 private void button1_Click(object sender, EventArgs e)
        {
             MLApp.MLApp matlab = null;
            Type matlabAppType = System.Type.GetTypeFromProgID("Matlab.Application");
            matlab = System.Activator.CreateInstance(matlabAppType) as MLApp.MLApp;
            matlab.Visible = 0;//可见性
            string path_project = Directory.GetCurrentDirectory();   //工程文件的路径,如bin下面的debug  
            string path_matlab = "cd('" + path_project + "')";     //自定义matlab工作路径    这里我注释调用   
            matlab.Execute(path_matlab);
            matlab.Execute("clear all");
            double[,] c;
           double[,] a={{1,2,3},{2,3,4}};
           double[,] b={{7,8,9},{1,1,1}}; //初始化变量
            double[,] _a = new double[a.GetLength(0), a.GetLength(1)];
            matlab.PutFullMatrix("a", "base", a, _a );
            double[,] _b=new double [b.GetLength(0),b.GetLength(1)];
            matlab.PutFullMatrix("b", "base",  b, _b);        
            string comman = @"c=add(a,b)";
            matlab.Execute(comman);
            //获取调用结果值
            var result1 = matlab.GetVariable("c", "base");
        
            c= result1 as double[,];
            

        }

 

  • 7
    点赞
  • 135
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
### 回答1: Matlab与LabVIEW混合编程是指将两种编程语言结合起来,以实现更复杂的功能。Matlab是一种数学计算软件,可以进行数据分析、图像处理、信号处理等操作,而LabVIEW是一种图形化编程语言,可以用于控制和监测实验室设备。通过将两种语言结合起来,可以更方便地进行数据处理和实验控制。例如,可以使用Matlab进行数据分析,然后将结果传递给LabVIEW控制实验设备。这种混合编程可以提高工作效率,减少编程难度,同时也可以扩展两种语言的应用范围。 ### 回答2: Matlab和LabVIEW是两个常用的工程软件,在不同领域都有广泛的应用。Matlab被广泛地应用于数学建模、信号处理、图像处理、控制系统等领域,拥有强大的数学计算能力和丰富的工具箱;而LabVIEW是一款专门用于设计控制系统和数据采集的软件,可以快速创建仪器控制与数据分析应用程序。两者都是为了使工程师和科学家更快地进行技术开发和研究。 然而,有时候,在某些特定领域,需要结合使用Matlab和LabVIEW进行混合编程来完成任务,以充分利用它们各自的优势。 首先,Matlab与LabVIEW的混合编程可以实现跨平台操作,无需进行任何代码转换。对于具有大量数据处理工作的实时系统,在处理和控制方面,LabVIEW更具优势,而Matlab的数学计算和可视化工具则可以对数据进行更深入的解释和分析,另外也可以对处理的数据进行深度学习和人工智能的算法开发。 其次,使用切实的数据和测试,组合Matlab和LabVIEW可以提高实验效率和准确性。例如,LabVIEW管理实验工作流程,而Matlab可以用于分析和处理数据;LabVIEW收集实时数据,而Matlab则可用于对数据进行离线分析。 最后,Matlab和LabVIEW也提供了强大的可视化功能,它可以帮助用户制作更具吸引力和有效的图表,更好地解释数据,并提供有关数据的重要见解,以提高对工程师和科学家的辅助作用。 总之,Matlab和LabVIEW混合编程可以充分发挥两者的优点,帮助工程师和科学家更快,更准确地完成任务。 ### 回答3: Matlab与LabVIEW混合编程是一种很有用的方法,它为用户提供了最佳的技术和工具,以满足您的定制需求并对信号和数据进行分析。Matlab和LabVIEW都是非常流行的工具,在许多领域都有广泛的应用。Matlab主要集中于算法分析和实现,而LabVIEW是为控制、数据采集和仪器控制设计的编程工具。混合编程可以结合Matlab和LabVIEW的优势,具有非常强的分析和控制功能。 混合编程可以通过Matlab和LabVIEW之间的功能切换接口进行实现。Matlab代码可以插入到LabVIEW中,并与LabVIEW代码交互,以实现相互支持。Matlab中对于数据的处理和分析十分强大,当我们需要绘制高质量的图形或使用先进的算法时,我们可以使用Matlab。而在需要控制仪器和进行数据采集方面,LabVIEW是最好的选择。在LabVIEW的环境中,可以使用daqmx驱动程序读取传感器数据,然后送到Matlab中进行分析。 混合编程能够在Matlab里通过调用LabVIEW控制图形界面(GUI)来实现,在LabVIEW界面中可以以交互模式实现应用程序中的控制和仪器采集,并将实时读到的数据传回到Matlab中,在Matlab中通过Matlab函数实现数据的处理和分析。通过搭配混合编程,应用程序可以以GUI形式呈现,对于数据的处理和分析就更加方便快捷。混合编程,实现了内容丰富,带GUI的整合式应用程序开发,大大提高了应用的工程化和实用性。 总之,Matlab与LabVIEW混合编程可以扩展性能,结合其功效和优点来,提高了编程系统的工程化、可扩展性和可维护性。这种混合方法能够帮助编程专业人士减轻工作量、提高效率、降低成本,从而在许多领域中提供高效的数据分析和控制工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值