C#Matlab混编——基于ASP.net空网站实现网页调用

考虑到算法模型较多、计算量较大、图形化处理等问题,利用原有的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的函数文件,功能是实现求平均数:

function [mean] =test1( x)

n=length(x);

mean=sum(x)/n;

end

 

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配置)。

posted on 2017-04-26 20:14  小鱼儿fish  阅读(440)  评论(0编辑  收藏  举报