Matlab高效编程笔记

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.父函数和嵌套函数之间的变量共享需要通过调用来实现,父函数可以调用嵌套在其中的第一重嵌套函数,而不能调用第二重或者更深重的嵌套函数。

嵌套函数可以调用父函数。

 

posted @ 2017-02-21 17:44  不染  阅读(387)  评论(0编辑  收藏  举报