在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
考虑到算法模型较多、计算量较大、图形化处理等问题,利用原有的C#软件开发平台,没有提供足够的工具函数与计算能力,因此采用matlab与.net混编模式。 1. Matlab.net混编技术简介MATLAB作为一款功能强大、效率高、交互性好的可视化高级计算机语言,在数值计算、自动控制、数字信号处理、图形处理、仿真、神经网络、小波分析等各个领域有着广泛的应用。MATLAB程序接口的出现,解决了matlab与其他程序之间的数据交换问题,通过接口与其他编程环境交互,各取所长,充分发挥MATLAB计算的优点所示。 通过使用MATLAB Builder NE,将MATLAB函数封装入.NET中类的方法,这些类就可以像其他托管代码一样被.NET环境下的所有语言调用,例如C#、VB.NET、J#、C++.NET、F#等语言,甚至是网络程序也可以调用,例如ASP.NET。 2. 混合编程的实施1.配置编译平台 选取matlab2014a和vs2012,均为64位设置,同时需要注意的是一般matlab平台的版本要高于vs。 2.编写运行.m文件 创建名为test1.m的函数文件,功能是实现求平均数:
3.创建动态链接文件 在命令窗口输入并运行deploytool: 跳出编译选择窗口,选择library complier: 选择.Net Assembly,添加需要编译的函数文件,可更改组件名称及类名,参数设定后,选择package。 动态链接库文件创建好后,会跳出弹窗,我们需要的动态链接库文件在for_redistribution_files_only文件夹中: 4.创建空网站 打开vs2012,文件——新建——网站——Asp.net空网站,创建一个空网站; 右击网站项目名称,添加web窗体; 添加该网页前台内容,设置一个Button控件和一个Textbox控件: <asp:Button ID="Button1" runat="server" Text="计算" onclick="Button1_Click"/> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 添加网页后台内容: 1)命名空间添加,共三个,两个固定,一个是你自己命名的动态链接库组件名称: using MathWorks.MATLAB.NET.Arrays; using MathWorks.MATLAB.NET.Utility; using test1; 2)添加函数内容: protected void Button1_Click(object sender, EventArgs e) { MWNumericArray arr1 = new int[] { 1, 2, 3, 4, 5 }; Class1 Tc = new test1.Class1(); MWArray result = Tc.test1((MWArray)arr1); this.TextBox1.Text = result.ToString(); } 5.添加matlab引用 右击项目名称,添加引用,在引用管理器里选择浏览,添加两个引用: 1)一个引用是在你的matlab安装目录下的MATLAB\MATLAB Production Server\R2014a\toolbox\dotnetbuilder\bin\win64\v2.0,选择后添加到列表中; 2)另一个引用是在你创建的m文件动态链接库文件所在,也就是for_redistribution_files_only文件夹中的dll文件; 最后将两个引用添加后,确定即可。 6.环境配置 最最重要的一环来临了,之前这个步骤走了好多弯路,因为一旦网页调试运行,就会出现初始化值错误的问题,经过不懈的努力终于找到了解决的办法,网上提供的很多办法也尝试过,可是木有用。。。。 因为我的matlab和vs均是64位的,所以创建的dll也是64位的,但是vs2012默认只会调用其32位版本,因此需要修改IIS配置,方法如下: 通过修改注册表来实现vs调用x64版IIS Express; Cmd-regedit后到注册表界面: HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\WebProjects,右击——新建——DWORD,名称为“Use64BitIISExpress”,并修改属性值为“1”。 7.运行网站 关掉vs后,重新打开运行网站,可以实现网页调用成功。 8.如果后来再打开运行项目时,出现同样的错误,可以进行一下操作(打开vs节目,网站——IIS配置,估计是为了重新启动IIS配置)。 |
请发表评论