一、 准备工作
(1)matlab版本2012或以上 (2)vb6.0
二、 适用条件
matlab生成的无论是应用程序还是动态连接库或者是COM组件都需要MCR的支持,MCR因用户安装的Matlab版本不同分为32位和64位,所以为了能够将自己编译的M文件能够应用于其他的电脑上,首先要在目标电脑上安装自己电脑中MCR这个应用程序,它的存放位置为Matlab路径\\ toolbox\\compiler\\deploy\\win64
三、 Matlab与VB基于Com组件的实现过程
(1)在Matlab中生成M文件的COM组件
打开App菜单栏,找到Matlab Complier单击进入应用,会出现上图的界面,在Classes中可以添加自己要用的类群,所谓的类群就是好比如果你想建立一个专门用于解决非线性方程的类,就可以建立个nonlinear equations solver,在类下可以添加用于解决非线性方程的各种M函数文件。在这里我建立了fft类,在这个类中我添加了个myfft.M文件,这个M文件实际上使用了Matlab自带的离散傅立叶变换函数fft,这么做的目的是为了说明我们可以调用matlab已经建立好的各种算法,方便的在vb中调用。添加好所需要的资源,点击build就OK了。 (2)注册生成的COM组件
在Build Success后会在你选择生成Com组件的文件地址发现两个文件distrib和src,在
distrib文件里你会发现你生成.dll文件,在电脑上注册它就可以在vb上调用。至于怎么注册,自行脑补。 (3)在VB中调用Com组件
在vb中的引用中通过浏览功能引用生成.dll文件,那么现在就可以使用了。 使用步骤:
1.Dim xxx as new 工程名.类名
xxx可以随意,工程名为你在Matlab中生成COM组件时自己定义的COM 组件名,类名为COM组件下你添加的类名 2.通过xxx.函数名(nargout,y1,y2,y3,....,yn,x1,x2,...,xn)
函数名为Matlab中定义在此类下的函数名,nargout为输出变量个数,y1,y2,...,yn为输出变量,x1,x2,....,xn为输入变量。
这里注意所有的输出变量皆定义为Variant型,输入变量当为数组时,都需要定义成二维数组,下标都从1开始,关于行向量它的表达形式为(1 to 1,1 to n),列向量为(1 to n,1 to 1),所有的小数为double型。
四、 结果
最后附上结果,这里给了个sin(x)+cos(2*x)的信号可以看到,实部的频谱即余弦函数成分的频谱峰值出现在2,虚部的频谱及正弦函数的频谱出现在1,结果正确说VB已经正确的调用了Matlab中的fft函数
VB与Matlab混合编程



