中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > 系统
精通VC与Matlab联合编程(六)
作者:邓科 时间:2005-11-16 11:49 出处:互连网 责编:66
              摘要:精通VC与Matlab联合编程(六)
  Matlab C\C++函数库是Matlab扩展功能重要的组成部分,包含了大量的用C\C++语言重新编写的Matlab函数,主要包括初等数学函数、线形代数函数、矩阵操作函数、数值计算函数、特殊数学函数、多项式函数、插值函数等,用户可以在自己的C\C++程序中调用这些函数,实现复杂的矩阵计算功能,从而减少程序设计工作量,需要说明的是C函数库和C++函数库是两个不同的函数库。
在使用前需要进行安装:
在Matlab命令窗口中输入:
mbuild -setup
按照提示选择VC的编译器,完成后在Matlab命令窗口中输入:
mex -setup
同样选择VC的编译器,就完成编译器的安装和配置。
首先介绍下C函数库,C数学函数库所需要的库函数在该目录下:Matlab根目录:\extern\lib
下面来看matlab自带的一个使用C函数库的例子(所有使用c函数例子在:matlab根目录\extern\examples\cmath):
 * ex1.c
*
* Copyright (c) 1995-1999 by The Mathworks, Inc. All Rights Reserved.
*/
/* $Revision: 1.6 $ */
#include <stdio.h>
#include <stdlib.h>     /* used for EXIT_SUCCESS */
#include <string.h>
#include "matlab.h"/*matlab.h为C数学函数库的头文件
static double real_data[] = { 1, 2, 3, 4, 5, 6 };
static double cplx_data[] = { 7, 8, 9, 10, 11, 12 };
int main()
{
/* 声明两个mxArray矩阵变量并赋初值为NULL */
mxArray *mat0 = NULL;
mxArray *mat1 = NULL;
/* 使用自动内存管理*/
mlfEnterNewContext(0, 0);
/* 创建矩阵mat0,mat1并赋值 */
mlfAssign(&mat0, mlfDoubleMatrix(2, 3, real_data, NULL));/*该矩阵为2*3矩阵
mlfAssign(&mat1, mlfDoubleMatrix(3, 2, real_data, cplx_data));/*该矩阵为2*3矩阵,并为复数矩阵
/* 打印矩阵 */
mlfPrintMatrix(mat0);
mlfPrintMatrix(mat1);
/* 释放矩阵所占的内存*/
mxDestroyArray(mat0);
mxDestroyArray(mat1);
/* 禁用自动内存管理*/
mlfRestorePreviousContext(0, 0);
return(EXIT_SUCCESS);
}
三、如果有图像,请在图像文件中表明图像索引编号,如“myappimg1.gif”,“myappimg2.gif”等,在图像显示的下方注明图像描述:


图一 程序运行结果

下面在VC中实现该程序的功能,步骤如下:
1、在VC中打开ex1.c文件(该文件在该目录下:matlab根目录\extern\examples\cmath)
2、设置头文件和库文件路径:工具->选择,目录
在inlude选项中添加如下路径:
D:\matlab\extern\include\cpp
D:\matlab\extern\include
结果如图2:


图二 头文件路径设置

在Library选项中添加如下路径:如图三 D:\matlab\extern\lib\win32\microsoft\msvc60 D:\matlab\extern\lib D:\matlab\bin

图三 库文件路径设置

3、添加库文件:工程->设置->Link 在General选项中的“对象库/模块”中将目录D:\matlab\extern\lib\win32\microsoft\msvc60目录下的所有库文件名写上:如图四


图四 库文件添加

  所有设置完成后就可以运行了。 Matlab内建函数库包括Matlab C数学函数中最基本的数学函数,任何使用C数学函数库编写的应用程序必须使用Matlab内建函数。Matlab M文件函数库包含了从M文件转换来的函数,这些函数相比内建函数其内容更加丰富,并且包含了大量特殊功能函数在Matlab C函数库中,Matlab阵列被声明为mxArray的结构体,该结构体的定义在目录Matlab\extern\include\matrix.h文件中,很好的理解mxArray结构体有助于使用Matlab C数学库。
Matlab C内建数学库常用的函数有:
通用功能函数;
运算符和特殊矩阵;
基本的矩阵操作函数
初等数学函数
线形代数函数
数据分析和傅立叶转换函数
字符串函数
文件输入输出函数
常用数据类型函数
Matlab M文件函数库
运算和特殊功能功能函数
基本的矩阵操作函数
基本数学函数
特殊数学函数
线形代数函数
数值分析和傅立叶变换函数
多项式和插值函数
函数的函数和常微分方程
字符串函数
文件读写函数
数据类型函数
稀疏矩阵函数   
  以上函数的用法在Matlab帮助文挡中有介绍。与Matlab C函数库类似,Matlab C++函数库也包括Matlab C++内建数学库和Matlab M文件函数库,并在Matlab C函数库的基础上对许多函数进行了类封装,使得C++语言可以利用重载、继承等功能对C++库函数进行调用。Matlab C++函数库与Matlab C函数库的区别在于Matlab C++函数库用类定义数据结构,而Matlab C函数库用结构体来定义数据结构。要说明的是:Matlab7.0版本不再使用C/C++函数库,因此以上方法在7.0版本中使用会出现错误。
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有