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();
浙公网安备 33010602011771号