matlab 实验6 函数及其调用
- 格式:doc
- 大小:37.50 KB
- 文档页数:6
在MATLAB中,你可以通过以下几种方式调用一个函数:
1. 直接调用:这是最简单的方式。
只需在MATLAB命令窗口或脚本中键入函数名,然后跟上一对圆括
号 ()。
matlab复制代码function_name();
如果你需要传递参数给函数,只需在圆括号内放入参数:
matlab复制代码function_name(arg1, arg2, ...);
2. 通过脚本调用:你可以在脚本中调用函数。
首先,你需要创建一个包含函数定义的文件(通常以.m
为后缀)。
然后,在另一个脚本中,你可以通过文件名(不包括.m后缀)来调用该函数。
3. 通过命令窗口调用:在MATLAB命令窗口中,你可以直接键入函数名和参数来调用函数。
4. 嵌套函数调用:在MATLAB中,函数可以在另一个函数的内部定义。
这样的函数被称为嵌套函数。
你
可以在外部函数的代码块内部直接调用嵌套函数。
5. 回调和事件处理:在GUI(图形用户界面)应用程序或事件驱动的环境中,如回调函数或事件处理程
序,你可以根据特定的事件或条件来调用函数。
6. 通过子函数调用:在一个大的.m文件中,你可以定义多个函数。
这些函数称为嵌套函数或子函数,
它们可以在文件中的任何地方被主函数调用。
7. 动态/即时方法:有时你可能想在MATLAB中动态地创建和调用函数。
这可以通过feval函数实现,
该函数允许你动态地传递字符串作为函数名,并传递参数给该函数。
请注意,为了确保函数的正确执行和避免潜在的错误,最好遵循良好的编程实践,如使用有意义的变量名、注释、适当的错误处理等。
MATLAB的函数调用1. 简介MATLAB(Matrix Laboratory)是一种用于算法开发、数据可视化和数值计算的高级技术计算语言和环境。
它提供了许多内置函数,可以方便地完成各种数学、统计和工程计算任务。
在MATLAB中,函数调用是实现特定功能的关键步骤之一。
本文将详细介绍MATLAB的函数调用以及它们的用法和特点。
2. 函数调用的基本语法在MATLAB中,函数调用通常遵循以下基本语法:output = function_name(input1, input2, ...)•output是函数调用的结果,也称为函数的返回值。
可以将其保存在一个变量中以供后续使用。
有些函数可能没有返回值,此时可以省略output。
•function_name是要调用的函数的名称。
•input1, input2, ...是传递给函数的输入参数。
输入参数的数量和类型取决于每个特定函数的要求。
3. 内置函数的调用MATLAB提供了许多内置函数,可以执行各种计算任务。
下面是一些常用的内置函数及其用法示例:3.1. sqrt()函数sqrt()函数用于计算给定数的平方根。
result = sqrt(16)结果:result = 43.2. sin()函数sin()函数用于计算给定角度的正弦值。
result = sin(pi/2)结果:result = 13.3. sum()函数sum()函数用于计算给定向量或矩阵的元素之和。
A = [1, 2, 3; 4, 5, 6];result = sum(A, 'all')结果:result = 213.4. plot()函数plot()函数用于绘制二维线条图。
x = 0:0.1:2*pi;y = sin(x);plot(x, y)结果:绘制出一个正弦曲线图。
4. 自定义函数的调用除了内置函数,MATLAB还允许用户自定义函数来满足特定的计算需求。
用户可以使用MATLAB语言来编写自己的函数,并在需要时进行调用。
matlab创建函数及调用函数MATLAB是一种十分强大的计算软件,一直以来都是科学与工程领域中的常用工具。
它可以大大简化数值计算和深度探索数据的过程。
在MATLAB的编程过程中,我们需要频繁使用函数,那么怎么创建、调用函数呢?1、创建函数在MATLAB中,我们可以使用命令行创建函数,也可以使用编辑器创建函数。
这里我们以命令行方式来介绍。
首先,我们需要在命令行中输入“edit filename.m”,其中filename是自己取的函数名字,.m是MATLAB的函数文件扩展名。
接着会出现一个新的编辑器窗口,在这个窗口中输入函数的具体内容。
例如,我们想要创建一个函数用于计算两个数的和,可以这样写:function [res] = add(num1, num2)res = num1 + num2;end其中,function后面跟着函数名;[res]表示函数的输出参数,如果有多个输出,需要使用逗号隔开;add(num1, num2)中add为函数名,num1和num2是输入参数;最后,下面的语句计算函数结果,结果存在变量res中。
2、调用函数在MATLAB中,调用已经创建好的函数其实很简单,只需要在命令行中输入函数名加上相应的参数即可。
例如,我们调用上述函数来计算1+2,可以这样写:add(1,2)输出结果为3。
如果你之前正确定义了函数,那么调用函数就是这样简单,虽然看上去这样简单,但是我们必须要注意的是函数的正确定义。
总体而言,MATLAB创建和调用函数是编程中必不可少的操作,通过对函数的合理定义和使用,可以大大提高编程效率,并且保证代码的逻辑性和规范性。
希望以上几点能对大家在MATLAB学习的道路上有所帮助,并且感谢阅读!。
MATLAB实验报告学校:湖北文理学院学院:物理与电子工程学院专业:电子信息工程学号: 2013128182 姓名:张冲指导教师:宋立新实验一 MATLAB环境的熟悉与基本运算一、实验目的:1.熟悉MATLAB开发环境2.掌握矩阵、变量、表达式的各种基本运算二、实验内容1、学习使用help命令,例如在命令窗口输入help eye,然后根据帮助说明,学习使用指令eye(其它不会用的指令,依照此方法类推)2、学习使用clc、clear,观察command window、command history和workspace等窗口的变化结果。
3、初步程序的编写练习,新建M-file,保存(自己设定文件名,例如exerc1、exerc2、exerc3……),学习使用MATLAB的基本运算符。
三、练习1)help rand,然后随机生成一个2×6的数组,观察command window、command history和workspace等窗口的变化结果。
2)学习使用clc、clear,了解其功能和作用。
3)用逻辑表达式求下列分段函数的值4)求[100,999]之间能被21整除的数的个数。
(提示:rem,sum的用法)四、实验结果1)2)clc:清除命令窗口所有内容,数值不变;clear:初始化变量的值。
3)4)实验二 MATLAB数值运算一、实验目的1、掌握矩阵的基本运算2、掌握矩阵的数组运算二、实验内容1)输入C=1:2:20,则C(i)表示什么?其中i=1,2,3, (10)2)输入A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2; 3 3 3],在命令窗口中执行下列表达式,掌握其含义:A(2, 3) A(:,2) A(3,:) A(:,1:2:3) A(:,3).*B(:,2)A(:,3)*B(2,:) A*B A.*B A^2 A.^2 B/A B./A3)二维数组的创建和寻访,创建一个二维数组(4×8)A,查询数组A第2行、第3列的元素,查询数组A第2行的所有元素,查询数组A第6列的所有元素。
实验六基于MATLAB的离散系统时域分析一、实验名称基于MATLAB的离散系统时域分析二、实验目的1.掌握离散时间序列卷积和MATLAB实现的方法。
2.掌握离散系统的单位响应及其MATLAB的实现方法。
3.掌握用MATLAB表示离散系统的时域响应。
三、实验器材安装MATLAB软件的电脑一台四、预习要求1.熟悉离散时间序列的卷积和原理2.熟悉编程实现离散时间序列的卷积和3.熟悉离散系统的单位响应及其常用函数的调用格式五、实验原理1. (1)单位序列(单位脉冲序列)MATLAB描述。
MATLAB函数可写为k=[k1:k2]; %k1,k2为时间序列的起始及终止时间序号fk=[(k-k0)==0]; %k0为§(k)在时间轴上的位移量stem(k,fk)(2)单位阶跃序列MATLAB描述。
MARLAB函数可写为k=[k1:k2] %k1,k2为时间序列的起始及终止时间序号fk=[(k-k0)>=0] %k0为 (k)在时间轴上的位移量stem(k,fk)2. 离散系统的时域响应MATLAB提供了求离散系统响应的专用函数filter()filter函数能求出差分方程描述的离散系统在指定时间范围内的输入序列所产生的响应序列的数值解。
其调用格式如下:filter(b,a,x)其中,b 和a 是由描述系统的差分方程的系数决定的、表示离散系统的两个行向量;x 是包含输入序列非零样点的行向量。
上述命令将求出系统在与x 的取样时间点相同的输出序列样值。
3.离散时间序列的卷积设序列f1(k)在1n ~2n 范围内非零,f2(k)在1m ~2m 范围内非零,则f1(k)时域宽度为L1=2n -1n +1,f2(k)的时域宽度为L2=2m -1m +1。
由卷积和的定义可得,序列y(k)=f1(k)*f2(k)的时域宽度为L=L1+L2-1,且只在(1n +1m )~(1n +1m +L1+L2-2)范围内非零。
实验一 MATLAB基本操作一、实验目的1、了解MATLAB应用程序环境2、掌握MATLAB语言程序的书写格式和MATLAB语言程序的结构。
3、掌握在MATLAB应用环境下编写程序4、掌握MATALB调试过程,帮助文件5、掌握MATLAB语言上机步骤,了解运行一个MATLAB程序的方法。
6、本实验可在学习完教材第一章后进行。
二、主要仪器及耗材PC电脑,MATLAB6.5软件三、实验内容和步骤1、MATLAB语言上机步骤:(1)、进入系统在C盘或其他盘上找到MATLAB或MATLAB6.5,然后双击其图标打开文件夹。
然后进行编辑源程序->编译->连接->执行程序->显示结果(2)、常用命令编辑切换(F6),编译(F9),运行(CTRL+F9),显示结果(ALT+F5)其它常用命令见“附录一”。
2、有下面的MATLAB程序。
(1)数值计算功能:如,求方程 3x4+7x3 +9x2-23=0的全部根p=[3,7,9,0,-23]; %建立多项式系数向量x=roots(p) %求根(2)绘图功能:如,绘制正弦曲线和余弦曲线x=[0:0.5:360]*pi/180;plot(x,sin(x),x,cos(x));(3)仿真功能:如,请调试上述程序。
3、熟悉MATLAB环境下的编辑命令,具体见附录一。
三、实验步骤1、静态地检查上述程序,改正程序中的错误。
2、在编辑状态下照原样键入上述程序。
3、编译并运行上述程序,记下所给出的出错信息。
4、按照事先静态检查后所改正的情况,进行纠错。
5、再编译执行纠错后的程序。
如还有错误,再编辑改正,直到不出现语法错误为止。
四、实验注意事项1、记下在调试过程中所发现的错误、系统给出的出错信息和对策。
分析讨论对策成功或失败的原因。
2、总结MATLAB程序的结构和书写规则。
五、思考题1、matlab到底有多少功能?2、MATLAB的搜索路径3、掌握使用MATLAB帮助文件实验二 MATLAB 矩阵及其运算一、 实验目的1、了解矩阵的操作,包括矩阵的建立、矩阵的拆分、矩阵分析等2、了解MATLAB 运算,包括算术运算、关系运算、逻辑运算等3、掌握字符串的操作,了解结构数据和单元数据。
MATLAB程序设计软件实验报告专业及班级____通信中兴131_______姓名____魏增_______________学号_____6102213869________日期_____2015.6.15_________南昌大学实验报告学生姓名: 魏增 学 号: 6102213869 班级: 中兴131班 实验类型:□ 验证 □ 综合 ■ 设计 □ 创新 实验日期: 实验成绩:实验一 MA TLAB 的基本使用一、 实验目的1.了解MA TALB 程序设计语言的基本特点,熟悉MA TLAB 软件的运行环境;2.掌握变量、函数等有关概念,掌握M 文件的创建、保存、打开的方法,初步具备将一般数学问题转化为对应计算机模型处理的能力;3.掌握二维图形绘制的方法,并能用这些方法实现计算结果的可视化。
二、 MATLAB 的基础知识通过本课程的学习,应基本掌握以下的基础知识: 一. MA TLAB 简介二. MA TLAB 的启动和退出 三. MA TLAB 使用界面简介 四. 帮助信息的获取五. MA TLAB 的数值计算功能六. 程序流程控制 七. M 文件八. 函数文件九. MATLAB 的可视化 三、上机练习1. 仔细预习第二部分内容,关于MA TLAB 的基础知识。
2. 熟悉MA TLAB 环境,将第二部分所有的例子在计算机上练习一遍3、已知矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=123456789,987654321B A 。
求A*B ,A .* B ,比较二者结果是否相同。
并利用MA TLAB 的内部函数求矩阵A 的大小、元素和、长度以及最大值。
解:>> A=[1 2 3;4 5 6;7 8 9]; >> B=[9 8 7;6 5 4;3 2 1];>> A*Bans =30 24 18 84 69 54 138 114 90 >> A.*B ans =9 16 2124 25 2421 16 9 两者结果不同 >> [m,n]=size(A) m =3 n =3 >> b=sum(A) b =12 15 18 >> a=length(A) a = 3 >>max(A)ans =7 8 94、Fibonacci 数组的元素满足Fibonacci 规则:),2,1(,12=+=++k a a a k k k ;且121==a a 。
实验报告说明:matlab 课程实验需撰写8个实验报告,每个实验报告内容写每次实验内容中标号呈黑体大号字显示的题目。
第一次实验内容:实验一 MATLAB 运算基础一、实验目的1.熟悉启动和退出MATLAB 的方法。
2.熟悉MATLAB 命令窗口的组成。
3.掌握建立矩阵的方法。
4.掌握MATLAB 各种表达式的书写规则以及常用函数的使用。
二、实验内容1.先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。
(1)22sin 8511z e ︒=+(2)12ln(2z x =,其中2120.455i +⎡⎤=⎢⎥-⎣⎦(3)0.30.33sin(0.3), 3.0, 2.9, 2.8,,2.8,2.9,3.02a ae e z a a --=+=---提示:利用冒号表达式生成a 向量,求各点的函数值时用点乘运算。
(4)2220141122123t t z t t t t t ⎧≤<⎪=-≤<⎨⎪--≤<⎩,其中t =0:0.5:2.5 提示:用逻辑表达式求分段函数值。
2.已知12344347873657A -⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦,131203327B -⎡⎤⎢⎥=⎢⎥⎢⎥-⎣⎦求下列表达式的值:(1) A+6=B 和A-B+I(其中I 为单位矩阵)。
(2) A*B 和A.*B 。
(3) A^3和A^.3 。
(4) A/B 和B\A 。
(5)[A ,B]和[A([1,3],;);B^2] 。
3.设有矩阵A 和B12345678910111213141516171819202122232425A ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦, 30161769023497041311B ⎡⎤⎢⎥-⎢⎥⎢⎥=-⎢⎥⎢⎥⎢⎥⎣⎦(1) 求它们的乘积C 。
(2) 将矩阵C 的右下角3×2子矩阵赋给D (3) 查看MATLAB 工作空间使用情况。
4.完成下列操作:(1)求[100,999]之间能被21整除的数的个数。
实验一:Matlab操作环境熟悉一、实验目的1.初步了解Matlab操作环境.2.学习使用图形函数计算器命令funtool及其环境。
二、实验内容熟悉Matlab操作环境,认识命令窗口、内存工作区窗口、历史命令窗口;学会使用format 命令调整命令窗口的数据显示格式;学会使用变量和矩阵的输入,并进行简单的计算;学会使用who和whos命令查看内存变量信息;学会使用图形函数计算器funtool,并进行下列计算:1.单函数运算操作。
求下列函数的符号导数(1)y=sin(x);(2) y=(1+x)^3*(2-x);求下列函数的符号积分(1)y=cos(x);(2)y=1/(1+x^2);(3)y=1/sqrt(1—x^2);(4)y=(x1)/(x+1)/(x+2)求反函数(1)y=(x-1)/(2*x+3); (2) y=exp(x);(3) y=log(x+sqrt(1+x^2));代数式的化简(1)(x+1)*(x-1)*(x-2)/(x-3)/(x—4);(2)sin(x)^2+cos(x)^2;(3)x+sin(x)+2*x—3*cos(x)+4*x*sin(x);2.函数与参数的运算操作。
从y=x^2通过参数的选择去观察下列函数的图形变化(1)y1=(x+1)^2(2)y2=(x+2)^2(3) y3=2*x^2 (4) y4=x^2+2 (5) y5=x^4 (6) y6=x^2/2 3.两个函数之间的操作求和(1)sin(x)+cos(x) (2) 1+x+x^2+x^3+x^4+x^5乘积(1)exp(—x)*sin(x) (2) sin(x)*x商(1)sin(x)/cos(x); (2) x/(1+x^2); (3) 1/(x—1)/(x—2); 求复合函数(1)y=exp(u) u=sin(x) (2) y=sqrt(u) u=1+exp(x^2)(3) y=sin(u) u=asin(x) (4) y=sinh(u) u=-x实验二:MATLAB基本操作与用法一、实验目的1.掌握用MATLAB命令窗口进行简单数学运算。
实验项目及学时安排实验一 MATLAB环境的熟悉与基本运算 2学时实验二 MATLAB数值计算实验 2学时实验三 MATLAB数组应用实验 2学时实验四 MATLAB符号计算实验 2学时实验五 MATLAB的图形绘制实验 2学时实验六 MATLAB的程序设计实验 2学时实验七 MATLAB工具箱Simulink的应用实验 2学时实验八 MATLAB图形用户接口GUI的应用实验 2学时实验一 MATLAB环境的熟悉与基本运算一、实验目的1.熟悉MATLAB开发环境2.掌握矩阵、变量、表达式的各种基本运算二、实验基本知识1.熟悉MATLAB环境:MATLAB桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器、文件和搜索路径浏览器。
2.掌握MATLAB常用命令3.MATLAB变量与运算符变量命名规则如下:(1)变量名可以由英语字母、数字和下划线组成(2)变量名应以英文字母开头(3)长度不大于31个(4)区分大小写MATLAB中设置了一些特殊的变量与常量,列于下表。
MATLAB运算符,通过下面几个表来说明MATLAB的各种常用运算符4.MATLAB的一维、二维数组的寻访表6 子数组访问与赋值常用的相关指令格式5.MATLAB的基本运算表7 两种运算指令形式和实质涵的异同表6.MATLAB的常用函数表8 标准数组生成函数表9 数组操作函数三、实验容1、学习使用help命令,例如在命令窗口输入help eye,然后根据帮助说明,学习使用指令eye(其它不会用的指令,依照此方法类推)2、学习使用clc、clear,观察command window、command history和workspace等窗口的变化结果。
3、初步程序的编写练习,新建M-file,保存(自己设定文件名,例如exerc1、exerc2、 exerc3……),学习使用MATLAB的基本运算符、数组寻访指令、标准数组生成函数和数组操作函数。
实验一MATLAB 仿真基础一、实验目的:(1)熟悉MATLAB 实验环境,掌握MATLAB 命令窗口的基本操作。
(2)掌握MATLAB 建立控制系统数学模型的命令及模型相互转换的方法。
(3)掌握使用MATLAB 命令化简模型基本连接的方法。
(4)学会使用Simulink 模型结构图化简复杂控制系统模型的方法。
二、实验设备和仪器 1.计算机;2. MATLAB 软件 三、实验原理函数tf ( ) 来建立控制系统的传递函数模型,用函数printsys ( ) 来输出控制系统的函数,用函数命令zpk ( ) 来建立系统的零极点增益模型,其函数调用格式为:sys = zpk ( z, p, k )零极点模型转换为多项式模型[num , den] = zp2tf ( z, p, k ) 多项式模型转化为零极点模型 [z , p , k] = tf2zp ( num, den )两个环节反馈连接后,其等效传递函数可用feedback ( ) 函数求得。
则feedback ()函数调用格式为: sys = feedback (sys1, sys2, sign ) 其中sign 是反馈极性,sign 缺省时,默认为负反馈,sign =-1;正反馈时,sign =1;单位反馈时,sys2=1,且不能省略。
四、实验内容:1.已知系统传递函数,建立传递函数模型2.已知系统传递函数,建立零极点增益模型3.将多项式模型转化为零极点模型12s 2s s 3s (s)23++++=G )12()1()76()2(5)(3322++++++=s s s s s s s s G 12s 2s s 3s (s)23++++=G )12()1()76()2(5)(3322++++++=s s s s s s s s G4. 已知系统前向通道的传递函数反馈通道的传递函数求负反馈闭环传递函数5、用系统Simulink 模型结构图化简控制系统模型 已知系统结构图,求系统闭环传递函数 。
matlab函数定义与调用
Matlab函数定义与调用是Matlab的一个重要组成部分,它们可以
创建实用、可重复使用的代码段来解决指定问题。
在Matlab中,函数
定义可以通过Matlab函数定义语句来实现,而调用函数可以通过
Matlab函数调用语句来实现。
Matlab函数定义语句具有一定的结构,包括函数头部和函数体两
个部分,格式如下:
function [output1, output2,...]=function_name(input1,
input2,...); % 函数头部
statement1; % 函数体
statement2;
......
return;
函数头部部分必须包含function关键字,表示将要定义一个函数,可以声明该函数的输入、输出及函数名。
函数体部分指定了调用函数
时执行的一系列语句,并可以使用return关键字来结束函数定义。
Matlab函数调用语句是一条函数调用语句,可以向已定义的函数
传入参数,并调用已定义的函数。
它的格式如下:
[output1, output2,...] = function_name(input1, input2,...)
其中function_name表示函数的名称,input1,input2表示函数
的输入参数,output1,output2表示函数的输出结果。
Matlab函数定义与调用语句的使用可以帮助用户将复杂的想法划
分成一些实现起来更容易的小部分,将已经完成的部分封装成函数,
换句话说,可以将重复使用的代码封装成函数,以达到减少代码中重
复部分,提高代码复用率的目的。
matlab函数内调用函数-回复在MATLAB中,函数内调用其他函数是非常常见的做法。
这种调用通常在函数的主体部分使用一对中括号来完成。
中括号内的内容指定了要调用的函数的名称以及传递给该函数的参数。
1. 函数的定义和语法在MATLAB中,函数的定义以关键字"function"开始,然后是函数的返回值和名称,最后是函数的输入参数。
函数定义的语法如下所示:function [outputArg1,outputArg2,...] =functionName(inputArg1,inputArg2,...)函数主体end其中,outputArg1、outputArg2等是函数的返回值,functionName 是函数的名称,inputArg1、inputArg2等是函数的输入参数。
2. 函数内调用其他函数为了在MATLAB函数内调用其他函数,在函数的主体部分使用一对中括号并提供要调用的函数的名称和参数。
例如,如果我们有一个函数称为"function1",而另一个函数称为"function2",我们希望在"function1"中调用"function2",可以使用以下语法:function [outputArg1,outputArg2,...] =function1(inputArg1,inputArg2,...)函数主体outputArg1 = function2(inputArg1);end上述代码中,"function1"调用了"function2",并将"inputArg1"作为参数传递给它,然后将返回值赋值给"outputArg1"。
3. 函数间的数据传递调用另一个函数时,可以将数据作为参数传递给它,并从其返回值中获取结果。
matlab如何调用function在MATLAB中,调用函数的基本语法是使用函数名称,并在括号中传递任何必要的参数。
下面是一个简单的示例,展示了如何在MATLAB中调用一个函数:假设你有一个名为myFunction的函数,它接受两个参数a和b,并返回一个结果。
这个函数可能看起来像这样:matlab复制代码function result = myFunction(a, b)% 这个函数接受两个输入参数a 和b% 并返回它们的和作为结果result = a + b;end要调用这个函数,你需要在MATLAB的命令窗口中键入函数名称,跟上括号和参数,如下所示:matlab复制代码% 调用myFunction 函数,传递参数5 和3resultValue = myFunction(5, 3);% 显示函数返回的结果disp(resultValue); % 这将显示8,因为5 + 3 = 8在上面的例子中,myFunction函数被调用,并传递了两个参数5和3。
函数的返回值(在这个例子中是8)被存储在变量resultValue 中,然后使用disp函数显示出来。
如果你的函数定义在另一个文件中(例如myFunction.m),你需要确保该文件位于MATLAB的当前工作目录,或者该文件所在的目录已经添加到MATLAB的路径中。
你可以使用addpath函数来添加目录到MATLAB的路径:matlab复制代码% 假设你的函数文件myFunction.m 位于'C:\my_functions_folder' 目录中addpath('C:\my_functions_folder');% 现在你可以调用myFunction 函数了resultValue = myFunction(5, 3);disp(resultValue);注意,MATLAB是区分大小写的,所以确保在调用函数时使用正确的大小写。
数学实验练习六:函数
一、1)写一个 MATLAB 函数 piFun01.m 来计算下列级数:
f(n) = 4*(1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ...)
其中 n 为函数的输入,代表上述级数的项数,级数和 f(n) 则是函数的输出。
解:function f=pifun01(n)
f=0;
for i=1:n
f=f+4*(-1)^(i+1)/(2*i-1);
end
>> piFun01(100000)
ans =
3.1416
2)使用 tic 和 toc 指令来测量 piFun01(100000) 的计算时间。
如果你不知道如何使用这两个指令,请使用 help tic 及 help toc 来查出它们的用法。
我的旧计算机是 Pentium 450MHz,所得的计算时间约为 2 秒。
请说明你的计算机规格以及其计算时间。
解:function f=pifun01(n)
tic
f=0;
for i=1:n
f=f+4*(-1)^(i+1)/(2*i-1);
end
f=toc
二、写一个 MATLAB 的递归函数 fibo.m 来计算 Fibonacci 数列,
其定义如下:
fibo(n+2) = fibo(n+1)+fibo(n)
此数列的启始条件如下:
fibo(1) = 0, fibo(2) = 1.
a) fibo(25) 的返回的值是多少?
解:function f=fibo(n)
if n==1
f=0;
elseif n==2
f=1;
else
f=fibo(n-1)+fibo(n-2);
end
>> clear
>> fibo(25)
ans =
46368
b)使用 tic 和 toc 指令来测量 fibo(25) 的计算时间。
我的计
算机是 Pentium 2GHz,所得的计算时间约为 3.35 秒。
请说明你的计算机规格以及其计算时间。
解: function f=fibo(n)
tic
if n==1
f=0;
elseif n==2
f=1;
else
f=fibo(n-1)+fibo(n-2);
end
toc
c) 你们已学过离散数学,知道 Fibonacci 数列的第 n 项可以
直接表示成
fibo(n)={[(1+a)/2]^(n-1)-[(1-a)/2]^(n-1)}/a
其中 a 是 5 的平方根。
写利用上式一个 MATLAB 的非递归函数 fibo2.m 来计算 Fibonacci 数列。
解:function f=fibo2(n)
if n==1
f=0;
elseif n==2
f=1;
else
fibo2(n)=(((1+sqrt(5))/2)^(n-1)-((1-sqrt(5))/2)^(n-
1))/sqrt(5);
f=fibo2(n)
end
>> fibo2(25)
f =
4.6368e+004
d) fibo2(25) 的值为何?是否和 fibo(25) 相同?
不相同
e)请计算 fibo2(25) 的计算时间,并和 fibo(25) 比较。
Elapsed time is 0.000060 seconds.
f)请比较并说明使用 fibo.m 和 fibo2.m 来计算 Fibonacci
数列的优缺点。
解:fibo.m 计算比较精确,而fibo2.m则计算比较粗糙,但运算数度要快
三、假设在期中考后,我们用一个向量 x 来储存每个人的考试成绩。
请写一个函数 ranking01.m,输入为成绩向量 x,输出则是此成绩的排名。
例如,当 x = [92, 95, 58, 75, 69, 82] 时,ranking(x) 回传的排名向量则是 [2, 1, 6, 4, 5, 3],代表 92 分是排名第 2,95 分是排名第 1,58 分是排名第 6,等等。
提示
你可以使用循环(如 for-loop 和 while-loop 等)完成此作业,但是程序代码会比较凌乱,执行效率也会变差。
所以请尽量利用sort 指令,而不要用到循
解:function a=ranking01(x)
c=length(x);
m=-sort(-x);
for i=1:c
a(i)=find(m==x(i)); end。