匿名函数:
匿名函数是不存储在程序文件中、但与数据类型是 function_handle 的变量相关的函数。匿名函数可以接受输入并返回输出,就像标准函数一样。但是,它们可能只包含一个可执行语句。
例如,创建用于计算平方数的匿名函数的句柄:
sqr = @(x) x.^2;
向量化和预分配(提高程序执行速度):
- 向量化:要使得matlab更高速工作,把.m文件算法向量化,其他语言使用for循环,Matlab可用向量或矩阵运算。
例:原算法:
x=0.01;
for k=1:1001
y(k)=log10(x);
x=x+0.01;
end
向量化:
x=0.01:0.01:1001;
y=log10(x);
- 预分配:代码无法向量化,通过通过预分配加快for循环
例:
r=zeros(1,32);
for n=1:32
r(n)=rank(magic(r));
end
函数的函数:
一种以标量为变量的非线性函数,以函数名为自变量的函数,1️以函数名为自变量的函数。求零点,最优化,求积分和常微分方程。
例(简单实现hump函数功能):
MATLAB中有一个内置函数是humps,该函数是下列函数的特例:
当q=0.3,r=0.9和s=6的时候就是humps函数。
a=0:0.002:1;
b=humps(a);
plot(a,b)
function b=humps
b=1./((x-.3).^2+.01)+1./((x-.9).^2+.04)-6;
end
结果图形为:
命令行窗口执行:
>> p=fminsearch(@humps,0.5) %求局部最小以及此时x的值
%第一个参数为函数句柄,第二个参数为.近似值
p =
0.6370
在函数中调用了函数
>> humps(p)
%求出最小值
ans =
11.2528
P码文件:
一个.m文件被首次调用,matlab会对该文件进行语法分析,并生成相应的内部伪代码(Psecode P码)文件存放在内存中
当该文件被再次调用时,只调用P码文件,不对原.m文件进行语法分析。并且matlab会将该文件连同该文件调用的所有函数文件一起转变为P码文件
P码文件与.m文件有相同的文件名扩展名.p,p码文件运行速度高于原码文件。
如果存在同名的p码文件和.m文件,matlab会先调用p码文件。
P码文件相关命令:
inmem:罗列所有P码文件文件名
clear FunName:清除内存中名为FunName.p的p码文件
clear functions:清除所有P码文件