匿名函数的基本用法:
handle = @(arglist)anonymous_function
其中
handle
为调用匿名函数时使用的名字。
arglist
为匿名函数的输入参数,可以是一个,也可以是多个,用逗号分隔。
anonymous_function
为匿名函数的表达式。
举个例子如下:
>> f=@(x,y)x^2+y^2;
>> f(1,2)
ans = 5
当然输入的是数组也是可以的:
>> f=@(x,y)x.^2+y.^2;
%注意需要点(.)运算
>> a=1:1:10;
>> b=10:-1:1;
>> f(a,b)
ans = 101 85 73 65 61 61 65 73 85 101
匿名函数的表达式中也可以有参数的传递,比如:
>> a=1:5;
>> b=5:-1:1;
>> c=0.1:0.1:0.5;
>> f=@(x,y)x.^2+y.^2+c;
>> f(a,b)
ans = 26.1000 20.2000 18.3000 20.4000 26.5000
c
作为表达式中的参数,进行了数据传递。上面都是单重匿名函数,也可以构造多重匿名函数,如:
>> f=@(x,y)@(a) x^2+y^+a;
>> f1=f(2,3)
f1 = @(a)x^2+y^+a
>> f2=f1(4)
f2 = 85
每个
@
后的参数从它后面开始起作用,一直到表达式的最后。
dxy=@(t,x)[-0.0544*x(2)+54000*(t>=0 & t<1)+6000*(t>=2 & t<3)+13000*(t>=5 & t<6)
-0.0106*x(1)]; %用匿名函数定义方程右端项,这里用逻辑语句定义分段函数
[t,xy]=ode45(dxy,[0:36],[0,21500])
subplot(2,1,1)
plot(t,xy(:,1),'r*',t,xy(:,2),'gD')
xlabel('时间t')
ylabel('人数')
subplot(2,1,2)
plot(xy(:,1),xy(:,2)) %画微分方程组的轨线
xlabel('A军人数x')
ylabel('B军人数y')
