《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
查看: 9131|回复: 22
收起左侧

[教程] Matlab与C#混编系列

    [复制链接]
发表于 2011-9-9 21:25:01 | 显示全部楼层 |阅读模式
本帖最后由 lijinfeng042 于 2011-9-9 23:08 编辑

MATLAB与C#混编系列
--by lijinfeng042

第一章

近来一直使用Matlab和C# 混编,尝试了不少的例子,也可以说是有所了解,熟悉了流程,具体过程和一些错误及处理和朋友们分享一下,也算是作为近期工作的一个总结吧,希望对后来的朋友有所帮助.
一 配置环境
Matlab版本:Matlab2009a(7.8)
编译IDE:Microsoft Visual Studio 9.0 (VS2008 )

由于使用的是Win7 因此我选用了这一个7.9的Matlab版本,至于VS2008,那是由于近来学习C#,尝试使用,其实无论是做成C语言的dll抑或是C++ 甚至是.Net的 差别并不大,基本是一致的调用~

二 编译 & 引用
作为开篇的第一篇,主要介绍一下环境的设置和编译的过程,虽然网上有一些相关的资料,不过还是做一下介绍,以期让大家有个完整的印象.为方便大家,这里使用的是Matlab本身的例子,大家可以在帮助文档直接查看,程序在MATLAB Builder NE的帮助文档看到.文件在Matlab安装位置\toolbox\dotnetbuilder\Examples目录.
Matlab操作
  • 第一步 调出编译器
在Start-Matlab-MATLAB Builder NE选择Deployment Tool 或者使用命令 deploytool
第一步选择编译环境.png

  • 第二步  新建项目
新建工程.png

选择类型.png

  •    第三步   添加类(C#必须的啦,封装嘛)


添加类.png



  • 第四步 添加文件(m文件 资源文件 数据文件等)

添加文件.png


  • 第五步  编译dll


编译dll.png


          具体的话,直接看help的详细展开,看帮助完全足够了    http://www.kxcad.net/cae_MATLAB/toolbox/dotnetbuilder/ug/bp94ar4-3.html
        当然 使用命令行是最快捷了
        最简单的:mcc - W 'dotnet:命名空间,类名,Net版本, Private,local' 文件名
        多个类在后面继续 class{类名,文件名}

Visual Studio 操作
  • 在VS2008建立项目,控制台程序抑或是Windows 窗体程序均可 看需要了.
  • 引用 类库mwarray.dll.(位置matlabroot\dotnetbuilder\bin\architecture\framework_version\mwarray.dll.) 必须的,
  • 引用编译好的库dll (在编译保存路径distrib文件夹下的dll,其实我测试过scr文件夹下的也是一样的)
  • 在代码开头添加命名空间

  1. using MathWorks.MATLAB.NET.Utility;
  2. using MathWorks.MATLAB.NET.Arrays;
  3. using 编译的dll命名空间;
复制代码
具体的参考示例的图,基本是上面的内容.


三 实例
使用的例子是插入排序,
  1. function A=InsertSort(Array)
  2. for j=2:length(Array)
  3.     key=Array(j);
  4.     i=j-1;
  5.     while (i>0 && Array(i)>key)
  6.         Array(i+1)=Array(i);
  7.         i=i-1;
  8.     end
  9. Array(i+1)=key;
  10. A=Array;
  11. end
复制代码
InsertSort.m (202 Bytes, 下载次数: 19)
发表于 2015-9-11 11:06:31 | 显示全部楼层
为什么 你 的 行 ,我的 不行。
回复 支持 反对

使用道具 举报

发表于 2015-9-11 11:37:34 | 显示全部楼层
用.net,试了一次,ok了。3q
回复 支持 反对

使用道具 举报

发表于 2016-5-14 07:52:56 | 显示全部楼层
谢谢分享,支持一下
回复 支持 反对

使用道具 举报

发表于 2011-9-26 20:19:31 | 显示全部楼层
好文章啊!多谢楼主
发表于 2011-9-28 12:55:56 | 显示全部楼层
发表于 2011-10-2 19:44:29 | 显示全部楼层
楼主是牛人,我应该学习
发表于 2011-10-15 10:43:32 | 显示全部楼层
发表于 2011-11-1 12:43:44 | 显示全部楼层
我看不错噢,楼主果然是高人呀,谢谢!
发表于 2011-11-3 07:55:13 | 显示全部楼层
发表于 2011-11-3 09:04:00 | 显示全部楼层
谢谢楼主,很给力,来学习了。
发表于 2011-11-14 21:13:07 | 显示全部楼层
楼主是牛人。
发表于 2011-11-14 21:13:49 | 显示全部楼层
楼主是牛人。
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 蜀ICP备19014457号 

GMT+8, 2020-10-23 16:52 , Processed in 0.059990 second(s), 14 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表