浅析VC与Matlab联合编程(二)
2008-03-25 23:53
211 查看
在“浅析VC与Matlab联合编程 (一)”中简单介绍了VC与matcom的接口编程,实现了VC调用matcom的一个基本功能,要真正熟练使用接口编程,还要对函数调用有一定了解。本文通过一个实例,较详细的介绍如何在VC中调用matcom编译后的函数。
首先新建一个函数huatu.m,该函数的功能是:接受用户输入的左端点值和右端点值两个输入参数,然后在该区间画正弦图形。函数还将生成两个随机数,作为一个点的坐标在图中打印出来(绿点),用来说明如何在VC中处理调用函数的返回值。
步骤如下:
1.建立一个名为Example2基于对话框的MFC(exe)工程。
2.在matcom中新建一个名为huatu.m文件,如图1;
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg1.jpg)
图1
3.在matcom命令窗口中运行该函数,如图2;
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg2.jpg)
图2
4.将生成的huatu.h、huatu.cpp(默认位置为 安装目录:/matcom45/samples/Debug)和matlib.h、v4501v.lib(默认位置为 安装目录:/matcom45/lib)四个文件拷贝到建立的工程Example2目录下。
5.将第四步拷贝的四个文件加入到VC工程中:工程->添加工程->文件,选择刚才拷贝到Example2目录下的四个文件。完成后如图3;
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg3.jpg)
图3
6.在Example2dlg.cpp中添加头文件:(如图4所示)
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg4.jpg)
图4
7.为工程建立界面:添加一个Button按扭控件;添加四个Edit box控件,用于显示数据;添加五个Static text控件,四个显示文字,一个显示图形,将显示图形的Static text的ID设置为ID_PIC。其他所有控件属性保持默认(为了看图方便,可以适当调整显示图形Static text控件的边缘)。如图5所示
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg5.jpg)
图5
8.按Ctrl+W为控件添加变量。如图6所示
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg6.jpg)
图6
9.为Button1按钮添加响应代码。如图7所示
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg7.jpg)
图7
10.运行程序,输入左端点和右端点,点击”画图”按钮,结果如图8所示。(本例只是为了说明如何调用函数,没有进行容错处理)
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg8.jpg)
图8
注:如果在编译中出现下列错误:
进行下列设置:工程->设置-> C/C++ 选择precompiled headers 选择第一或第二项:自动选择预补偿页眉,如图9所示
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg9.jpg)
图9
本例介绍了在VC中如何调用用matcom编译的m函数的方法,并且基本上实现了VC和Matlab的无缝结合,希望对大家编程会有所帮助,现在时间很紧,下次有机会详细介绍m文件翻译成C++语言后代码的含义。我的 QQ:44760299 欢迎大家一起讨论!
首先新建一个函数huatu.m,该函数的功能是:接受用户输入的左端点值和右端点值两个输入参数,然后在该区间画正弦图形。函数还将生成两个随机数,作为一个点的坐标在图中打印出来(绿点),用来说明如何在VC中处理调用函数的返回值。
步骤如下:
1.建立一个名为Example2基于对话框的MFC(exe)工程。
2.在matcom中新建一个名为huatu.m文件,如图1;
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg1.jpg)
图1
3.在matcom命令窗口中运行该函数,如图2;
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg2.jpg)
图2
4.将生成的huatu.h、huatu.cpp(默认位置为 安装目录:/matcom45/samples/Debug)和matlib.h、v4501v.lib(默认位置为 安装目录:/matcom45/lib)四个文件拷贝到建立的工程Example2目录下。
5.将第四步拷贝的四个文件加入到VC工程中:工程->添加工程->文件,选择刚才拷贝到Example2目录下的四个文件。完成后如图3;
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg3.jpg)
图3
6.在Example2dlg.cpp中添加头文件:(如图4所示)
#include "matlib.h" #include "huatu.h"
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg4.jpg)
图4
7.为工程建立界面:添加一个Button按扭控件;添加四个Edit box控件,用于显示数据;添加五个Static text控件,四个显示文字,一个显示图形,将显示图形的Static text的ID设置为ID_PIC。其他所有控件属性保持默认(为了看图方便,可以适当调整显示图形Static text控件的边缘)。如图5所示
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg5.jpg)
图5
8.按Ctrl+W为控件添加变量。如图6所示
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg6.jpg)
图6
9.为Button1按钮添加响应代码。如图7所示
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg7.jpg)
图7
10.运行程序,输入左端点和右端点,点击”画图”按钮,结果如图8所示。(本例只是为了说明如何调用函数,没有进行容错处理)
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg8.jpg)
图8
注:如果在编译中出现下列错误:
fatal error C1010: unexpected end of file while looking for precompiled header directive
进行下列设置:工程->设置-> C/C++ 选择precompiled headers 选择第一或第二项:自动选择预补偿页眉,如图9所示
![](http://www.vckbase.com/document/journal/vckbase42/images/Vcmatlabimg9.jpg)
图9
本例介绍了在VC中如何调用用matcom编译的m函数的方法,并且基本上实现了VC和Matlab的无缝结合,希望对大家编程会有所帮助,现在时间很紧,下次有机会详细介绍m文件翻译成C++语言后代码的含义。我的 QQ:44760299 欢迎大家一起讨论!
相关文章推荐
- 浅析VC与Matlab联合编程(三)
- 浅析VC与Matlab联合编程
- 浅析VC与MATLAB联合编程(四)
- 浅析VC与MATLAB联合编程
- 浅析VC与Matlab联合编程(二)
- Matlab VC 联合编程 控制台以及MFC中实现(二)
- 精通VC与MATLAB联合编程——综合举例二
- 精通VC与MATLAB联合编程(十)
- Matlab VC 联合编程 控制台以及MFC中实现(四)
- vc与matlab 联合编程
- Matlab VC 联合编程 控制台以及MFC中实现(三)
- 精通VC与Matlab联合编程(五)
- Matlab VC 联合编程 控制台以及MFC中实现(五)
- 精通VC与Matlab联合编程(五)
- VC与Matlab联合编程常见问题集合
- 精通VC与Matlab联合编程(六)
- 精通VC与Matlab联合编程(六)
- 精通VC与MATLAB联合编程(七)
- 精通VC与MATLAB联合编程<十>——综合举例二
- Matlab VC 联合编程 控制台以及MFC中实现(一)