Matlab 笔记之6


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

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


矢量化操作

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


clear;
tic
x=0:0.001:10;
for i=1:10001
  y(i) = sin(x(i));
end
toc

tic
xx = 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

Matlab 笔记之6_第1张图片

Library files

Matlab 笔记之6_第2张图片


在具体的工程设置中:添加静态链接库  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 中导入该文件,编译成功,增加联接

Matlab 笔记之6_第3张图片

运行结果:

Matlab 笔记之6_第4张图片


VC


你可能感兴趣的:(Matlab 笔记之6)