Vis l matcom4.5安装怎么用

用MATCOM实现VC++对MATLAB中.m文件的调用_论文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
您可以上传图片描述问题
联系电话:
请填写真实有效的信息,以便工作人员联系您,我们为您严格保密。
用MATCOM实现VC++对MATLAB中.m文件的调用
||文档简介
中国最大最早的专业内容网站|
总评分0.0|
&&M​A​T​C​O​M​是​M​a​t​h​T​o​o​l​s​公​司​推​出​的​一​个​能​将​.​m​文​件​转​化​成​相​同​功​能​C​+​+​代​码​的​工​具​.​相​比​M​A​T​L​A​B​引​擎​方​法​和​M​A​T​L​A​B​自​带​的​编​译​器​C​o​m​p​i​l​e​r​方​法​,​用​M​A​T​C​O​M​转​化​代​码​要​简​单​和​方​便​得​多​.​本​文​将​结​合​作​者​编​程​经​验​,​以​V​C.、​M​A​T​L​A​B.和​M​A​T​C​O​M.为​例​,​详​细​介​绍​如​何​利​用​M​A​T​C​O​M​进​行​V​C​+​+​对​M​A​T​L​A​B​中​.​m​文​件​的​调​用​.
试读已结束,如果需要继续阅读或下载,敬请购买
你可能喜欢 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
IMSHOW(MYGRAYPIC)
下载积分:300
内容提示:基于MATLAB的输入、输出介面)SYNAPTICAD。9MATLAB7..
文档格式:PDF|
浏览次数:17|
上传日期: 11:04:54|
文档星级:
该用户还上传了这些文档
IMSHOW(MYGRAYPIC)
官方公共微信基于Matcom平台的VC++与Matlab混合编程地震正演模拟
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于Matcom平台的VC++与Matlab混合编程地震正演模拟
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口二次元同好交流新大陆
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
段晓君 杜小勇 易东云
(国防科技大学系统工程与数学系 长沙 410073)
Matlab是一种很受广大工程技术人员喜爱的数学工具软件,为我们提供了强大的矩阵处理和绘图
功能。由于它的界面功能比较弱,给我们开发界面友好的应用或演示系统带来不便。文章介绍了
一种用Matcom将Matlab函数转换为VB中可用的动态链接库的方法,操作简单易行。
Matcom Matlab函数 VB 动态链接库
Matlab是MathWorks公司开发的一种工程计算语言。用这个交互系统可以解决很多工程计算问题,
特别当涉及到矩阵和矢量形式的问题时,Matlab提供了强大的矩阵处理和绘图功能,而用C语言或
Fortran语言来解决相应的问题则编程量比较大。Matcom是一个从Matlab到C++的编译器,它可以
节省用户的运算时间和内存要求。Math-Tools公司利用Matcom技术编写了Mideva工具软件,它可
以借用C++编译器将Matlab下的M文件转换为可被Vis
lBasic、Exe-cl以及Dephi调用的DLL(动态
链接库),亦可编译成独立的标准可执行文件,不需装载任何附加产品。本文就M文件到DLL的转换
以及在VB中调用这一类DLL两个问题做了一些探讨。文中,我们是基于Mat-lab5.0、VC5.0、VB5.0、
Matcom4.0或相应的更高版本的软件进行讨论的。
1 M文件到DLL的转换
将Matlab的数值计算和绘图功能内嵌到VB中,需要用到Matcom工具。可在网上下载MIDEVA及Matcom,
安装Matcom4.0可按照如下步骤:
step1 在目录下找到Mat4vc.exe,运行直至完成;
step2 在Windows98或95的Dos环境下,运行Mc4reg.exe,并按提示的要求输入使用日期(开始至结束
区间:date\month\year&date\month\year),并由此产生密码;
step3 启动软件MIDEVA。第一次启动时,要输入step2中生成的密码,并按要求输入Matlab和VC所在
要详细了解使用方法,可利用AcrobatReader3.0阅读文件Matcom40\doc\usr-guide.pdf。要将一个m
文件编译成DLL,可进行如下操作:启动运行Matcom4的Mideva,点击菜单File/Compiletodll,选择需
要转换的m文件(该文件是你希望它能够作为函数被其他集成环境调用的m文件,假设文件名为
yourfile.m)。值得注意的是,Mideva对M文件有一定的要求,即该文件必须是一个函数,否则需先在
Matlab中将它编辑成无输入无输出的函数,再按照上述操作进行转换。编译之前,还可以在Mideva
集成环境的菜单Configuration中配置编译的参数为Debug模式或Release模式。编译完成之后,在对
应的Debug或Release目录下,可看到一些编译生成的文件。在VB集成环境中需要用到的文件有两个
:yourfile.dll(DLL文件)和yourfile.bas(在VB中声明DLL的模块文件)。为在VB中能调用这类DLL,
要求将yourfile.bas和matlib42.bas加入到你的工程中,并将yourfile.dll以及matlib42.dll拷贝
到工程所在的目录下。编译后,我们在VB中的函数名为yourfileinout,其中,in和out分别为函数的
输入参数和输出参数的个数,例如c=conv(a,b),编译转换后的函数名为conv21。我们可以在VB下直
接调用相应的DLL使用计算功能,不需再到Matlab下进行编译执行。虽然要用到VC,但Matcom不要求
用户编写C++的转换源代码,只需直接在VB下调用模板即可。这样,用户不需了解较底层的编程语言,
只要基于Matlab和VB,加上Matcom转换工具即可做出涵括数值计算、图形显示、数据库处理及智能
交互界面等的软件。
2 数据接口
VB中要使用DLL,你的工程中需包含DLL的声明文件即模块文件,还要将DLL拷贝到工程文件所在的目
录中。事实上,Yourfile.dll中的函数并不能直接与集成环境进行数据交换,它只能通过与文件句
柄类似的矩阵句柄进行接口。句柄用一个32位的矩阵整数表示,它们可被创建,也可被删除,通过它
们可以对矩阵数据进行操作,故而集成环境与DLL之间需要一个媒介。Math-Tools提供了一个单独
的C++库文件Matlib42.dll以及相应的模块文件Matlib42.bas,它相当于VB集成环境与DLL之间的代
理,在这一DLL中包含有20多个矩阵句柄操作函数和800多个从Mat-lab转换而来的矩阵函数。这里
列出了Matlib42.dll提供的比较常用的14个矩阵句柄函数:
函数名&&&&&&&&&& 功  能&&&&&&&&&& 返回值
mtInitM()&&&&& 请求允许使用库&&&&&&& 无
mtExitM()&&&&& 结束库使用权限&&&&&&& 无
MtCreateDo leMatrix(rows,Cols,isc)&& 分配一个大小为[rows,cols]的矩阵句柄&& 新矩阵的句柄
MtDestroyMatrix(x)&&& 释放由上一函数创建的矩阵句柄&& 无
mtGetR(x,row,col,y)&& 将实数矩阵x的元素[row,col]的值赋给y&& 无
mtSetR(x,row,col,y)&& 将y的值赋给实数矩阵x的元素[row,col]&& 无
mtGetI(x,row,col,y)&& 将图像矩阵x的元素[row,col]的值赋给y&& 无
mtSetI(x,row,col,y)&& 将y的值赋给图像矩阵x的元素[row,col]&& 无
mtGetM(x)&& 取得矩阵x的行数&&& 矩阵x的行数
mtGetN(x)&& 取得矩阵x的列数&&& 矩阵x的列数
MtGetNumberOfDimensions(x)&& 取得矩阵x的维数&& 矩阵x的维数
mtIsChar(x)&& 判断x是否为一个字符串矩阵&& Tr/False
MtIsComplex(x)&& 判断x是否为复数矩阵&&&&& Tr/False
MtSetString(x)&& 将x设置成一个字符串矩阵&& 无  
编程时必须调用mtInitM来初始化库文件,即请求允许使用转换的DLL,并调用mtExitM来结束这种请
求。另外,还要使用其它的矩阵句柄函数来分配、访问和释放矩阵句柄。
3 应用举例
事实上,最简单的例子是直接调用matlib42.dll中提供的inv21来计算矩阵的逆。为了让读者更好地
领会这一转换的意义和操作过程,我们给出另外一个例子:在VB中打开一个记录有十种股票五百多
天的收盘价及成交量的Acess数据库,并将指定的一列数据传送给Matlab的函数,由该函数完成股票
数据的动态数据曲线绘制。
为了打开数据库文件并显示数据库的数据,我们定制了三个窗体&&MDI风格的主窗体,只有一个打
开数据库的菜单项和一个CommonDialog控件;子窗体1,用于显示数据库的表项结构,包含有ImageList
控件和TreeView控件各一个,其中,ImageList用于存放TreeView的图标,TreeView用于显示表项;
子窗体2,用于显示选定表项的数据,包含有Data控件、DbGrid控件和Com-mandButton控件各一个。
在通过菜单项选择要打开的数据库后,子窗体1显示数据库的表项结构,鼠标双击某一表项,子窗体2
显示该表项中的数据。图1就是运行VB中程序打开数据库文件后的画面。
下面我们详细介绍一下VB中如何调用Matlab函数转换过来的动态链接库。
Matlab函数的源程序为DynDataPlot.m,输入参数和输出参数各一。源程序如下:
function DynPlotData(Data)
T=length(Data);
TestPlot(T);%初始化动态显示数据的窗口
MaxY=max(Data);
fork=1∶T 
y=Data(1∶k); 
TestPlot(T,x,y,MaxY);%动态绘制数据曲线
function TestPlot(DataNum,x,Data,MaxY)
switch nargin
case1,%只有一个输入参数,初始化动态显示数据的窗口 
&&&& fhnd=findobj(allchild(0),′flat′,′Tag′,′TMWWaitbar′);
  if~isempty(fhnd)   
