



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#与Matlab混合编程这段时间一直在折腾MATLAB,要用神经网络做交通方面的预测.刚开始对MATLAB这个软件是一窍不通,不过还好,这个软件的语言和C语言差不多,很简单.因为我不是要精通它,只是为了现学现用.有了目标所以学起来也挺快的.今天刚刚从网上了买了个倒版的MATLAB R2007a,这个是可以和C#进行混合编程的.原先我们都是用MATLAB做好网络模型训练完成后,得到权值阀值,再写算法在C#中重构,很麻烦!现在希望可以通过它们的混合编程,让预测做的简单.第一步:安装.netframwork与MCR:.netframwork在安装完后,也就安装好了.再安装MCR:安装文件保存在matlab的安装目录toolbox下,C:Program FilesMATLABR2007atoolboxcompilerdeploywin32第二步完成编译器的设置:命令窗口输入mbuild -setup和mex -setup,都选择Microsoft Visual/c/c+ version 7.1 in ptah loationMicrosoft Visual studio.NET 2003选项。其中ptah loation为的路径名。下面是MATLAB和C#混合编程的一个简单的例子.首先在MATLAB中写下.m程序,如下:function test(h,D)for x=-10:0.1:10 if xD y=h; hold on; plot(x,y) else if x.dll文件为接口,它实际上不含任何实现,都是调用另一个.ctf文件来完成具体的功能。3、在c#中,必须引入mwarray.dll才能拥有在.net中进行矩阵运算所需要的一切。虽然matlab help中只是说推荐,但一般的应用中,只是进行一部分函数的调用,而不是去取得整个运行结果。这个.dll是必须引入的。有时mclmcrrt74.dll这个文件也需要引入。根据具体的要求,需要引入的文件也有所差别。4、生成一个实例,并对.net组件所输出的结果进行数据类型的转换,以符合.net编程环境中对数据类型的要求,这个在以前我已经讲过,这里就不再多说了。关键是掌握如何把一个矩阵(在matlab中,一个m*n的矩阵对应.net中的一个1*(m*n)的数组)转换成数据类型一致的数组。目前所有的matlab数据类型(无论什么类型,都可以把它看成一个矩阵,这样就可以利用数组的思想来思考)都可以进行转化,具体的可能需要经过实验才能符合各自的要求。虽然matab对.net的支持不如它对c+支持的功能强大,但也已经满足了我们实际应用的需求。如果我们可以把大部分的运算都放在matlab里面完成,数据转换的数量又少,那么整个系统的运行速度与效率还是挺高的。/lemonfamily/archive/2007/01/29/1497527.aspx2.使用装matlab,添加引用VB。Net Matlab = CreateObject(matlab.application) MatLab.MinimizeCommandWindow() strMatLab = t=2:0.2:4*pi;y=sin(t);plot(t,y) /这只不过是一个例子,求特征值的string要自己查 MatLab.Execute(strMatLab) /t/20040621/19/3111008.html3.矩阵转换示例用于将matlab的返回值矩阵传递到C#规范的矩阵中MWArray ResOut = null; /用于值输出的matlab矩阵ResOut=GTN.GetMatchNo(1,MainAdd, ModelAdd, FName.GTM(), Vaval);MWNumericArray temp = (MWNumericArray)ResOut0;/矩阵转换Array netInterfaceMatrix = temp.ToArray(MWArrayComponent.Real); /c#规范的矩阵double, location = (double,)netInterfaceMatrix; /变态的强制类型转换/blog/cns!1B1AC4E08A659077!1836.entry4.心得等最近在搞matlab与c#混合编程,发现了一些问题,说出来大家讨论一下:(1) matlab中的乘幂运算是非常好用的,但变成com组件后被C#调用起来真是问题多多,我现在束手无策。c#不支持sqrt的写法,连后面是小数都会抛出异常,真是让人郁闷。(2)matlab中的画图功能在c#能得到很好的应用。(3)做成的com组件不论是在matlab中生成还是在c#中的初始化都比较耗时间。所以建议大家在这两者混合编程时,尽量考虑清楚那部分功能在那个程序中实现,而不是一股脑的将计算功能交给matlab,将GUI功能交给c#,这样不仅使程序非常臃肿,而且耗时耗力,出力不讨好。-我实在不甘心自己写的一堆matlab程序就这样白白泡汤了,自己又重新想了一下,经过测试我的想法是可行的。1 matlab中的乘幂运算在c#中的解决方法: (1)乘幂计算的原始matlab函数是power(x,y),在c#中的函数是Math.Pow(x,y),所以可以将matlab中的乘幂运算(是指幂不是整数时)统统写成power(x,y)形式。缺点:程序写起来和c#一样很麻烦,而且matlab7.4a也没有向c#中的函数提示功能,郁闷ing (2)若matlab程序中改动太多且不好改时,可以将乘幂运算交给c#。2matlab传参数给c#时,若是复数是一定要注意用MWComplex
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年北京市租房中介服务合同范本
- 2025年社会工作者职业水平考试中级实务模拟试卷:社会工作团队协作试题
- 2025年广东省设备采购合同范本
- 复旦附中英语期中考试题库
- 2025年大学辅导员考试题库:学生职业生涯规划职业选择试题解析
- 2025年护士执业资格考试题库(内科护理学专项):实战演练与解析
- 2025技术授权合同会计学堂
- 2025标准家居装饰装修协议书
- 高一英语牛津必修单元测试题与解析
- 厂房租赁合同争议解决途径与案例
- 危险货物道路运输规则第4部分:运输包装使用要求(JTT617.4-2018)
- 2024年四川省成都市中考数学真题及答案解析
- 部队军事体能训练课件
- 狗猫鼠全文赏析课件
- 国有企业外部董事个人履职报告
- 船舶拆解资金管理办法
- 皮带机安全知识培训
- 增值税发票培训知识课件
- 2025年对酒驾醉驾问题谈心谈话记录内容范文
- 【《以儿歌为载体的小班幼儿生活自理能力提升路径分析》11000字】
- 2025年《3~6岁儿童学习与发展指南》试题(+答案)
评论
0/150
提交评论