MATLAB之函数文件

目录

一、函数文件的基本结构

二、函数的调用

1.函数调用的格式

2.函数的递归调用


将特定的算法写成函数的形式,可以提高程序的可重复性和程序设计的效率。并且函数文件定义了输出参数和输入参数的对应关系,方便外部调用。事实上,MATLAB提供的标准函数都是由函数文件定义的。

一、函数文件的基本结构

 函数文件由function语句引导,其基本结构如下:

function 输出参数表=函数名(输入参数表)

函数体语句

其中,以function开头的一行为引导行,表示定义一个函数;

函数名的命名规则与变量名的命名规则一样;

在函数定义时,输入输出参数没有分配储存空间,称为形式参数,简称形参。当有多个形参时,形参之间用逗号分隔,组成形参表。当输出形参多于一个时,应用方括号括起来,构成一个输出矩阵 ;

将函数文件以函数名.m存盘,然后在MATLAB命令行窗口调用该函数。

例,编写函数文件,求半径为 r 的圆的面积和周长。并求r=10时的情况。

程序如下:

function [s,c]=fcircle(r)
s=pi*r*r;
c=2*pi*r;
end

 r=10时的情况如下:

>> [s,c]=fcircle(10)

s =

  314.1593


c =

   62.8319

二、函数的调用

1.函数调用的格式

 函数文件建好之后,就可以调用该函数,调用格式如下:

[输出实参表]=函数名(输入实参表)

在调用函数时,函数输入输出参数称为实际参数,简称实参。

要注意的是,函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错。函数调用时,先将实参传给相应的形参,从而实现参数的传递,然后再执行函数的功能。 

例,利用函数文件,实现直角坐标(x,y)与极坐标(\rho,\theta)之间的转换。转换公式为

\rho=\sqrt{x^2+y^2}

\theta=\arctan(\frac{y}{x})

 程序如下:

function [rho,theta]=tran(x,y)
rho=sqrt(x*x+y*y);
theta=atan(y/x);
end

x=45,y=45时的情况如下:

>> [rho,the]=tran(45,45)

rho =

   63.6396


the =

    0.7854

实际上,MATLAB提供了直角坐标与极坐标之间的转换函数,发表如下。

(1)[th,r]=cart2pol(x,y):将直角坐标转换为极坐标。

(2)[x,y]=pol2cart(th,r):将极坐标转换为直角坐标。

>> [the,rho]=cart2pol(45,45)

the =

    0.7854


rho =

   63.6396


>> [x,y]=pol2cart(pi/4,45*sqrt(2))

x =

   45.0000


y =

    45

2.函数的递归调用

在MATLAB中,函数可以嵌套调用,即一个函数可以调用其他函数,甚至可以调用它自身。一个函数调用它自身称为函数的递归调用

例1,利用函数的递归调用,求n!

n!本身就是以递归的形式定义的:

n!=\begin{cases} 1,& n\leq 1 \\ n(n-1)!,& n>1 \\ \end{cases}

显然,要求n!需要求(n-1)!,这时可以采用递归调用。

程序如下:

function f=factor(n)
if n<=1
    f=1;
else
    f=n*factor(n-1); %递归调用求(n-1)!
end

n=5的情况如下:

>> f=factor(5)

f =

   120

例2,在一个脚本文件main2.m中调用函数文件factor.m,求

s=1!+2!+\cdots+n!

程序如下:

s=0;
n=input('Please input n=');
for i=1:n
    s=s+factor(i);
end
disp(['1到',num2str(n),'的阶乘和为:',num2str(s)])

n=5的情况如下:

>> main2
Please input n=5
1到5的阶乘和为:153

  • 12
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值