matlab怎么定义函数啊?
matlab中定义函数的方式有以下几种:
1、函数文件+调用函数文件:定义多个M文件。
% 调用函数文件:myfile.m
clear
clc
for x=1:10
y=mylfg(x);
end
%自定义函数文件: mylfg.m
function y=mylfg(x) %注意:函数名(mylfg)必须与文件名(mylfg.m)一致
Y=3*x+1;
注:这种方法要求自定义函数必须单独写一个M文件,不能与调用的命令文件写在同一个M文件中。
2、函数文件+子函数:定义一个具有多个子函数的M文件。
%命令文件:funtry2.m
function []=funtry2()
for x=1:10
y=lfg2(x);
End
function y=lfg2(x)
Y= 3*x+1;
%注:自定义函数文件funtry2.m中可以定义多个子函数function。子函数lfg2只能被主函数和主函数中的其他子函数调用。
3、Inline内联函数:无需M文件,直接定义。
%inline命令用来定义一个内联函数:f=inline(‘函数表达式’, ‘变量1’,’变量2’,……)。
调用方式:y=f(数值列表) %注意:代入的数值列表顺序应与inline()定义的变量名顺序一致。
例如:
f=inline(‘3*x+1‘,’x’);
z=f(2)
Ans=7
注:这种函数定义方式是将它作为一个内部函数调用。特点是,它是基于Matlab的数值运算内核的,所以它的运算速度较快,程序效率更高。 缺点是该方法只能对数值进行代入,但是不支持符号代入,且对定义后的函数不能进行求导等符号运算。
2016-06-28 · 中小学教师,杨建朝,蒲城县教研室蒲城县教育学会、教育领域创作...
M文件函数(M file function)
在线函数(Inline Function)
匿名函数(Anonymous Function)
1.M文件函数
范例
function c=myadd(a,b)
%这里可以写函数的使用说明,前面以%开头
%在工作区中,help myadd将显示此处的说明
c=a+b;
%end %非必须的
第一行function告诉Matlab这是一个函数,a,b是输入,c是输出,myadd是函数名。以m文件定义的函数必须保存为函数名的形式,上例中,函数应保存为myadd.m。要使用myadd函数,该函数必须在Matlab的搜索路径中。
调用方式:
在Matlab命令符后输入
a=1;b=2;
c=myadd(a,b)
关于m文件定义函数还有许多的说明,暂时略去。。。
2.在线函数(Inline Function)
通常作为参数传递给另外一个函数。比如fminsearch,lsqcurvefit等函数需要以函数作为参数。
在线函数从字符串表达式创建函数,例如:
f=inline('x.^2','x');
创建了函数f(x)=x^2。要计算f(3),在工作区输入f(3)即可。f([2 3 4])计算在x=2 3 4时的值
f=inline('x+y','x','y')
创建了二元函数f(x,y)=x+y,工作区输入f(2,3)计算2+3,等同于feval_r(f,2,3)。
3.匿名函数(Anonymous Function)
匿名函数使用函数句柄来表示匿名函数,定义形式为
函数句柄=@(变量名) 函数表达式
例如:
f=@(x) x.^2
定义了函数f(x)=x^2,f(2)计算在x=2处的值。
匿名函数可以调用Matlab函数,也可以使用工作区中存在的变量,例如
a=2;
f=@(x) x.^2+a
f(2) %计算时引用了变量a
a=0;
f(2) %仍然引用的是a=2
匿名函数也可以由Matlab的内置函数或M文件函数创建,例如
f=@sin %f(x)=sin(x)
f(pi/2) %sin(pi/2)
functions(f) %查看函数信息
利用单元数组可以创建多个函数的句柄,例如
f={@sin @cos}
f{1}(pi/2) %计算sin(pi/2)
f{2}(pi) %计算cos(pi)
函数句柄的另一个重要特征是可以用来表示子函数、私有函数和嵌套函数。
Matlab 7以后,建议以匿名函数取代在线函数!!!
在创建匿名函数时,Matlab记录了关于函数的信息,当使用句柄调用该函数的时候,Matlab不再进行搜索,而是立即执行该函数,极大提高了效率。
(1)inline函数:
f=inline('3*x+1','x')
可以得到:f=
Inline function :
f(x)=3*x+1
输入t=0:3;
f(t)
ans =
1 4 7 10
(2)匿名函数:
f=@(x)3*x+1
可以得到:f=
@(x)3*x+1
输入t=0:3;
f(t)
ans =
1 4 7 10
(3)创建M-函数
新建m文件,输入:
function f=equation(x)
f=3*x+1;
保存m文件到工作文件夹;
调用:
输入t=0:3;
f=equation(t)
ans =
1 4 7 10
接着在matlab命令窗口中输入 pll(1,2,3,4)看看会得到什么? 也可以另外创建一个m文件,在这里调用pll()这个函数。
改动两处写错的语句:
“ xlable('Aspect angle,Theta[Degrees]');
ylable('RCS-dBsm');”
改为:
“ xlabel('Aspect angle,Theta[Degrees]');
ylabel('RCS-dBsm');”
输入命令为rcs_cylinder(1,2,3,4,5,'Circular')
得到的图形为: