- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Matlab与C#混合编程的实现
Matlab 的基本数据单位是矩阵,它的指令表达式与数学、工程中常用
的形式十分相似,故用 Matlab 来解算问题要比用 C,FORTRAN 等语言完成
相同的事情简捷得多,并且 mathwor 也吸收了像 Maple 等软件的优点 ,使
Matlab 成为一个强大的数学软件。在新的版本中也加入了对 C,C#,FORTRAN ,
C++ ,JAVA 的支持。可以直接调用 ,用户也可以将自己编写的实用程序导入
到Matlab 函数库中方便自己以后调用,本篇中讨论的是在 C#中调用Matlab
来提高程序中矩阵运算的速度和效率,实现 C#和Matlab 的混合编程。
关于 Matlab 与 c# 之间一些数据类型的转换的方法,总结一下,最主
要的是要完成下面几个步骤:
1、同时安装.netframwor 与MCR (Matlab compile runtime )。这个
在装完 vs.net 与Matlab 以后,前面 2 个组件也就安装好了。
2 、利用 Matlab 自带的.nettool 工具将.M 文件转换成 .net 组件*.dll
文件为接口,它实际上不含任何实现,都是调用另一个 .ctf 文件来完成具
体的功能。
3 、在c#中,必须引入 mwarray.dll 才能拥有在 .net 中进行矩阵运算所
需要的一切。虽然 Matlab help 中只是说推荐,但一般的应用中,只是进
行一部分函数的调用,而不是去取得整个运行结果。这个 .dll 是必须引入
的。有时 mclmcrrt74.dll 这个文件也需要引入。根据具体的要求,需要引
入的文件也有所差别。
4、生成一个实例,并对 .net 组件所输出的结果进行数据类型的转换,
以符合.net 编程环境中对数据类型的要求,这个在以前我已经讲过,这里
就不再多说了。关键是掌握如何把一个矩阵(在 Matlab 中,一个 m*n 的矩
阵对应.net 中的一个 1* (m*n )的数组)转换成数据类型一致的数组。目
前所有的 Matlab 数据类型(无论什么类型,都可以把它看成一个矩阵,这
样就可以利用数组的思想来思考)都可以进行转化,具体的可能需要经过
实验才能符合各自的要求。
以上是 C#与Manlab 混合编程的主要思想,具体的代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Program p = new Program();
p.MatlabTest();
Console.WriteLine( 按任意键退出 ...);
Console.ReadKey();
}
// 测试 C# Matlab 调用
private void MatlabTest()
{
Console.WriteLine( 正在载入 Matlab for .NET
库);
DotNetTest.DotNetTestclass dt = new
DotNetTest.DotNetTestclass();
Console.WriteLine( 完成);
Console.WriteLine();
// 多项式
int demention = 3;
double[] dd = new double[demention];
dd[0] = 1;
dd[1] = 4;
dd[2] = 6;
您可能关注的文档
最近下载
- 中医外科学期末复习.pdf VIP
- 生产车间划线标识执行规范.pdf VIP
- EDA软件:Cadence Allegro二次开发_ CadenceAllegro数据库操作.docx VIP
- 物性表_威格斯 PEEK VICTREX® PEEK 450G.pdf VIP
- 让我们一起去追“星”!——两弹一星之核弹老人魏世杰 课件--2023-2024学年高二下学期爱国主义教育主题班会 (1).pptx VIP
- (2025秋新版)部编版二年级语文上册全册教学设计.pdf
- 《领导力》培训课件ppt.pptx VIP
- 运输车队长绩效考核表.xlsx VIP
- 驾校一点通摩托车科目一题库400题讲解 .pdf
- 印尼二手车市场研究及业务建议.pdf VIP
文档评论(0)