您的位置首页百科问答

关于MatLab函数

关于MatLab函数

的有关信息介绍如下:

问题补充说明:这个函数: h = text; set(h,'Interpreter','latex'); set(h,'string','$$\p(k)=\u_{o}(p_{o})p_{o}(frac{1}k-1)$$','position',[0.1,0.5],'FontSize',16); 运行的结果是:Warning: Unable to interpret TeX string 麻烦大家帮我解决2个问题: 1.为什... 函数:h = text;set(h,'Interpreter','latex');set(h,'string','$$\p(k)=\u_{o}(p_{o})p_{o}(frac{1}k-1)$$','position',[0.1,0.5],'FontSize',16);运行结:Warning: Unable to interpret TeX string麻烦家帮我解决2问题:1.现问题;2.解决. 展开

关于MatLab函数

自定义函数的途径:

M文件函数(Mfilefunction)

在线函数(InlineFunction)

匿名函数(AnonymousFunction)

1.M文件函数

范例

functionc=myadd(a,b)

%这补诉脸马审卫陆每应杆哥里可以写函数的使用说明,前面以%开头

%在工作区中,he变lpmyadd将显示此处的说明

c=a+b;

%end%非必须的

第一行function告诉Matlab这是一个函数,a,b是输入,c是输出,myadd是函数名。以m文件定义的函数必须保存为函数名的形式,上例中,函数应保存为m孙乱带执本为胜清yadd.m。要使用myadd来自函数,该函数必须在Mat360问答lab的搜索路径中。

调用方式:

在Matlab命令符后输入

a=1;b=2;

c=myadd(a,b)

关于m文件定义函数还有许多的说明,暂时略展政候去。。。

2.在线函数(InlineFunction)

通常作为参数传递给另外一个函数。比如fminsearch,lsqcurvefit等函数需要以函数作为参数。

在线函数从字符串表达背致菜把消备式创建函数,例如短手:

f=inline('x.^2','x');

创建了函数f(x)=省火独x^2。要计算f(3),在工作区输入f(3)即可。f([234])计算在x=234时的值

f=inline('x+y','x','y')

创建了二元函数f(x,y)=x+y,工作区输入f(2,3)计算2+3,等同于feval_r(f,2,3)。

3.匿名苦和马火苗函数(AnonymousFunction)

匿名函数使用函数句柄来表示匿名函数,定义形式为

函数句柄=@(变量名)函数表达式

例如:

f=@(x)x.^2

定义了函数f(x)=x^2,f(2)安减攻以城欢食谓计算在x=2处的值。

匿名函数可以调用Ma收细层持套积零松量报tlab函数,也可以使用工作区中存在的变量,例如

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)

函数句柄的另一个重要特征是可以流布浓逐心用来表示子函数、私有函数和嵌套函数。

Matlab7以后,建议以匿名函数取代在线函数!!!

在创建匿名函数时,Matlab记录了关于函数的信息,历绿怕当使用句柄调用该味带报望压续胡着谈函数的时候,Matlab不再以见种下践王音值轮进行搜索,而是立即执行该函数,极大提高了效率。

Matlab自定义函数的几种方法

1、函数文件+调用命令文件:玉似机需单独定义一个自定义函数的M文件;

2、函数文件+子函数:定义一个具有多个自定义函数的M文件;

3、Inline:无需M文件,直接定义;

4、匿名函数;

5、Syms+subs:无需M文件,直接定义;

6、字符串+subs:无需M文件,直接定义;

7、直接通过@符号定义.

1、函数文件+调用函数文件:定义多个M文件:

%调用函数文件:myfile.m

clear

clc

fort=1:10

y=mylfg(t);

fprintf(‘M^(1/3)=%6.4f\n席协烧品’,t,y);

end

%自定义函数文件:mylfg.m

fun奏ctiony=mylfg(x)%注意:函数名(mylfg)必须与文件名(mylfg.m)一致

Y=x^(1/3);

注:这种方法要求自定义函数必须单独写一个M文件,不能与调用的命令文件写在同一个M文件中。

2、函数文件+子函数:定义一个具有多个子函数的M文件

%命令文件:funtry2.m

function[]=funtry2()

fort=1:10

y=lfg2(t)

fprintf(‘M^(1/3)=%6.4f\n’);

End

functiony=lfg2(x)

Y=x^(1/3);

%注:自定义函数文件funtry2.m中可以定义多个子函数function。子函数lfg2只能被主函数和主函数中的其他子函数调用。

3、Inline:无需M文件,直接定义;

%inline命令用来定义一个内联函数:f=inline(‘函数表达式’,‘变量1’,’变量2’,……)。

调用方式:y=f(数值列表)%注意:代入的数值列表顺序应与inline()定义的变量名顺序一致。

例如:

f=inline(‘x^2+y’,’x’,’y’);

z=f(2,3)

Ans=7

注:这种函数定义方式是将它作为一个内部函数调用。特点是,它是基于Matlab的数值运算内核的,所以它的运算速度较快,程序效率更高。缺点是,该方法只能对数值进行代入,不支持符号代入,且对定义后的函数不能进行求导等符号运算。

例:

Clear

Clc

f=’x^2’;

Symsxg;

g=x^2;

h=inline(‘x^2’,’x’);

4.匿名函数

使用matlab函数句柄操作符@,可以定义指向matlab内置函数和用户自定义函数的函数句柄,函数句柄也可以像函数一样的使用。例如:

>>x=-pi:0.1:pi;

>>fh={@cos,@sin};

fh=

@cos@sin

>>plot(fh{2}(x))

5、Syms+subs:无需M文件,直接定义;

用syms定义一个符号表达式,用subs调用:

Symsfx%定义符号

f=1/(1+x^2);%定义符号表达式

subs(f,‘x’,代替x的数值或符号)

注:对于在syms中已经定义过的符号变量,在subs中进行替代时,单引号可以省略。但是,如果在syms后又被重新定义为其他类型,则必须加单引号,否则不可替换。

这种函数定义方法的特点是,可以用符号进行替换

Symsfx

f=1/(1+x^2);

subs(f,‘x’,’y^2’)

ans=

1/(1+(y^2)^2)

注:该方法的缺点是,由于使用符号运算内核,运算速度会大大降低。

6、字符串+subs:无需M文件,直接定义;

直接定义一个字符串,用subs命令调用。例如:

f=’1/(1+x^2)’%定义字符串

z=subs(f,’x’,2)

g=subs(f,’x’,’y^2’)

注:优点是,占用内存最少,定义格式方面自由。

缺点是,无法对字符进行符号转化。

当所要替代的符号在调用前都已经有了数值定义,则可以直接调用:subs(f).例如:

f=’x^2*y’;

x=2;y=3;

subs(f)

ans=12

7、直接通过@符号定义.

示例如下:

>>f=@(x,y)(x.^2-sin(y))

f=

@(x,y)(x.^2-sin(y))

>>f(2,3)

ans=

3.8589