matlab函数⼦函数,Matlab函数、⼦函数的定义⽅法
Matlab函数、⼦函数的定义⽅法
除了最常使⽤的m⽂件函数,matlab还可以通过内联函数和匿名函数⾃定义函数。
1. m⽂件函数
以function关键字开头的m⽂件,并且通常函数名要与⽂件名相同。例如下⾯的内容保存为myfun2.m即是m⽂件函数,它⽤来求两数之和:
function f=myfun2(x,y)
f=x+y;
matlab定义函数表达式2. ⼦函数
matlab可以在m⽂件函数中定义⼀个函数和多个⼦函数,但是需要注意的是⼦函数只能由同⼀m⽂件中的函数调⽤。如下⾯的例⼦:
function [max,min]=mypfun(x) %主函数
n=length(x);
max=mysubfun1(x,n);
min=mysubfun2(x);
function r=mysubfun1(x,n) %⼦函数1
x1=sort(x);
r=x1(n);
function r=mysubfun2(x) %⼦函数2
x1=sort(x);
r=x1(1);
3. 内联函数
在函数⽂件内,m脚本和command窗⼝都可以⽤的⼀种定义函数的⽅式,但是要注意这种函数⽐较多的时候会占⽤⽐较多的内存空间。
如:
>> ci=inline('x.^2')
ci =
Inline function:
ci(x) = x.^2
4. 匿名函数
使⽤matlab函数句柄操作符@,可以定义指向matlab内置函数和⽤户⾃定义函数的函数句柄,函数句柄也可以像函数⼀样的使⽤。例如:
>>x=-pi:0.1:pi;
>> fh={@cos,@sin};
fh =
@cos @sin
>>plot(fh{2}(x))
matlab主程序调⽤⼦函数时变量代换问题
假如有⼀⼦函数
function fun1=(x)
a=[a1 a2 a3]
b=[b1 b2 b3]
p=polyfit(a,b,2)
y=poly2sym(p)
假如可得到结果
p1*x^2+p2*x+p3
现主程序需调⽤该函数,但⾃变量不是⼀维⽮量x,⽽是⼆维x(j,i)或三维⽮量x(j,i,k),
⽐如想得到:
p1*x(j,i)^2+p2*x(j,i)+p3
请⾼⼿指教如何在主程序中实现呢,⼗分感谢!
下⾯的例⼦可以参考⼀下,这样y=poly2sym(p)这句貌似就没什么⽤了.
如果你仅仅是想通过调⽤⾃⼰定义的函数得到⼀个具体的值,⽽不是想得到诸如p1*x^2+p2*x+p3这样的符号表达式,那么我觉得就没必要⽤poly2sym.
另外,就算是想得到符号表达式,我觉得p1*x(j,i)^2+p2*x(j,i)+p3也是多余的。
因为我觉得,
p1*x^2+p2*x+p3中的x就可以代表⼆维x(j,i)或三维⽮量x(j,i,k)的吧。
例⼦:
>> a=[1 2 3];
b=[1 2 3];
p=polyfit(a,b,2);
y=poly2sym(p)
y =
x
>> x0=[11,12];
>> y0=polyval(p,x0)
y0 =
11 12

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。