matlab手册(四)

上传人:xzh****18 文档编号:42094190 上传时间:2018-06-01 格式:PDF 页数:85 大小:3.46MB
返回 下载 相关 举报
matlab手册(四)_第1页
第1页 / 共85页
matlab手册(四)_第2页
第2页 / 共85页
matlab手册(四)_第3页
第3页 / 共85页
matlab手册(四)_第4页
第4页 / 共85页
matlab手册(四)_第5页
第5页 / 共85页
点击查看更多>>
资源描述

《matlab手册(四)》由会员分享,可在线阅读,更多相关《matlab手册(四)(85页珍藏版)》请在金锄头文库上搜索。

1、下载第1 5章M AT L A B与其他编程语言结合M AT L A B可以和其他编程语言一起使用,可以调用F O RT R A N或C程序。反过来F O RT R A N或C也可以调用M AT L A B程序。这样,快速的编译程序就可以利用 M AT L A B中强大的矩阵或图形命令,通过编写部分的 C或F O RT R A N程序,并进行编译,就可以避免 M A LTA B程序的瓶颈现象。M AT L A B还可以结合使用其他的应用程序,如 Microsoft Word for Wi n d o w s。这将在本章的最后一节讨论,这主要取决于计算机的系统和安装的应用程序。15.1 介绍M

2、AT L A B和F O RT R A N或C M AT L A B可以被F O RT R A N或C语言程序调用,它也可以调用 F O RT R A N或C语言程序。如果M AT L A B程序运行速度很慢,后者对此很有用。因为 M AT L A B是一个解释性语言,所以当运行程序时就是解释它的命令。这样有时会导致程序的运行速度很慢,如 f o r- l o o p s循环。在F O RTRAN 77和C中可以使用M AT L A B库,也可以用F O RTRAN 90或C + +对它们进行链接。除非特别需要,一般不推荐编写 F O RT R A N或C程序。M AT L A B的优点在于可

3、以用高级的形式描述出操作,而程序员不必担心循环的次数和一些其他细节问题。被M AT L A B调用的程序必须在编译后转换成 M E X文件,这样才能被M AT L A B调用。在编译时它们和M文件一样使用。在2 . 8节中讲到了由M AT L A B创建的二进制文件。它们是以 M AT文件形式被调用的,在 C或F O RT R A N语言的库中有用来读和写二进制文件的程序。注意,这些文件可以在不同的平台间传递,例如,用户可以读取在 Wi n d o w s环境下建立的M AT文件到U N I X环境中。在1 5 . 4节中介绍了如何在M AT L A B中读或写其他的二进制文件。这对有特殊格式

4、要求的程序很有用。M AT L A B编译器、C数学库和C + +数学库可以从M a t h Wo r k s公司买到。首先可以作为自动M E X文件生成器或C源代码生成器使用,结合C数学库一起生成应用程序。在C中编写M AT L A B程序,数据通过指针来访问。在其他编程语言中调用 M A LTA B程序,就要求使用指针。在M ATLAB 5中,所有变量类型,如标量、向量、矩阵、字符串、细胞矩阵和结构,都以m x A r r a y s形式来保存,所有的数据操作都通过这些 m x A r r a y s来完成。M ATLAB 5中新的数据类型,也就是多维数组、细胞矩阵和结构只能在 C中使用,

5、而不能在F O RT R A N中使用。在C或F O RT R A N中使用的M AT L A B程序主要分四类:m x可操作的m x A r r a y s。m a tM AT文件。e n gM AT L A B工程文件。m e xM E X程序,在M A LTA B环境中完成一些操作的程序。在下面几节中将举一些例子。这些例子基本上说明了 M AT L A B和C或F O RT R A N是如何相互调用的。它们已在运行Sun OS 5.5.1的工作站上和Soloais CDE 1.0.2版的Wi n d o w s系统中编译通过。对于每一种系统而言,编程的思想都是一样的。然而还是有一些重要的

6、细节方面是不相同的。这就是为什么M AT L A B中的例程很有趣的原因,它们可以在库中找到:. . . / m a t l a b 5 2 / e x t e r n / e x a m p l e s路径中的三个点,. . .,表示这部分路径与系统有关。例程的文档可以用M AT L A B命令h e l p d e s k获得。而且还有M AT L A B手册应用程序接口指南 。15.2 MAT L A B和C为了使C和M AT L A B混合编程,重要的是使用的C编译器以ANSI C标准进行编译。15.2.1 C中对m x A r r a y的操作用下面描述的程序可以对m x A r r

7、 a y进行操作。为了使用这些程序,在程序中必须嵌入头文件m a t r i x . h,也就是在程序的开始包含下面一行:#include “matrix.h“下面表中的程序用来分配和释放内存。一个好的编程习惯就是及时释放不再使用的内存。不必使用M AT L A B程序来创建数据结构,因为在程序结束时 M AT L A B会自动地来完成(可见命令集1 9 5中程序m e x M a k e A r r a y P e r s i s t e n t和m e x M a k e M e m o r y P e r s i s t e n t )。命令集1 7 5C中的内存管理void *mxCa

