分享
 
 
 

精通VC与Matlab联合编程(六)

王朝vc·作者佚名  2006-01-17
窄屏简体版  字體: |||超大  

精通VC与Matlab联合编程(六)

作者:邓科

下载源代码

浅析VC与MATLAB联合编程<一>

浅析VC与MATLAB联合编程<二>

浅析VC与MATLAB联合编程<三>

浅析VC与MATLAB联合编程<四>

浅析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版本中使用会出现错误。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有