&&&& close(fhnd);  
&&&& fhnd=figure(′Name′,′ShowDbData′,…   ′Units′,′points′,′Resize′,
&&&& ′off′,…   ′CreateFcn′,&,′NumberTitle′,′off′,…   
&&&& ′IntegerHandle′,′off′,′Men ar′,′none′,′Tag′,′TMWWaitbar′);  
&&&& AxesHnd=axes(′Parent′,fhnd,′XLim′,[0DataNum],…   ′Position′,
&&&& [.1.1.8.75],′FontSize′,[11],…   ′Box′,′on′,′XGrid′,′on′,
&&&& ′YGrid′,′on′);  
&&&& title(′PlotDynamicCurve′);
&&&& HndList=[AxesHnd]; 
&&&& set(fhnd,′HandleVisibility′,′callback′,′UserDa-ta′,HndList);
case4,%四个输入参数时,动态绘制数据曲线  
&&&& fhnd=findobj(allchild(0),′flat′,′Tag′,′TMWWaitbar′);
&&&& HndList=get(fhnd,′UserData′);
&&&& DataLen=length(Data);
&&&& if DataLen==1
&&&&   set(HndList(1),′YLim′,[0,MaxY*1.2]);
&&&&   line(′Parent′,HndList(1),′XData′,[0:1],′YData′,
&&&&&&&&&&&& [Data(1)Data(1)],…   ′Color′,[001],
&&&&&&&&&&&& ′EraseMode′,′none′);  
&&&&&&&& end  
&&&&&&&& if DataLen&1
&&&&&&&&    set(HndList(1),′YLim′,[0,MaxY*1.2]);
&&&&&&&&    axes(HndList(1));
&&&&&&&&    line(′Parent′,HndList(1),′XData′,[DataLen-1:DataLen],
&&&&&&&&&&&& ′YData′,…    Data(DataLen-1:DataLen),′Color′,[001],
&&&&&&&&&&&& ′EraseMode′,′none′);
&&    end
  end%case
  return