8、lloc(size_t n, size_t size);分配内存。参数n表示分配的元素个数,s i z e表示每个元素的字节数。如果分配成功,返回一个指向已分配内存的开始位置的指针;否则返回 N U L L。在程序中必须嵌入库文件。当不再使用时用m x F r e e来释放内存。void mxSetAllocFcns(calloc_proc callocfcn,free_proc freefcn,realloc_proc reallocfcn, malloc_proc mallocfcn);在非M E X程序中用来释放内存。使用h e l p d e s k可得更多信息。void mxFree

9、(void *ptr);释放p t r指向的内存空间。void *mxRealloc(void *ptr, size_t size);重新分配用m x C a l l o c分配的内存。参数p t r是指向内存开始位置的指针, s i z e是分配元素的个数。如果分配成功,返回得到指向分配内存开始位置的指针;否则返回N U L L。在程序中必须嵌入库文件。用m x F r e e来释放不再使用的内存。void mxDestroyArray(mxArray *array_ptr);释放a rr a y _ p t r指向的m x A r r a y内存。下面的常用程序用来管理和检查m x A r

10、 r a y,如命名、重构和检查它们的类型。命令集1 7 6C中处理m x A r r a y的常用程序m x C o m p l e x i t y第1 5章M AT L A B与其他编程语言结合3 0 5下载是一个枚举数据类型,用来表示 m x A r r a y的虚数元素。它的值可以为 m x C O M P L E X(复数m x A r r a y )或m x R E A L(其他)。m x C l a s s I D是一个枚举数据类型,用来表示m x A r r a y的类型。有下列选项:m x C E L L _ C L A S S ,细胞类型。 m x S T R U C T

11、_ C L A S S ,结构类型。 m x O B J E C T _ C L A S S ,用户自定义类型。 m x C H A R _ C L A S S ,字符串类型。 m x S P A R S E _ C L A S S ,稀疏矩阵。 m x D O U B L E _ C L A S S ,双精度浮点小数。 m x S I N G L E _ C L A S S ,单精度浮点小数。 m x I N T 8 _ C L A S S ,8位整数。 m x U I N T 8 _ C L A S S ,8位无符号整数。 m x I N T 1 6 _ C L A S S ,1 6位整数

12、。 m x U I N T 1 6 _ C L A S S ,1 6位无符号整数。 m x I N T 3 2 _ C L A S S ,3 2位整数。 m x U I N T 3 2 _ C L A S S ,3 2位无符号整数。 m x U N K N O W N _ C L A S S ,未知类型。mxClassID mxGetClassID(const mxArray *array_ptr);返回a rr a y_p t r指向的m x A r r a y类型;见上。const char *mxGetClassName(const mxArray *array_ptr);同上,返回字符

13、串形式的类型。bool mxIsClass(const mxArray *array_ptr, const char *name);如果a rr a y_p t r指向的m x A r r a y有字符串n a m e表示的类型,则返回真。字符串 n a m e相对应于上面的类型(见m x C l a s s I D): “c e l l” 、 “s t r u c t” 、 “c h a r” 、 “s p a r s e” 、“d o u b l e” 、 “s i n g l e” 、 “i n t 8” 、 “u i n t 8” 、 “i n t 1 6” 、 “u i n t 1

14、6” 、 “i n t 3 2”和“u i n t 3 2” 。它还可以是自定义的类型名。const char *mxGetName(const mxArray *array_ptr);返回包含a rr a y_p t r指向的m x A r r a y名字的字符串。double mxGetScalar(const mxArray *array_ptr);返回a rr a y_p t r指向的m x A r r a y的第一个实数元素的值。总是返回一个 d o u b l e型值。如果m x A r r a y是一个结构或细胞类型,则返回 0 . 0;如果m x A r r a y是一个稀疏矩

15、阵类型,则返回第一个非零实数元素的值;如果 m x A r r a y为空,则返回一个不确定值。mxArray *mxDuplicateArray(const mxArray *in);复制i n指向的 m x A r r a y,并返回指向复制 m x A r r a y的指针。当它不再使用时,用m x D e s t r o y A r r a y来释放它;见命令集1 7 5。int mxGetNumberOfElements(const mxArray *array_ptr);返回a rr a y_p t r指向的m x A r r a y的元素个数。使用m x G e t C l a

16、s s I D来找出元素类型。int mxGetElementSize(const mxArray *array_ptr);返回保存a rr a y_p t r指向的m x A r r a y中一个元素需要的字节数。如果 m x A r r a y是细胞或结构类型,则返回指向它们的指针大小。如果操作失败,返回 0。3 0 6M ATLAB 5 手册下载int mxGetNumberOfDimensions(const mxArray *array_ptr);返回a rr a y_p t r指向的m x A r r a y中的维数,这个数总是不小于2。const int *mxGetDimensions(const mxArray *array_ptr);返回一个整数向量的指针,包含a rr a y_p t r指向的m x A r r a y的每一维的元素个数。int mxSetDimensions(mxArray *array_ptr, const int *size, int ndims);用来重构或增加 /减少a rr a y _ p t r指向的m x A r r

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 理论文章

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号