1.matlab是按列顺序存储数据的,因此按列访问,遍历数值数组要比按行访问,遍历快
2.简短的数学表达式函数可以选用匿名函数来实现;而复杂的,内部要做较多事情的函数可以选用子函数和嵌套函数来实现;
其中,在变量共享以及传递方面,嵌套函数具有较大的优势,尤其是用子函数实现并且用到全局变量的场合,用嵌套函数可以避免用全局变量,并且实现起来方便容易。(?)
3.就访问效率,double型数组和struct数组的访问效率相当,cell型数组最慢。struct占用内存大
4.cell型的数组可以存放包括匿名函数在内的函数句柄。这样,通过cell数组,可以存储多个函数,并且可以批量执行函数。
epl:求各个函数在x=2处的函数值
fun=cell(3,1);
fun{1}=@(x)x^2+sin(x);
fun{2}=@(x)x^3-5;
fun{3}=@(x)sin(1/sqrt(x));
val=cellfun(@(x)x(2),fun)
5.彼此没有嵌套关系的嵌套函数间是不能简单得共享变量的。如果非要共享,只能通过它们所在的主函数来进行
epl:有嵌套关系
function r=NestedFunctionVarScopeDemo(a)
b=a+1;
function Nested1
c=b+1;
function Nested11
d=c+a;
end
Nested11;
end
Nested1
r=d;
end
保存后在命令窗口输入:r=NestedFunctionVarScopeDemo(1)
r=
4
epl:没有嵌套关系
function r=NestedFunctionVarScopeDemo2(a)
b=a+1;
function Nested1
c=b+1;
c1=10;
Nested2;
c2=d^2;
end
function Nested2
d=2*b;
end
Nested1
r=c2
end
运行结果:r=NestedFunctionVarScopeDemo2(1)
???Undefined function or variable 'd'.
Error in==>NestedFunctionVarScopeDemo2>Nested1 at 7
c2=d^2;
Error in==>NestedFunctionVarScopeDemo2 at 12
Nested1
6.父函数和嵌套函数之间的变量共享需要通过调用来实现,父函数可以调用嵌套在其中的第一重嵌套函数,而不能调用第二重或者更深重的嵌套函数。
嵌套函数可以调用父函数。