MATLAB如何定义函数
5个回答
展开全部
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;
注:这e5a48de588b67a6431333365653330种方法要求自定义函数必须单独写一个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的数值运算内核的,所以它的运算速度较快,程序效率更高。
缺点是该方法只能对数值进行代入,但是不支持符号代入,且对定义后的函数不能进行求导等符号运算。
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;
注:这e5a48de588b67a6431333365653330种方法要求自定义函数必须单独写一个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的数值运算内核的,所以它的运算速度较快,程序效率更高。
缺点是该方法只能对数值进行代入,但是不支持符号代入,且对定义后的函数不能进行求导等符号运算。
展开全部
自定义函数的途径:
M文件函数(M
file
function)
在线函数(Inline
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)。
函数句柄=@(变量名)
函数表达式例如:f=@(x)
x.^2
定义了函数f(x)=x^2,f(2)计算在x=2处的值。
f(2)
%计算时引用了变量aa=0;f(2)
%仍然引用的是a=2
f=@sin
%f(x)=sin(x)
f(pi/2)
%sin(pi/2)
functions(f)
%查看函数信息
利用单元数组可以创建多个函数的句柄,例如
f={@sin
@cos}
f{1}(pi/2)
%计算sin(pi/2)
函数句柄的另一个重要特征是可以用来表示子函数、私有函数和嵌套函数。
M文件函数(M
file
function)
在线函数(Inline
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)。
函数句柄=@(变量名)
函数表达式例如:f=@(x)
x.^2
定义了函数f(x)=x^2,f(2)计算在x=2处的值。
f(2)
%计算时引用了变量aa=0;f(2)
%仍然引用的是a=2
f=@sin
%f(x)=sin(x)
f(pi/2)
%sin(pi/2)
functions(f)
%查看函数信息
利用单元数组可以创建多个函数的句柄,例如
f={@sin
@cos}
f{1}(pi/2)
%计算sin(pi/2)
函数句柄的另一个重要特征是可以用来表示子函数、私有函数和嵌套函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
新建一个m文件
在m文件里面第一行输入function
[X,Y]=pll(X1,Y1,X2,Y2),这里x1
x2
y1
y2是你函知数的输入值,
x
y是输出值,接着定义你要实现的功能,比如:x
=
x1
+
x2;
y
=
y1
+
y2;
接着保存这个m文件道,注意!!
这个m文件的名字必须是定义的函数的名字,即保存为回pll.m
否则会出错。
接着在matlab命令窗口中输入
pll(1,2,3,4)看看会得到什么?答
也可以另外创建一个m文件,在这里调用pll()这个函数。
在m文件里面第一行输入function
[X,Y]=pll(X1,Y1,X2,Y2),这里x1
x2
y1
y2是你函知数的输入值,
x
y是输出值,接着定义你要实现的功能,比如:x
=
x1
+
x2;
y
=
y1
+
y2;
接着保存这个m文件道,注意!!
这个m文件的名字必须是定义的函数的名字,即保存为回pll.m
否则会出错。
接着在matlab命令窗口中输入
pll(1,2,3,4)看看会得到什么?答
也可以另外创建一个m文件,在这里调用pll()这个函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
matlab
中的函数参数个数,是你自己在函数中定义的啊,跟你函数里要调用的外部变量的个数相同。
例如:
主函数:
clc;clear;
sex
=
0;
%
a表示性别,1
表示男,0表示女
age
=
11;
%
b表示岁数
kid(sex,age);
函数kid:
function
high
=
kid(a,b)
%计算10到15岁小孩身高
if(b>=10
&&
b<=15)
if
(a
==
1)
high
=
b*0.1;
fprintf('the
height
of
the
boy
is
%1.3f
m\n',high);
elseif
(a
==
0);
high
=
b*0.105;
fprintf('the
height
of
the
girl
is
%1.3f
m\n',high);
else
fprintf('out
of
sex
range\n');
end
else
fprintf('out
of
age
range\n');
end
中的函数参数个数,是你自己在函数中定义的啊,跟你函数里要调用的外部变量的个数相同。
例如:
主函数:
clc;clear;
sex
=
0;
%
a表示性别,1
表示男,0表示女
age
=
11;
%
b表示岁数
kid(sex,age);
函数kid:
function
high
=
kid(a,b)
%计算10到15岁小孩身高
if(b>=10
&&
b<=15)
if
(a
==
1)
high
=
b*0.1;
fprintf('the
height
of
the
boy
is
%1.3f
m\n',high);
elseif
(a
==
0);
high
=
b*0.105;
fprintf('the
height
of
the
girl
is
%1.3f
m\n',high);
else
fprintf('out
of
sex
range\n');
end
else
fprintf('out
of
age
range\n');
end
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当这个函数被其他函数调用时,这个错误不会出现;这个错误出现的原因在于程序运行时,没有操作为x和xdata赋值。
如果在另一个函数里调用,如
function
f1
b=malthus([3
2],[3
2])
function
f
=malthus(
x,xdata)
f
=exp(x(1)+xdata.*x(2))
end
end
就不会有问题,当调试函数malthus时,可在函数内暂时声明与输入变量同名的变量,并为之赋值,调试结束后删掉
如果在另一个函数里调用,如
function
f1
b=malthus([3
2],[3
2])
function
f
=malthus(
x,xdata)
f
=exp(x(1)+xdata.*x(2))
end
end
就不会有问题,当调试函数malthus时,可在函数内暂时声明与输入变量同名的变量,并为之赋值,调试结束后删掉
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询