按照前面描述的步骤,我们可以将这一函数转换为dyndataplot.dll,同时得到动态链接库的声明
模板文件dyndataplot.bas。在VB中添加了该声明文件,将动态链接库拷贝到VB工程文件的当前目
录下,并给子窗体2的CommandButton添加如下代码:
Private S Command1Click()
&&&& Dim i,n,m As Long&&&& '注:概念性错误,i,n为Variant
&&&& Dim strMSG As String   &请求允许使用Matlab的文件
&&&& Call mtInitM   
&&&& Dim tmp1,tmp2 As Long   ′创建矩阵句柄
&&&& tmp1=mtCreateDo leMatrix(1,n,0)
&&&& tmp2=mtCreateDo leMatrix(1,1,0)   &取得数据库表中一列数值   
&&&& m=DataGrid.datDataCtl.Recordset.Fields.count   
&&&& DataGrid.datDataCtl.Recordset.MoveFirst   
&&&& n=DataGrid.datDataCtl.Recordset.RecordCount
&&&& Fori=1 To n-1
&&&&     &将指定数据库表项中的第二列有效数据的第I个记录的值取出    
&&&& temp=DataGrid.datDataCtl.Recordset.Fields(2)
&&&&     &将取得的值附给矩阵句柄tmp1的第I个单元
    Call mtSetR(tmp1,1,i,temp)
    DataGrid.datDataCtl.Recordset.MoveNext
