GIS~沧海浮沉

导航

C#与Matlab混合编程

这段时间一直在折腾MATLAB,要用神经网络做交通方面的预测.刚开始对MATLAB这个软件是一窍不通,不过还好,这个软件的语言和C语言差不多,很简单.因为我不是要精通它,只是为了现学现用.有了目标所以学起来也挺快的.今天刚刚从网上了买了个倒版的MATLAB R2007a,这个是可以和C#进行混合编程的.原先我们都是用MATLAB做好网络模型训练完成后,得到权值阀值,再写算法在C#中重构,很麻烦!现在希望可以通过它们的混合编程,让预测做的简单.

第一步:安装.netframwork与MCR:.netframwork在安装完vs.net后,也就安装好了.再安装MCR:安装文件保存在matlab的安装目录toolbox下,C:\Program Files\MATLAB\R2007a\toolbox\compiler\deploy\win32

第二步完成编译器的设置:
命令窗口输入mbuild -setup和mex -setup,都选择Microsoft Visual/c/c++ version 7.1 in "ptah loation"\Microsoft Visual studio.NET 2003选项。其中ptah loation为vs.net的路径名。

下面是MATLAB和C#混合编程的一个简单的例子.

首先在MATLAB中写下.m程序,如下:
function test(h,D)

for x=-10:0.1:10
    if x>D
        y=h;
        hold on;
        plot(x,y)
    else if x<-D
        y=-h;
        hold on;
        plot(x,y)
        else
            y=h/(D*x);
            hold on;
            plot(x,y)
        end
    end
end
 
保存为test_cs.m


在MATLAB R2007a中输入deploytool命令(在matlab6.5中输入comtool),打开Matlab Build For .net窗口新建个工程,在此工程中“Add files”即填加test_cs.m这个文件,build即可生成COM组件,为test_cs_1_0.dll,即为我们将在C#中引用的COM组件。

Build时matlab已经自动将此dll在注册表中注册

不过之前我们还需做一个准备工作,打开开始菜单“运行”,输入regsvr32 "matlab安装路径\bin\win32\mwcomutil.dll",即对mwcomutil.dll进行注册(这个dll是matlab下作的任何com组件都要用到的dll),下面 我们在其他编译器下调用时就可以用了。

下面即可在C#中调用dll文件:
"引用"右击,选择COM,找到test_cs_1_0.dll,填加。
再写入以下代码:
            matlab_cs.matlab_csclassClass tc = new matlab_cs.matlab_csclassClass();
            object m = 4, n = 5;
            tc.test(m, n);
            Console.ReadKey();

posted on 2009-08-14 15:25  GIS_Zhou  阅读(8662)  评论(2)    收藏  举报