MATLAB C-MEX编程指南

1星 需积分: 9 7 下载量 54 浏览量 更新于2024-08-01 收藏 399KB PDF 举报
"Writing MATLAB C-MEX Code.pdf" 这篇文档主要介绍了如何编写MATLAB与C/C++代码结合的MEX函数,以便在MATLAB环境中调用高性能的C或C++程序。MEX函数是MATLAB的外部接口函数,它允许用户利用C、C++或Fortran的高效性能来扩展MATLAB的功能,尽管Fortran/MEX在此文档中并未详细讨论。 1. **介绍** MEX函数允许开发者将编译后的C或C++代码与MATLAB环境相结合,以实现更高的计算效率。文档提醒读者,这并非MATLAB或C语言的初级教程,需要一定的基础。 2. **开始编写** 开始编写MEX函数前,需要了解C/C++和MATLAB的基本知识。文档可能涵盖了创建MEX文件的基础步骤,如设置编译器、配置链接到MATLAB库等。 3. **输入和输出** 在MEX函数中处理输入和输出是关键部分。这部分可能会讲解如何定义函数参数,接受MATLAB变量并返回结果到MATLAB工作空间。 4. **数值数组** 数值数组是MATLAB的核心数据结构。这部分可能涉及如何在C/C++代码中创建、操作和传递MATLAB的多维数组,包括数据类型转换和内存管理。 5. **创建未初始化的数值数组** 讨论了在C/C++代码中动态分配和初始化MATLAB数组的方法,以及如何避免内存泄漏。 6. **从MEX中调用MATLAB函数** 这一节可能阐述了如何在C/C++代码内部调用已存在的MATLAB函数,使MEX函数能够利用MATLAB的内置功能。 7. **从MEX中调用MATLAB函数句柄** 函数句柄是MATLAB中的一个高级特性,允许存储对函数的引用。这里可能介绍了如何在MEX函数中使用函数句柄,执行动态绑定。 8. **在非MEX程序中调用MATLAB** 除了在MEX函数内,文档还可能讨论了如何从独立的C/C++程序中启动MATLAB引擎,然后调用MATLAB的功能。 9. **内存管理** MEX函数涉及跨MATLAB和C/C++之间的内存交互,这部分可能讲解了内存分配、释放和MATLAB的内存管理机制。 10. **非数值变量** MATLAB支持多种数据类型,包括结构体、字符串等。这一部分可能探讨了如何处理这些非数值类型的变量。 11. **使用FFTW进行FFT** FFTW是一个高效的傅里叶变换库,文档可能介绍了如何在MEX函数中集成FFTW以执行快速傅里叶变换(FFT)。 12. **其他杂项** 这一部分可能包含了与MEX编程相关的各种实用技巧、注意事项和问题解决方法。 13. **进一步阅读** 文档最后可能提供了更多的学习资源,包括MATLAB官方文档和其他参考资料,以帮助读者深入理解MEX编程。 这个文档是一个关于MATLAB C-MEX编程的指南,旨在帮助开发者有效地结合C/C++和MATLAB,以提升MATLAB的计算性能。

警告: 名称不存在或不是目录: D:\ECO-master_CVPR2017\ECO-master\external_libs\matconvnet\matlab\mex > 位置:path (第 109 行) 位置: addpath (第 86 行) 位置: setup_paths (第 20 行) 位置: demo_ECO_HC (第 6 行) 警告: 名称不存在或不是目录: D:\ECO-master_CVPR2017\ECO-master\external_libs\matconvnet\matlab > 位置:path (第 109 行) 位置: addpath (第 86 行) 位置: setup_paths (第 21 行) 位置: demo_ECO_HC (第 6 行) 警告: 名称不存在或不是目录: D:\ECO-master_CVPR2017\ECO-master\external_libs\matconvnet\matlab\simplenn > 位置:path (第 109 行) 位置: addpath (第 86 行) 位置: setup_paths (第 22 行) 位置: demo_ECO_HC (第 6 行) 警告: Error when using the mexResize function. Using Matlab's interpolation function instead, which is slower. Try to run the compile script in "external_libs/mexResize/". The error was: MEX 文件 'D:\ECO-master_CVPR2017\ECO-master\external_libs\mexResize\mexResize.mexw64' 无效: 找不到指定的模块。 出错 tracker (第 69 行) [~] = mexResize(ones(5,5,3,'uint8'), [3 3], 'auto'); 出错 testing_ECO_HC (第 121 行) results = tracker(params); 出错 demo_ECO_HC (第 13 行) results = testing_ECO_HC(seq); > 位置:tracker (第 71 行) 位置: testing_ECO_HC (第 121 行) 位置: demo_ECO_HC (第 13 行) 无法执行赋值,因为此类型的变量不支持使用点进行索引。 出错 get_fhog (第 6 行) fparam.nOrients = 9; 出错 get_fhog (第 18 行) hog_image = get_fhog(single(im(:,:,:,k)), cell_size, fparam.nOrients); 出错 extract_features (第 62 行) feature_map{ind} = feat.getFeature(img_samples{img_sample_ind}, feat.fparams, gparams); 出错 tracker (第 347 行) xl = extract_features(im, sample_pos, currentScaleFactor, features, global_fparams, feature_extract_info); 出错 testing_ECO_HC (第 121 行) results = tracker(params); 出错 demo_ECO_HC (第 13 行) results = testing_ECO_HC(seq); >>

2023-07-17 上传