VB与MATLAB通信实现方案三
前言:MATLAB与VB接口,有使用DLL, DDE ,OLE ,ActiveX ,COM 组件等多种方法.
本文介绍的方法:
通过使用嵌入VB的矩阵函数库MatrixVB的方法。MatrixVB是由原MathTools公司开发的第三方插件,利用与Matlab相似的函数、语法嵌入到VB中,可以象使用VB的函数、命令一样使用Matlab函数。这种方法语法和函数使用比较简单,编程效率很高,几乎完全融入VB语言,特别对图形的处理非常方便,弥补了其他方法在图形处理上的弱点。安装后,只需在打开的工程中添加MatrixVB库即可(在工程->引用对话框中选中MMatrix)。但由于其仍然采用解释执行,执行效率较低,实时运算难以实现。
Matrix VB 下载地址:(MatrixVB 4.5注册码:
Name: Demian/TNT!
S/N: DEMIAN/TNT!-4C5R-1193046-44493704)
MatrixVB是MathWorks针对VB提供的一个Matlab库,它提供了600多个函数,包括基本的数学运算和功能强大的信号处理、线性代数、串运算及图形图像处理功能等,为VB提供了强大的功能扩展。在VB中使用该数学工具包可避免重复性劳动,从而减少开发人员实现算法和界面设计的困难。
做个简单的例子吧!
产生3X3的随机矩阵a = randn(3) ;求逆 b = inv(a);两矩阵相乘c = mtimes(a, b).
建立VB工程,工程中引用“MMatrix”组件包:
VB代码:
Private Sub Command1_Click()
' Get a normal random 3x3 matrix
a = randn(3)
' Find its inverse matrix
b = inv(a)
' Multiply (will be identity)
c = mtimes(a, b)
' Show them all
ShowMat a, txtRand
ShowMat b, txtInv
ShowMat c, txtEye
End Sub
Private Sub ShowMat(mat, where As TextBox)
Dim m As Long, n As Long
Dim t As String, d As String
Dim matij As Double
m = mat.rows
n = mat.cols
For i = 1 To m
For j = 1 To n
matij = mat.r2(i, j)
d = Format$(matij, "####0.0##")
d = Space$(10 - Len(d)) & d
t = t & " " & d
Next
t = t & Chr$(13) & Chr$(10)
Next
where.Text = t
End Sub
补充说明:
1.在发布基于MatrixVB的VB应用程序时,应将相应的库文件随系统一起发布。这些文件包括:v4510v.dll、c4510v.dll、ago4510.dll、msvcrt.dll、msvcirt.dll和MMatrix.dll。由于MMatrix.dll是COM 服务器,所以必须在操作系统中注册后方可使用,注册时可使用如下命令行语句:
regsvr32 mmatrix.dll
2.COM 生成器出现以前,MatrixVB在一定的历史阶段发挥了它的作用,但COM生成器出现后,MatrixVB已经被其所取代。一般来讲,用COM生成器生成的组件会比MatrixVB小得多,调用MatrixVB库时需将MatrixVB整个载入工程,其中包括很多根本用不上的函数,而使用COM生成器就可以“量身定做”了。另外,COM生成器是一个生产工具,而MatrixVB是一个产品,所以使用COM生成器具有更大的灵活性!
3.MatrixVB提供了600多个函数,包括基本的数学运算和功能强大的信号处理、线性代数、串运算及图形图像处理功能等。安装MatrixVB后,在安装文件夹中找到refguide.pdf,这是MatrixVB应用函数指南,并且有例子,英文!
Edited by Guassfans 2007-07-22
评论