浅析VC与matlab接口编程(一)
作者:邓科
下载源代码
Matcom是mathTools公司推出的一个能将M文件转化成相同功能C++代码的工具。相比Matlab自带的编译器Compiler,用Matcom转化代码要简单和方便 得多。本文将结合作者编程经验,以VC6.0和Matcom为例,详细介绍如何利用Matcom进行VC与Matlab的联合编程。
Matcom安装安装Matcom前要已求安装VC6.0。在安装过程中出现选择编译器对话框,选择“是”(图一)。出现选择是否安装Matlab时,选“否”。其他选项采用默认设置。Matcom可以独立于Matlab运行,但需要外部的C++编译器,指定Matlab的位置是为了让编译文件中需要的一些系统函数找到路径用的。
图一
安装完成后,启动界面MIDEVA(图二)。MIDEVA集成开发环境包括命令行窗口、变量列表窗口、命令列表窗口和编译链接信息窗口等几部分,并有详细的帮助文档。
图二
Matcom命令输入方法与Matlab相同。如果安装在中文版操作系统时,输入命令前加一空格。(如图三)。
图三
下面详细介绍如何将m文件编译后放入VC中。
1、启动MIDEVA ,File->New,新建如下Test1.m文件:
x=1:0.1:10; y=sin(x); plot(x,y);
将文件保存(如图四)。
图四
m文件保存的默认位置为:matcom安装目录\matcom45,生成的C++文件保存的默认位置为:matcom安装目录\matcom45\Debug\,本例matcom安装目录为C盘 即 C:\matcom45\Debug\,在该目录下将会产生Test1.h、Test1.cpp、Test1.r 、Test1.obj文件。
2、在VC中用MFC Wizard(exe)创建一个基于对话框名为Example的工程。
在面板上添加一个ID为IDC_BUTTON1按扭。
3、将C:\matcom45\Debug目录下的Test1.cpp文件的内容拷贝到
void CExamleDlg::OnButton1()下,(如图五)。
图五
4、将C:\matcom45\lib\下的matlib.h 和v4501v文件和C:\matcom45\debug下的Test1.h文件拷贝到工程Example目录下,然后在VC中将库文件和头文件加入到工程中:工程->添加工程->Files,选择刚刚拷贝到Example目录下的matlib.h 、v4501v和Test1.h文件(如图六)。
图六
5、在ExamleDlg.cpp中加入如下代码:
#include "matlib.h" #include "Test1.h"
6、在void CExamleDlg::OnButton1()中分别添加一个初始化类库调用函数”initM(MATCOM_VERSION)”和一个结束类库调用函数”exitM()”(如图七)。
图七
运行程序,点击画图按扭(如图八)。
图八
程序的release版本需要ago4501.dll、v4501v.dll、v4501.lib三个文件的支持。以上只是介绍了VC和Matcom接口编程的一个简单例子,功能并不完善,也远远达不到一个软件所要求的水平,但只要熟悉了VC和Matcom接口编程的基本原理和方法,相信大家一定能够编出优秀的软件。
浅析VC与Matlab联合编程(二)
作者:邓科
下载源代码
在“浅析VC与Matlab联合编程 (一)”中简单介绍了VC与matcom的接口编程,实现了VC调用matcom的一个基本功能,要真正熟练使用接口编程,还要对函数调用有一定了解。本文通过一个实例,较详细的介绍如何在VC中调用matcom编译后的函数。
首先新建一个函数huatu.m,该函数的功能是:接受用户输入的左端点值和右端点值两个输入参数,然后在该区间画正弦图形。函数还将生成两个随机数,作为一个点的坐标在图中打印出来(绿点),用来说明如何在VC中处理调用函数的返回值。
步骤如下:
1.建立一个名为Example2基于对话框的MFC(exe)工程。
2.在matcom中新建一个名为huatu.m文件,如图1;
图1
3.在matcom命令窗口中运行该函数,如图2;
图2
4.将生成的huatu.h、huatu.cpp(默认位置为 安装目录:\matcom45\samples\Debug)和matlib.h、v4501v.lib(默认位置为 安装目录:\matcom45\lib)四个文件拷贝到建立的工程Example2目录下。
5.将第四步拷贝的四个文件加入到VC工程中:工程->添加工程->文件,选择刚才拷贝到Example2目录下的四个文件。完成后如图3;
图3
6.在Example2dlg.cpp中添加头文件:(如图4所示)
#include "matlib.h" #include "huatu.h"
图4
7.为工程建立界面:添加一个Button按扭控件;添加四个Edit box控件,用于显示数据;添加五个Static text控件,四个显示文字,一个显示图形,将显示图形的Static text的ID设置为ID_PIC。其他所有控件属性保持默认(为了看图方便,可以适当调整显示图形Static text控件的边缘)。如图5所示
图5
8.按Ctrl+W为控件添加变量。如图6所示
图6
9.为Button1按钮添加响应代码。如图7所示
图7
10.运行程序,输入左端点和右端点,点击”画图”按钮,结果如图8所示。(本例只是为了说明如何调用函数,没有进行容错处理)
图8
注:如果在编译中出现下列错误:
fatal error C1010: unexpected end of file while looking for precompiled header directive
进行下列设置:工程->设置-> C/C++ 选择precompiled headers 选择第一或第二项:自动选择预补偿页眉,如图9所示
图9
本例介绍了在VC中如何调用用matcom编译的m函数的方法,并且基本上实现了VC和Matlab的无缝结合,希望对大家编程会有所帮助,现在时间很紧,下次有机会详细介绍m文件翻译成C++语言后代码的含义。
我的 QQ:44760299 欢迎大家一起讨论!
评论