&&    Next   
&&&&&&&& ′调用Matlab的函数
&&    Call DynPlotData11(tmp1,tmp2)
&&    ′释放矩阵句柄
&&    Call mtDestroyMatrix(tmp1)
&&    Call mtDestroyMatrix(tmp2)
&&    &终止Matlab函数的调用权限
&&    Call mtExitM
&& 这样在点击&绘制数据曲线&的按钮后,就可调用转换后Matlab的函数将数据表项中的第二支
&& 股票的数据曲线动态地绘制出来。其实,此技术的真正优势在于可充分利用Matlab的强大矩阵
&& 计算功能,例如可对股票趋势预测模型进行实时处理和估计,图2给出了股票预测的相关趋势走
&& 向图形。
&& 通过这一例子,不难看出将Matlab的函数转换为VB中可以调用的动态链接库的操作简单且调用
&& 方便。能够充分集成VB的界面开发的能力和Matlab的数据处理和绘图功能,对广大的工程技术
&& 人员不能不说是一个福音。
阅读(1198)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_085066',
blogTitle:'\t\t将Matlab函数转换为VB可用的DLL',
blogAbstract:'将Matlab函数转换为VB可用的DLL
段晓君 杜小勇 易东云
(国防科技大学系统工程与数学系 长沙 410073)
Matlab是一种很受广大工程技术人员喜爱的数学工具软件,为我们提供了强大的矩阵处理和绘图
功能。由于它的界面功能比较弱,给我们开发界面友好的应用或演示系统带来不便。文章介绍了
一种用Matcom将Matlab函数转换为VB中可用的动态链接库的方法,操作简单易行。
Matcom Matlab函数 VB 动态链接库',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:5,
permalink:'blog/static/',
commentCount:1,
mainCommentCount:1,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'-1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}1336人阅读
IPL---INTEL 图象处理库 免费 源代码不公开openCV--INTEL 图象处理库 免费 源代码公开IPP--IPP--INTEL 集成开发环境库(图象处理、信号处理等) 收费 源代码不公开visDSK---MICROSOFT 图象处理库 免费 源代码公开在openCV没有出现时,我用的是visDSk,现在很少用了,因为 VISDSK能做的,OPENC都能做,在速度上openCV还有intel 公司的mmx和ssl优化。至于matlab, 当然是个好东西! 你可以把MATLAB 的M 文件转化为C++代码.当然要用MATCOM了.
就是说,openCV在代码的开放性和费用上占有绝对的优势了。但不明白openCV为什么要免费?是不是还有BUG?它的效率怎么样?m文件与C/C++嵌套的方法有好几种?不知道有什么优劣?另外,从MATCOM转化出来的代码可读性很差,据说效率也很很低?是不是这样?
这是INTEL的商业策略,如此可提高用户的忠诚度。 见笑。
是不是INTEL让我们大家来为他DEBUG。当到一定时间,再收取我们的费用。
openCV提供的算法多不多?大家在项目开发过程中有没有用这个平台的?另外,大家认为最成功的机器视觉软件平台是什么?
OpenCV是针对Intel的硬件技术进行了优化的软件函数库,用了OpenCV,用户可以节省大量的前期开发,也可象Linux那样共享源码,不但改进,但就是离不开Intel了。
OpenCV算不上真正的源代码开放,因为OpenCV用到IPL库的,但IPL不开放源码。
已经没有IPL了,IPL已经是IPP的一部分了,不过还是可以下载早期版本。IPP的教育版50$,不是很贵,集成大部分算法1D signal processing, 语音信号处理;2D signal prodessing, image processing, video processing. Open CV的模式将很类似于IPL.
原帖地址:
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:305699次
积分:2956
积分:2956
排名:第6779名
原创:25篇
转载:119篇
评论:89条
(3)(2)(1)(4)(5)(1)(6)(1)(1)(1)(2)(1)(2)(3)(3)(1)(1)(2)(4)(2)(3)(10)(5)(2)(4)(1)(9)(7)(7)(6)(1)(5)(4)(1)(2)(1)(2)(2)(6)(1)(9)(7)(4)

我要回帖

更多关于 matcom4.5 的文章

 

随机推荐