当前位置: 网学 > 编程文档 > VB > 正文

Matlab与VB集成

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式
=“EngStringResult”

TextOutput.LinkMode = vbLinkManual

’返回执行结果并显示

TextOutput.LinkRequest

TextOutput.LinkMode = vbLinkNone

End If

End Sub

三、通过M文件

Matlab产生的M文件不能直接在VB中调用,可利用mcc将M文件直接编译成.EXE文件,然后在VB中声明下面三个API函数,最后使用Shell命令即可实现VB与Matlab的无缝集成。

1. 用mcc生成独立的外部应用程序。可使用如下两种命令:

mcc -p file.m 或 mcc -m file.m

2. 在VB中声明调用的三个API函数:

● Declare Function WaitForSingleObject Lib “kernel32”(ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

● Declare Function CloseHandle Lib “kernel32”(ByVal hObject As Long) As Long

● Declare Function OpenProcess Lib “kernel32”(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long,ByVal dwProcessId As Long) As Long

3. 示例代码:

Dim lTask As Long, lret As Long, lHandle As Long

’执行file.exe文件

lTask = Shell(“file.exe”, vbNormalFocus)

lHandle = OpenProcess(SYNCHRONIZE, False, lTask)

’等待进程执行完毕

lret = WaitForSingleObject(lHandle, INFINITE)

lret = CloseHandle(lHandle)

’ file.exe文件执行完毕后,继续执行应用程序

……

通过以上编码,应用程序可以在执行过程中调用.EXE完成特定的计算或图形功能后,再继续其执行过程,从而实现与Matlab的集成。

四、引入MatrixVB

MatrixVB是MathWorks针对VB提供的一个Matlab库,它提供了600多个函数,包括基本的数学运算和功能强大的信号处理、线性代数、串运算及图形图像处理功能等,为VB提供了强大的功能扩展。在VB中使用该数学工具包可避免重复性劳动,从而减少开发人员实现算法和界面设计的困难。

MatrixVB是一个独立的产品(可以从www.mathworks.com得到),其使用十分方便。MatrixVB安装完成后,只需在VB工程中引用Mmatrix即可。

示例代码如下:

说明: 工业生产中经常需要对采集到的原始信号进行分析,并对分析结果进行实时的图形化显示,下面通过在VB中引用Mmatrix来实现这一功能。代码如下:

Dim ax as Variant’声明坐标轴

Private Sub Form_Resize()

vbrefresh ax’刷新坐标轴

End Sub

Private Sub Form_Load()

ax = vbaxes(Form1.hWnd)

’将坐标轴置于窗体

Call Form_Resize

End Sub

Private Sub Command1-Click()

Dim I,C As Matrix’声明向量

Dim m As Integer

’从数据库中取原始信号存入一维向量I,取其对应的碳含量存入一维向量C

’m为向量I、C的元素个数

Call Icheck ( I , C , m )

’调用校正函数

End Sub

Private Sub Icheck (I As Variant, C As Variant, ByVal m As Integer)

Dim II,CC,Z As Matrix

Dim a0,a1,a2 As Double

II = zeros(m,1)

CC = zeros(m,1)

II(colon(1,m)) = I(colon(1,m))

CC(colon(1,m)) =C(colon(1,m))

’多项式拟和求解

Z = polyfit ( II, CC, 2 )

’2 说明用二项式拟和

a0= Z.r1(1) ’a0为二次项系数

a1= Z.r1(2) ’a1为一次项系数

a2= Z.r1(3) ’a2为0次项系数

Clear axes’清除坐标轴

T = Sort ( II )

’对原始信号排序,以确定作图区间

J = Linspace (T(1).r1(1),T(1).r(m),20)

’横坐标向量

Cuv = plus (plus (times (a0,times (X,X) ),

times (a1,X) ),a2) ’纵坐标向量

Tmp = plot (J,Cuv)’绘制曲线

Hold (“on”)

Tmp = plot (II, CC,“r.”)’绘制点

Hold (“off”)

End Sub

执行以上代码,结果如图2所示:

总 结

以上几种方法对于Matlab与VB的集成都是行之有效的,但在实际应用中究竟采用哪一种方式应视具体情况而定。前两种方式比较适合Client/Server模式,后两种方式则应视应用系统的具体要求来做选择,相比较而言,借助M文件在执行效率

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号