Matlab与C#混合编程图文说明

4星(超过85%的资源)
所需积分/C币:50 2014-12-23 15:02:16 726KB PDF
164
收藏 收藏
举报

Matlab与C#混合编程图文说明,每个步骤都有图文说明,较详细。 利用Matlab在矩阵运算上的强大优势,使C#程序在计算大矩阵上获得较大的提速,满足对时间的要求。 示例代码下载地址:http://download.csdn.net/detail/bqrmt/8290393
在类文件的头部,添加 using,内容如下: using Math Works. MATLAB. NET.Arrays;,并修改类类 为 Interface和相应的接口名。并注意接口名与命名空间名不能一样。如卜图所示: using System using System. Collections. Generi using System. IO using System. Linq using System. t using mathWorks. MATLAB. NeT array namespace DemoTestInterfac public interface IDemoTes 添加所需要实现的 Matlab函数声明,本例中实现的是两个矩阵的乘法,添加声明,其中 MWNumericArray是 Matlab与C#的变量转换中间类,在文章第11页有具体细节的解释。此 处,只需要给出主函数的声明,子函数不需要声明。如下图所示: MWNumericArray Matrix Multiply(mwnumericArray srcMat 1, MWNumericArray srcMat2) namespace Demofest interfa ibic interface RemoTest MWNumerictrray MatrixMultiply(MWN-mericArray srcHat1, Humeri cArray srclat 2) 生成此接口文件,待调用 Matlab相关据作 编写需要实现的主函数,函数名需要与C#声明的涵数名相同。如果需要使用到子函数, 并编写子函数,此处使用子函数,将矩阵乘以1。由于木文只是一个示例,所以具体的变量 保护的措施,建议最好在匚#调用 Matlab之前就做好,结合本例,如两个矩阵不一样人小等 等。注意主函数中的“ double”,如果希望主C#调用的结果是 double型的,此处需要强制转 换成 double型,其它类型则以希望输出的变星类型改置。文章第11页有详细讲解。 F function dstmat=MatrixMultiply(srcmat 1, srcmat 2) 白%示例代码,实现两个矩阵相乘,并且调用子函数 %子函数将矩阵乘以1,实际上无任何意 %只是为了示例子函数在编译时的使用方法 dstmat=srcmat lxsrcmat 2 dstmat=double(SubFun(dstmat )) -function dstmat=SubFun(srcmat 白%此函数只为示范调用时,有子函款的情况下如何编译 %此功能无任何意义,将矩阵乘以1 dstmatesrcmat* 1 end 新建一个 Matlab工程,可以由Fle->NeW-> Deployment Project创建,或者直接在 Command Window中输入 deploytool创建,如下图: 4 Deployment Project New lewOpen Name: Untitled1.prl Location: E:\TotalFiles\ Matlab T E. Windows Standalone Application OK[Cance 修改工程名,适合自己习惯,这里使用 Matlab Multiply,prj 修改Type,为 Net Assembly,此步骤非常重要。 A Deployment Project Newv Open Name: MatlabMultiply-prj Location: E: TotalFiles iMatlab' 5DE# LE\Multiply yp NET AssEmbl 匚0K Cancel 出现界面如下图所示: NET AssEmbl 1口x 需 MatlabMultiply prj 当 Build Packa 955EI Place functions here that you want to access from NET managed code (i.ea public methods). Add class Shared resources and helper files Place images, data files, and GUIs (fig files) here if referenced by any functions Also place herer o Functions called using eval (and its variants) o Functions not on the MATLAB path ● Private functions LAdd files/directories 选择 Add class,根据自己习惯,以方便识别为原则,添加 Matlab的类名,这里使用CS, 并将主函数拖动到此处。如果需要使用到子函数,将子函数拖动到 Shared resources中。如 下图所示 NET Assembly 儡 MatlabMu| tiply prj Build Package Clas zg MatrixMultiply [Add fil Add class] Shared Resources and Helper Files Subfun,m Add files/directories 选择界面右上方的齿轮,在弹出的下拉菜单中选择 Settings,进行相关配置 New proiect d Open Proj Rename Project Add class Add mCr 档Bu 宽P dockage Settin Help 在弹出的界面中,需要设置两个地方,一个是Net设置,另一个是 Type Safe aPI,在.Net设 置中, Microsoft framework默认选择是 default,将此处按照目标环境修改,如VS20o8就选 择3.5,VS2010选择40。这里选择40 General Tcolboxes On Path Warning. NET Type Safe API Microsoft Framewor&(E0 A bly Tyi o Private◎ Shared r crypT tion Key filer Br Owe Close Help 在 Type Safe AP设置中,需要将上步骤生成的接冂文件复制到当前Mtab函数的文件夹 中,并在 Interface assembly中选中。如下图所示 pr ro ttings General Toolboxes On Path Warnings. NET Type Safe API V Enable type safe API) htMY译De: Tu Tey dl Brow NET interface Demo TestInteface. IDemoTest Namespace MatlabMultiply MEF metadata I Browse. I A址 bute assembly: \ Tot:5输译 ultipl Demo Testinterface dl[ Browse.. Close He 选择右上角齿轮旁边的生成按钮,生成需要的d文件。 A build Building Project MatlabMultiply Hide details Cancel link: lib -d E:\TotalFiles\ Matlab\ 5D113i3 \Multiply \MatlabMultiply'\src -w enable specified file mismatch -w enable: repeated file enable: switch_ ignored -w enable: missing lib sentinel -w enable: demo license -v class tCs:E:\ TotalFiles Mat1ab\5D编译 Multiply MatrixMultiply m-a E Tota1 Files\Mat]ab5D11编译 Multiply\ SubFun. ml Save to log file 生成的文件中一般需要用到的有如下三个文件,CS| Demo test: dll, MatlabMultiply Native dll 和 Demo testlnterface dll。特别的是,第二个文件,在 distrib文件夹中,有·个名字类似, 但是不带 Native的文仵,此文件不需要。第三个文件,是此前c#生成的接口文件。将此三 个文件复制到需要调用的工程中,并添加引用。下一节会给出具体调用方法。 日 MatlabMultiply distrib 图 CSIDemoTest,dl 图 Matlab Multiply, d e MatlabMultiply_overview. html e MatlabMultiplyNative dll readme tt Eo DemotestInterface, dll d Matlab Multiply prj MatrixMultiply.m Subfunm 调用 Matlab生成的d 新建一个工程,这里使用最简单的控制台程序 最近趵模板 NETFramework4·序你据獸认值 [提己安的模板 团Wmw体皮月程序 Sual C= 类中:Ⅵ;ua|C t VisuAL C++ 用于剑建命合行立用程序的项目 4其仲语 WP应用程序 制台应月样序 Sual O什tce A5 P NFT W=h血用程序 y sual .# p sldr ePuir L Silvering ht SP NET MVC2We应用序 Vsual ci ca silverlight反用程厅 y sual Ct 测试 其项巴类型 Silyeriql类库 试项目 WcF程 y sual -+ ASP. NET Dynamic Dara实体Web应用程序 J5ua|二 肩用 Windows Azure Tools visual c# 名称 TestMatlabDemo 位三 b\Istal-iles(gVS\PrajectELpP)-SMlatlab 浏(s 将上一节提到的三个d文件复制到该工程的文件夹下,并添加引用。文件位置也可以是在 别处,无特别的要求,仅仅是为了方便。同样也添加 MWArray dI,方法见文章开始处 ∞o添力引用 NETc0M项目浏览最近 Look in: Test Matlab Demo 6园 Name Date modified T . bin 2014/12/2013:48Fi 2014/12/2013:48Fi Properties 2014/12/013:48 FI CSIDemoTest dll 201412/2013:1AJ 必 MatlabMultiply Native dll 2014/12/2013:31A s Demo TestInterfacedll 2014/12/201326 File name CSIDemo Test d""MatlabMultiply Native dl Demo Test Interface es of type:组件文件d:i manifest 确定 取消 在代码中添加 usIng,一共有四个,如下图所示: using Math Works. MAtLAB. NET. arrays using Math Works. MATLAB. NET Utility using MatlabMultiply using MatlabMultiply Native -using systern using System. Collections. Generic using System. Ling using System. Text using MathWorks. MATLAB. NET. Arrays using MathWorks. MATLAB. NET Utility using MatlabMultiply using MatlabMultiplyNative 以 Matlab三个文件中的第一个文件 CSIDemo test. dl的文件名 CSIDemotest为类名,实例化 个类。然后编程 tatic void Main(string[ arg doubl rcMatl = new doubles, 3] 1,2, E double. srcMat2= new double[3, 3 CSIDemoTest multiTest = new CSIDemoTest O doublel, j dstMat =(doubleL, ])multiTest MatrixMultiply (MWNumericArraysrcMat1, (MWNumericArraysrcMat2) ToArray( Console. Readkey 运行并得到结果如下 doublel] dstMat=(double ])multiTest. MatrizMu MN能iA回4 dstMat double3 cArray)ar [0,0]30.0 nsole. rea驱E( 0,124.0 0,2]18.0 1,0]840 n,169.0 [.,2]540 [2,0]1380 [2,1140 22]900

...展开详情
试读 11P Matlab与C#混合编程图文说明
立即下载
限时抽奖 低至0.43元/次
身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
zhz280428938 下下来还没具体看,希望有帮助
2018-08-17
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 分享宗师

关注 私信
上传资源赚钱or赚积分
最新推荐
Matlab与C#混合编程图文说明 50积分/C币 立即下载
1/11
Matlab与C#混合编程图文说明第1页
Matlab与C#混合编程图文说明第2页
Matlab与C#混合编程图文说明第3页

试读结束, 可继续读1页

50积分/C币 立即下载