正在加载图片...
China-pub.com 第I5章MATLAB.与其他编程语言结合 305 下载 互调用的。它们已在运行Sun OS5.5.1的工作站上和Soloais CDE1.0.2版的Windows.系统中编 译通过。对于每一种系统而言,编程的思想都是一样的。然而还是有一些重要的细节方面是 不相同的。这就是为什么MATLAB中的例程很有趣的原因,它们可以在库中找到: .../matlab52/extern/examples 路径中的三个点,,表示这部分路径与系统有关。 例程的文档可以用MATLAB命令helpdesk获得。而且还有MATLAB手册《应用程序接 口指南》。 15.2 MATLAB和C 为了使C和MATLAB混合编程,重要的是使用的C编译器以ANSI C标准进行编译。 15.2.1C中对mxArray的操作 用下面描述的程序可以对mxArray:进行操作。为了使用这些程序,在程序中必须嵌入头文 件matrix.h,也就是在程序的开始包含下面一行: #include "matrix.h" 下面表中的程序用来分配和释放内存。一个好的编程习惯就是及时释放不再使用的内存。 不必使用MATLAB程序来创建数据结构,因为在程序结束时MATLAB会自动地来完成(可见命 令集l95中程序mexMakeArrayPersistent和mexMakeMemoryPersistent)。 命令集175 C中的内存管理 void +mxCalloc(size_t n,size_t size); 分配内存。参数n表示分配的元素个数,size表示每个元素的字节数。如果分配成功, 返回一个指向已分配内存的开始位置的指针:否则返回NULL。在程序中必须嵌入库 文件<stdlib.h>。当不再使用时用mxFree来释放内存。 void mxsetAllocFcns(calloc_proc callocfcn,free_proc freefcn,realloc_proc reallocfcn,malloc_proc mallocfcn); 在非MEX程序中用来释放内存。使用helpdesk可得更多信息。 void mxFree(void *ptr); 释放ptr指向的内存空间。 void *mxRealloc(void *ptr,size_t size); 重新分配用mxCa11oc分配的内存。参数ptr是指向内存开始位置的指针,size是分配 元素的个数。如果分配成功,返回得到指向分配内存开始位置的指针:否则返回 NULL。在程序中必须嵌入库文件<stdlib.h>。用nxFree来释放不再使用的内存。 void mxDestroyArray(mxArray tarray_ptr)i 释放array ptr指向的mxArray内存。 下面的常用程序用来管理和检查mxArray,如命名、重构和检查它们的类型。 命令集176 C中处理mxArray的常用程序 mxComplexity互调用的。它们已在运行 Sun OS 5.5.1的工作站上和Soloais CDE 1.0.2版的Wi n d o w s系统中编 译通过。对于每一种系统而言,编程的思想都是一样的。然而还是有一些重要的细节方面是 不相同的。这就是为什么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 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 5 C中的内存管理 void *mxCalloc(size_t n, size_t size); 分配内存。参数n表示分配的元素个数, s i z e表示每个元素的字节数。如果分配成功, 返回一个指向已分配内存的开始位置的指针;否则返回 N U L L。在程序中必须嵌入库 文件< s t d l i b . h >。当不再使用时用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(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。在程序中必须嵌入库文件< s t d l i b . h >。用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 r a y,如命名、重构和检查它们的类型。 命令集1 7 6 C中处理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 下载
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有