Matlab 笔记之6

来源:互联网 发布:mac webstorm使用 编辑:程序博客网 时间:2024/06/04 19:09


MATLAB是一种解释语言,执行效率总体比C、Fortran等低,一方面可以利用matlab的profiling分析M文件的各指令耗时,指出运行“瓶颈”。

另一方面,运用编程技巧改进执行效率。


矢量化操作

    MATLAB变量的基础类型是矩阵,其主要为向量矩阵操作设计的。编程时尽量对矢量和矩阵整体编程,而不是循环操作矩阵元素。


clear;ticx=0:0.001:10;for i=1:10001  y(i) = sin(x(i));endtocticxx = 0:0.001:10;yy=sin(xx);toc

以上效率相差80倍。

MATLAB常见的矢量化操作函数有 :  all, any, diff, permute, repmat,logical, find, sort  和 sum 等。

给数组预定义维数

每当需赋值的元素下标超过现有维数,matlab就为该数组或矩阵扩维一次,降低了执行效率。

下标或者索引操作

A(1:k, j)  矩阵A的第j列的前k个元素,  A(: , j) 矩阵j列所有元素。

尽量多使用函数文件少用脚本文件

循环体的内容转换为C-MEX

内存优化

VC6.0 调用MATLAB计算引擎环境设置

1. 添加matlab引擎头文件和库函数到vc6的IDE  


菜单栏-工具-选项,选择目录标签 

(具体matlab目录需要根据实际修改)

include files


Library files



在具体的工程设置中:添加静态链接库  libeng.lib   libmat.lib  libmex.lib   libmx.lib

这几个文件在matlab6 之前需要手工生成   vc的bin目录,分别执行  lib /def: "D:XXXX\Matlab\extern\inlcude\libmx.def" \machine:x86 /out:libmx.lib /nologo


使用例子  matlab/extern/examples/eng_mat/engwindemo.c

在空win32 app 中导入该文件,编译成功,增加联接


运行结果:



VC


1 0
原创粉丝点击