我是靠谱客的博主 整齐老鼠,最近开发中收集的这篇文章主要介绍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,& nleq 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

最后

以上就是整齐老鼠为你收集整理的MATLAB之函数文件一、函数文件的基本结构二、函数的调用的全部内容,希望文章能够帮你解决MATLAB之函数文件一、函数文件的基本结构二、函数的调用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部