MATLAB与VC++混合编程实现一维小波多尺度分解
2009-06-11 20:07:24 来源:WEB开发网(1)利用MATLAB引擎。该方法的优点是能支持所有的MATLAB函数。缺点是:混合编程后的可执行程序脱离不了MATLAB的运行环境;另外一方面在调用引擎之后是按照MATLAB的执行方式进行的,由于MATLAB是解释执行代码,运行速度很慢。
(2)利用MATLAB自带的mcc编译器。从MATLAB的5.1版本开始,MATLAB 提供了自带的C++Complier─mcc,该编译器不仅能够将MATLAB的*.m文件转换为C或C++的源代码,还能产生完全脱离MATLAB运行环境的独立的可执行程序。但是MATLAB本身的资料也说明该编译器如被用来建立独立的可执行程序,则不能够调用MATLAB工具箱中的函数。另外,利用它来转换的代码可读性不太好,且不支持图形函数,不常使用。
(3)利用Matcom编译。用Matcom进行转换非常简单、方便,生成的代码可读性很好,且在C编译器编译后其代码的执行效率高。但是,这种方法也不能支持所有MATLAB工具箱函数。
(4)利用MATLAB COM Builder。MATLAB提供的COM生成器(COM Builder),为实现MATLAB独立应用程序增加了又一个新途径。她把MATLAB开发的算法作成组件,这些组件作为独立的COM对象,可以直接被其他支持COM的语言如Visual C++、Visual Basic所引用,可以生成不依赖于MATLAB环境的独立程序,因此可获得最快的运行速度,不需进行代码转换,使得编程风格一致,可读性好。
笔者在比较几种方法优缺点的基础上,经大量实验后,确定采用第四种方法实现一维小波多尺度分解。
2.2 基于COM的MATLAB与VC++混合编程实现一维小波多尺度分解
如前述,利用MATLAB小波工具想提供的实现一维小波分解和重构的函数,并结合VC++与MATLAB的各自优缺点,采用基于COM技术的VC++与MATLAB的混合编程的方法实现对探测信号突变点的定位。以下步骤得到的程序均已在VC6.0,MATLAB7.01和Windows XP环境下运行通过:
更多精彩
赞助商链接