matlab实验六
实验6 函数文件实现MATLAB程序设计
函数文件实现 MATLAB 的程序设计
实验六
函数文件实现 MATLAB 的程序设计
一、 实验目的:掌握 MATLAB 编程语言的基本控制结构和控制转移语句, 学会用函数文件实现 MATALB 程序设计。 二、 本实验的重点内容:函数文件是另一种格式的 M 文件, 它是 MATLAB 程序设计的主流。一般情况下都使用函数文件格式编程。 1、 编写函数文件的步骤: 1)从 MATLAB 主窗口的 File 菜单中选择 New 菜单项,再选择 M-file 命 令,屏幕上将出现 MATLAB 文本编辑器窗口。其窗口名为 Untitled, 用户可以在空白窗口中编写程序。 2)点击调试工具条保存图标,在弹出的“保存为”对话框中,选择保存文 件夹,键入新编文件名,例如 program.m, (这里的文件名必须与函数 名相同)点击保存键,就完成了文件的保存,将其称为 M 文件。 2、 函数 m 文件的格式: function 返回变量=函数名(输入变量) 注释说明语句段 程序语句段 3、 特定规则: 1)函数 m 文件— 需要输入变量,返回输出变量 2)函数 m 文件第一行必须以单词 function 作为引导词,必须遵循如下 形式: function <因变量>=<函数名>(<自变量>) 3)m 文件的文件名必须是<函数名> .m。 4)程序中的变量均为局部变量,不保存在工作空间中。 其变量只在函数运行期间有效。 4、 M 文件的程序结构(函数文件又称为可调用的 M 文件) 1)顺序结构 顺序结构有两个程序模块串接构成,一个程序模块可以是一条语句、一 段程序、一个函数等,即依次顺序执行程序的各条语句; ①从键盘输入数据, 则可以使用 input 函数来进行, 该函数的调用格式为: A=input(提示信息,选项); 其中提示信息为一个字符串,用于提示用户输入什么样的数据。
matlab实验六、SIMULINK基本用法
SubSystem:建立新的封装(Mask)功能模块
5、Sinks(接收器模块) sinks.mdl
Scope:示波器。 XY Graph:显示二维图形。 To Workspace:将输出写入MATLAB的工作空间。 To File(.mat):将输出写入数据文件。
6、Sources(输入源模块) sources.mdl
Derivative:输入信号微分
State-Space:线性状态空间系统模型 Transfer-Fcn:线性传递函数模型 Zero-Pole:以零极点表示的传递函数模型 Memory:存储上一时刻的状态值 Transport Delay:输入信号延时一个固定时间再输出 Variable Transport Delay:输入信号延时一个可变时间再输出
例exp5_2.mdl
exp5_3.mdl
第四节 SIMULINK自定义功能模块
自定义功能模块有两种方法,一种方法是采用Signal&Systems 模块库 中的Subsystem功能模块,利用其编辑区设计组合新的功能模块;另一 种方法是将现有的多个功能模块组合起来,形成新的功能模块。对于 很大的SIMULINK模型,通过自定义功能模块可以简化图形,减少功 能模块的个数,有利于模型的分层构建。 一、方法1 exp5_5.mdl
SIMULINK的基本知识
一、SIMULINK的启动
1、在MATLAB命令窗口中输入simulink 结果是在桌面上出现一个称为Simulink Library Browser的窗口, 在这个窗口中列出了按功能分类的各种模块的名称。 2 、当然用户也可以通过MATLAB主窗口的快捷按钮来打开 Simulink Library Browser窗口。
Matlab实验报告六(三次样条与分段线性插值)范文
本题是给出粗略等分点让你插入更多点用双线性插值法来作出更清晰的山区地貌图。
2.问题求解
x=0:400:2800;
y=0:400:2400;
z=[1430 1450 1470 1320 1280 1200 1080 940;
1450 1480 1500 1550 1510 1430 1300 1200;
2.分段线性插值与计算量与n无关;n越大,误差越小.
3.三次样条插值比分段线性插值更光滑。
4.‘linear’:分段线性插值;‘spline’:三次样条值。
【实验环境】
MatlabR2010b
二、实验内容
问题1对函数 ,x[-5,5],分别用分段线性插值和三次样条插值作插值(其中插值节点不少于20),并分别作出每种插值方法的误差曲线.
本次实验因为是我们课本没有的内容,心理上给了我很大的压力,幸好我们还能根据老师的课件以及例题去掌握这次实验所需要的各种插值法,但结果还好,两道题都做出来了。
plot(x,y,'*',x1,yl,'r',x1,y2,'b')
y0=1./(1+x1.^2);
y3=yl-y0;
y4=ys-y0;
holdon
plot(x1,y3,'y',x1,y4,'g')
3.结果
4误。
问题2山区地貌图在某山区(平面区域(0,2800)(0,2400)内,单位:米)测得一些地点的高程(单位:米)如表1,试作出该山区的地貌图.
1.分析问题
本题先取出少量的插值节点并作出图形,再用分段线性插值法和三次样条插值法做出更精确的图形,最后在作出误差曲线。
MATLAB第6次实验报告
实验报告一、实验目的通过这些题目的训练,需要掌握静态数据成员以及静态成员函数的使用方法,友元函数的使用,以及掌握构造函数和析构函数,拷贝构造函数、内联成员函数、聚集的使用,熟练的使用类解决问题。
二、实验环境编译器:Visual c++6.0操作系统:Windows XP三、实验题目基础题1:题目:定义一个Cat类,拥有静态数据成员HowManyCats,记录Cat的个体数目;静态成员函数GetHowMany(),存取HowManyCats。
设计程序测试这个类,体会静态数据成员和静态成员函数的用法。
分析:定义一个名为Cat类,静态数据成员HowManyCats,记录Cat的个体数目,静态成员函数GetHowMany(),输入一只Cat的名字就让HowManyCats加1,调用静态成员函数GetHowMany()输出数目即可。
核心代码:#include<iostream>using namespace std;class Cat//定义一个Cat类{public:Cat(char Name)//定义一个构造函数,形参为Cat的名字{CatName=Name;HowManyCats++;}static void GetHowMany(){cout<<"the number of cats: "<<HowManyCats<<endl;}private:char CatName;static int HowManyCats;};int Cat::HowManyCats=0;//静态数据成员声明void main(){char _name;int W=0;{ cout<<"please input the name of one cat(一个字母):"<<endl;cin>>_name;W=1;Cat c(_name);cout<<"if you want to contiue to input cat,please input 0 or else input 1."<<endl;cin>>W;}while(W==0);Cat::GetHowMany();//静态成员函数调用}程序运行及截图:总结:掌握静态成员函数的定义与实现,以及静态数据成员的声明、定义和初始化方法,学会使用类解决实际问题。
matlab实验报告(实验6)
学生实验报告一、实验目的1、掌握SIMULINK组件模块操作的基本方法;2、掌握常用连续系统模块的使用方法;3、掌握连续系统建模的基本方法;4、理解SIMULINK仿真的基本配置方法与内在运行机制。
二、实验原理Simulink是MATLAB的重要组成部分,提供建立系统模型、选择仿真参数和数值算法、启动仿真程序对该系统进行仿真、设置不同的输出方式来观察仿真结果等功能。
1、Simulink的基本模块Simulink的模块库提供了大量模块。
单击模块库浏览器中Simulink前面的“+”号,将看到Simulink模块库中包含的子模块库,单击所需要的子模块库,在右边的窗口中将看到相应的基本模块,选择所需基本模块,可用鼠标将其拖到模型编辑窗口。
同样,在模块库浏览器左侧的Simulink栏上单击鼠标右键,在弹出的快捷菜单中单击Open the ‘Simulink’ Libray 命令,将打开Simulink基本模块库窗口。
单击其中的子模块库图标,打开子模块库,找到仿真所需要的基本模块。
Simulink中几乎所有模块的参数都允许用户进行设置,只要双击要设置的模块或在模块上按鼠标右键并在弹出的快捷菜单中选择相应模块的参数设置命令就会弹出模块参数对话框。
该对话框分为两部分,上面一部分是模块功能说明,下面一部分用来进行模块参数设置。
同样,先选择要设置的模块,再在模型编辑窗口Edit菜单下选择相应模块的参数设置命令也可以打开模块参数对话框。
一个Simulink仿真模型的基本模块包括信源、信宿以及系统三个部分。
其中,信源可以是常数、正弦波、阶梯波等信号源,信宿可以是示波器、图形记录仪等,系统则是被研究系统的SIMULINK方框图。
系统、信源、信宿,可以从SIMULINK模块库中直接获得,也可以根据用户意愿用库中的模块构建而成。
2、连续系统的建模与仿真连续系统指的是可以用微分方程来描述的系统。
用于建模连续系统的模块:Simulink模块组中的Continous、Math以及Nonlinear模块库中。
Matlab实验报告六(三次样条与分段线性插值)
实验名称插值与拟合
所属课程数学软件与实验
实验类型综合型实验
专业信息与计算科学
班级
学号
姓名
指导教师
一、实验概述
【实验目的】
学会在matlab环境下使用几种不同的插值法和拟合两种方法构造函数依据已经知道的某些特殊点来推测实际问题中需要知道但又不便于测量出来的量。
【实验原理】
1.z=interp2(x0,y0,z0,x,y,’method’): 要求x0,y0单调;x, y可取为矩阵, 或x取行向量, y取为列向量, x,y的值分别不能超出x0,y0的范围。
2.分段线性插值与计算量与n无关;n越大, 误差越小.
3.三次样条插值比分段线性插值更光滑。
4.‘linear’ : 分段线性插值;‘spline’ : 三次样条
二、实验内容
问题1 对函数, x([-5,5], 分别用分段线性插值和三次样条插值作插值(其中插值节点不少于20), 并分别作出每种插值方法的误差曲线.
1180 1320 1450 1420 1400 1300 700 900];
mesh(x,y,z)
xi=0:20:2800;
yi=0:20:2400;
zi=interp2(x,y,z,xi',yi,'cubic');
mesh(xi,yi,zi)
3.结果
4.结论及分析
通过实验,结果正确,分析无误。
三、实验小结
1270 1500 1200 1100 1350 1450 1200 1150
1230 1390 1500 1500 1400 900 1100 1060
1180 1320 1450 1420 1400 1300 700 900
Matlab实验报告87025
Matlab实验报告87025实验⼀: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/23.两个函数之间的操作求和(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实验报告
MATLAB 实验报告一、实验名称实验6 程序设计(1)二、实验目的:熟悉和掌握MA TLAB 的m 文件程序和程序设计。
三、实验内容:1.for 循环结构%m 文件的使用:新建一个m 文件将下面的语句复制进去,保存成m 文件,假如文件名是“xunhuan ”,则只需在matlab 窗口中输入“xunhuan ”然后回车即可执行其中的内容,关于m 文件的使用方法下同for i=1:10; %i 的数值是从1到10,默认间隔是1 x(i)=i; %矩阵x 第i 个数的数值赋值i end; %结束循环x %输出矩阵x 的值2.while 循环结构Fibonaci 数组的元素满足Fibonacci 规则:);,2,1k (,a a a 1k k 2k =+=++且1a a 21==。
现要求该数组中第一个大于10000的元素。
a(1)=1;a(2)=1;i=2; %赋初始值while a(i)<=10000 %设定语句结束条件a(i+1)=a(i-1)+a(i); %利用给出的前后数的关系赋值 i=i+1; %循环控制变量每次自加1 end; %结束循环i ,a(i) %输出符合条件的i 值和a(i)值3.if-else-end 结构cost=10;number=12; %赋初始值 if number>8 %如果+条件 sums=number*0.95*cost; %计算公式end,sums %结束循环,输出sums 的值4.编写一个脚本文件和函数文件并调用,说明其调用方式以及各自的工作空间的不同。
脚本文件stat1.m%脚本文件%求阵列x 的平均值 %[m,n]=size(x); if m==1 m=n; ends=sum(x);mean=s/m;函数文件stat2.mfunction[mean1]=stat2(x) %函数文件%求阵列x的平均值%调用格式为%[mean]=stat2(x)%[m,n]=size(x);if m==1m=n;ends=sum(x);mean=s/m然后在,MATLAB下执行这两个文件,在MA TLAB中输入>>clear all>>x=rand(4,4)+2;>>stat1执行后检查基本工作空间的变量情况:>>whosName Size Bytes Classm 1x1 8 double arraymean 1x4 32 double arrayn 1x1 8 double arrays 1x4 32 double arrayx 4x4 128 double arrayGrand total is 26 elements using 208 bytes这说明,在脚本文件中产生的变量都保存在基本工作空间。
MATLAB实验报告实验六
MATLAB实验报告实验六实验六1.x=linspace(0,2*pi,101);y=(0.5+3*sin(x)./(1+x.^2));plot(x,y)2.x=-pi:pi/100:pi;y1=x.^2;y2=cos(2*x);y3=y1.*y2;plot(x,y1,'r:',x,y2,'g-',x,y3,'b--')x=-pi:pi/100:pi;y1=x.^2;y2=cos(2*x);y3=y1.*y2;subplot(1,3,1);plot(x,y1,'r:');title('y1=x.^2'); subplot(1,3,2);plot(x,y2,'g-');title('y2=cos(2*x)'); subplot(1,3,3);plot(x,y1,'b--');title('y3=y1.*y2');x=-pi:pi/100:pi;y1=x.^2;y2=cos(2*x);y3=y1.*y2;subplot(2,2,1);plot(x,y1,'r:',x,y2,'g-',x,y3,'b--'); subplot(2,2,2);bar(x,y1,'r');title('y1=x^2');subplot(2,2,3);bar(x,y2,'g');title('y2=cos(2*x)');subplot(2,2,4);bar(x,y3,'b');title('y3=y1.*y2');x=-pi:pi/100:pi;y1=x.^2;y2=cos(2*x);y3=y1.*y2;subplot(2,2,1);plot(x,y1,'r:',x,y2,'g-',x,y3,'b--'); subplot(2,2,2); stairs(x,y1,'r:');title('y1=x^2');subplot(2,2,3);stairs(x,y2,'g-');title('y2=cos(2*x)');subplot(2,2,4);stairs(x,y3,'b--');title('y3=y1.*y2');x=-pi:pi/100:pi;y1=x.^2;y2=cos(2*x);y3=y1.*y2;subplot(2,2,1);plot(x,y1,'r:',x,y2,'g-',x,y3,'b--'); subplot(2,2,2); stem(x,y1,'r:');title('y1=x^2');subplot(2,2,3);stem(x,y2,'g-');title('y2=cos(2*x)');subplot(2,2,4);stem(x,y3,'b--');title('y3=y1.*y2');x=-pi:pi/100:pi;y1=x.^2;y2=cos(2*x);y3=y1.*y2;subplot(2,2,1);plot(x,y1,'r:',x,y2,'g-',x,y3,'b--'); subplot(2,2,2);fill(x,y1,'r:');title('y1=x^2');subplot(2,2,3);fill(x,y2,'g-');title('y2=cos(2*x)');subplot(2,2,4);fill(x,y3,'b--');title('y3=y1.*y2');3.x=-5:0.01:5;y=(x+sqrt(pi))./(exp(2)).*(x<=0)+0.5*log(x+sqrt(1+x.*x)).*(x>0); plot(x,y4.theta=0:pi/100:2*pi; a=input('请输⼊a:');b=input('请输⼊b:');n=input('请输⼊n:'); rho=a*sin(b+n*theta); polar(theta,rho,'g')a=b=n=2a=b=2,n=4a=n=2,b=4a=4,b=n=2采⽤控制变量法的办法,固定两个参数,变动第三个参数观察输出图象的变化。
MATLAB-第六次实验
x、y、z 都是矩阵时,plot3 命令的使用
[X,Y]=meshgrid(-pi:0.1:pi); Z=sin(X)+cos(Y); plot3(X,Y,Z)
MATLAB基础
5.4 三维图形绘制与复数的图形绘制
g.绘制三维圆柱曲面命令cylinder
cylinder命令中,柱面的轴线定义为 z 轴,只要给出母线的描述就可完成一个柱面。 调用格式为: [X,Y,Z] = cylinder(R,N); [X,Y,Z] = cylinder(R):缺省值 N=20; [X,Y,Z] = cylinder:缺省值 N=20,R=[1,1]。 R:是一描述柱面母线的向量; N:是旋转柱面上的分割线条数;
MATLAB基础
已知系统传递函数
n Y(S) 100 G(S) 2 2 X(S) S 10 S 100 S 2 n S n 2
2
,其中:
0.5 n 10rad / s
在输入信号x(t)=1(即单位阶跃信号),要求建立M文件,画出输出 信号y(t)(即单位阶跃响应)的图象, MATLAB程序如下: G=tf([100],[1,10,100]); %得到传递函数G(S) t=0:0.05:3; %时间t设在0—3秒间,运算间隔0.05秒 y=step(G,t); %得到单位阶跃响应y(t) plot(t,y,'-k'); %绘制出y(t) 图象 xlabel('t'); %横坐标轴标号为t ylabel('y(t)'); %纵坐标轴标号为y(t) grid %绘制出栅格以便于读取数值
MATLAB基础
计算积分
7
int(f,v,a,b): 计算定积分 int(f,a,b): 计算关于默认变量的定积分 int(f,v): 计算不定积分 int(f): 计算关于默认变量的不定积分
MATLAB实验报告_6
MATLAB课程实验报告******学号:B********专业:电气工程及其自动化日期:2015年11月18实验一:MATLAB的绘图功能练习一实验目的:1、掌握绘制多条线或者三维图形的常用函数。
2、熟悉利用图形对象进行绘图操作的方法。
3、掌握绘制图形的辅助操作。
二:实验内容1.多条线型在同一图形中可以绘制多条线型,基本命令格式如下。
Plot(x1,y1,x2,y2,...x n,y n)例如:x=0:0.1:2*pi;plot(x,sin(x),’^g’,x,cos(x),’pr’)输出曲线如图所示:2.三维图形的绘制与二维图形相对应,MATLAB提供了plot3()函数,它能够在一个三维空间内绘制出三维的曲线,该函数的调用格式为:plot3(x,y,z,选项)例如:x=-8:0.5:8;y=x;[x,y]=meshgrid(x,y)z=-sqrt(x.^2+y.^2)z=-z.*z;surf(x,y,z);pause;Mesh(x,y,z);三、实验收获与体会第一次的MATLAB实验课程使我们认识了这个软件,了解了MATLAB这门课程,熟悉了该软件的基本功能,也知道了该软件在我们生活中的重要地位。
随着社会的不断发展,计算机的普及,它也被应用在越来越多的方面。
实验二:晶闸管三相桥式整流器的仿真一实验目的:1、掌握绘制晶闸管三相桥式整流器的仿真绘图。
2、熟悉利用图形对象进行绘图操作的方法。
3、掌握绘制图形的辅助操作。
二:实验内容晶闸管三相桥式整流器是交流——直流交换的一种典型变换器,应用较为广泛。
根据三相桥式整流器电路结构,在模型窗口中建立主电路仿真模型,加入同步装置和脉冲触发器等建立三相桥式整流器的仿真模型,如下图:主回路负载的选择,这里为了模拟直流电动机模型,选择电阻、电感与直流反电动势构成、电阻、电感模型选择RLC 串联分支实现。
三相交流电源通过三个频率50HZ、幅值220V、相位滞后120°交流电压源实现。
matlab实验六
实验六MATLAB数据可视化
一、实验目的
掌握MATLAB 二维、三维图形绘制,掌握图形属性的设置和图形修饰;掌握图像文件的读取和显示。
二、实验内容
(1) 二维图形绘制。
(2) 三维曲线和三维曲面绘制。
三、实验步骤
1.二维图形绘制
(1) 二维图形绘制主要使用函数plot。
(2) 函数plot 的参数也可以是矩阵。
(3) 选用绘图线形和颜色。
(4)添加文字标注。
(5)修改坐标轴范围。
(6) 子图和特殊图形绘制。
2. 三维曲线和三维曲面绘制
(1) 三维曲线绘制使用plot3 函数。
绘制一条空间螺旋线:
(2) 三维曲面图的绘制:MATLAB 绘制网线图和网面图的函数分别是mesh( )和surf( ),
其具体操作步骤是:
①用函数meshgrid( )生成平面网格点矩阵[X,Y];
②由[X,Y]计算函数数值矩阵Z;
③用mesh( )绘制网线图,用surf( )绘制网面图。
绘制椭圆抛物面:
绘制阔边帽面:
练习:考虑以下问题:设求定义域x=[-2,2],y=[-2,2]内的z值(网格取0.1)。
请把z 的值用网线图形象地表示出来。
四、实验小结
本次试验做的是matlab绘图,如二维,三维图像的绘制,总的来说还是比较简单的,只要掌握了函数的使用就可以进行绘图了,在绘制图像的时候,需将表达式写成“.*”的形
式,以免出现错误。
刘卫国版MATLAB程序设计与应用课后实验六八九
实验六 高层绘图操作%第一题:程序代码如下:x=linspace(0,2*pi,101);y=(0.5+3*sin(x)./(1+x.^2)).*cos(x); plot(x,y)01234567-1-0.50.511.5%第二题: %(1)程序代码如下:x=linspace(-2*pi,2*pi,100); y1=x.^2;y2=cos(2*x); y3=y1.*y2;plot(x,y1,'b-',x,y2,'r:',x,y3,'y--'); text(4,16,'\leftarrow y1=x^2');text(6*pi/4,-1,'\downarrow y2=cos(2*x)');text(-1.5*pi,-2.25*pi*pi,'\uparrow y3=y1*y2');-8-6-4-22468-30-20-1010203040%(2)程序代码如下:x=linspace(-2*pi,2*pi,100); y1=x.^2;y2=cos(2*x); y3=y1.*y2;subplot(1,3,1);%分区 plot(x,y1);title('y1=x^2');%设置标题 subplot(1,3,2); plot(x,y2);title('y2=cos(2*x)'); subplot(1,3,3); plot(x,y3);title('y3=x^2*cos(2*x)');-10100510152025303540y1=x 2-1010-1-0.8-0.6-0.4-0.200.20.40.60.81y2=cos(2*x)-1010-30-20-1010203040y3=x 2*cos(2*x)%(3)程序代码如下:x=linspace(-2*pi,2*pi,20); y1=x.^2;subplot(2,2,1);%分区 bar(x,y1);title('y1=x^2的条形图');%设置标题 subplot(2,2,2); stairs(x,y1);title('y1=x^2的阶梯图'); subplot(2,2,3); stem(x,y1);title('y1=x^2的杆图'); subplot(2,2,4);fill(x,y1,'r');%如果少了'r'则会出错 title('y1=x^2的填充图'); %其他的函数照样做。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六
M-文件结构与编写、函数文件格式、编写与调用、程序结构与流程控制
一、实验目的:
Matlab文件类型及其编写、程序结构、流程控制认识
二、实验原理:
1、建立M文件
将多个可执行的系统命令,用文本编辑器编辑后并存放在后缀为 .m 的文件中,若在MATLAB命令窗口中输入该m-文件的文件名(不跟后缀.m!),即可依次执行该文件中的多个命令。
这个后缀为.m的文件,也称为Matlab的命令文件(Script File)。
注意:文件存放路径必须在Matlab能搜索的范围内。
2、建立函数文件
对于一些特殊用户函数,系统提供了一个用于创建用户函数的命令function,以备用户随时调用。
(1).格式:
function [输出变量列表]=fun_name(输入变量列表)
用户自定义的函数体
(2).函数文件名为:fun_name,注意:保存时文件名与函数名最好相同;(3).存储路径:最好在系统的搜索路径上。
(4). 调用方法:输出参量=fun_name (输入变量)
例1:
计算s = n!,在文本编辑器中输入:
function s=pp(n);
s=1;
for i=1:n
s=s*i;
end
s;
在MATLAB命令窗口中输入:s=pp(5)
结果为s = 120
2、无条件循环
当需要无条件重复执行某些命令时,可以使用for循环:
for 循环变量t=表达式1 : 达式2 : 表达式3
语句体
end
说明:表达式1为循环初值,表达式2为步长,表达式3为循环终值;当表达式2省略时则默认步长为1;for语句允许嵌套。
例2:如:矩阵输入程序
m=input('矩阵行数:m=');
n=input('矩阵列数:n=');
for i=1:m
for j=1:n
disp(['输入第',num2str(i),'行,第', num2str(j),'列元素'])
A(i, j) = input ('')
end
end
生成3×4阶的Hiltber矩阵。
for i=1 : 3
for j=1:4
H(i,j)=1/(i+j-1);
end
end
H
4 、顺序循环
1) if语句
if-else-then语句的常使用三种形式为:(1) if 逻辑表达式
语句体
end
(2) if 逻辑表达式1
语句体1 …
else
语句体2
end
(3) if 逻辑表达式1
语句体1
elseif 逻辑表达式2
语句体2
elseif 逻辑表达式3
语句体3
else
语句体n
end
2) while循环语句
while循环的一般使用形式为:
while 表达式
语句体
end
例3:
用二分法计算多项式方程x^3-2*x-5= 0在[0,3]内的一个根。
解:
a=0; fa=-inf;
b=3; fb=inf;
while b-a>eps*b
x=(a+b)/2;
fx=x^3-2*x-5;
if sign(fx)==sign(fa)
a=x; fa=fx;
else
b=x; fb=fx;
end
end
x
运行结果为:x = 2.0946
5、分支结构
若需要对不同的情形执行不同的操作,可用switch 分支语句:switch 表达式(标量或字符串)
case 值1
语句体1
case 值2
语句体2
…
otherwise
语句体n
end
说明:当表达式不是“case”所列值时,执行otherwise语句体。
三、实验要求:
写出程序,记下调试过程中出现的问题,给出最后的实验程序和结果,并写出实验报告。
四、实验内容和步骤
1.编写程序,计算1+3+5+7+…+(2n+1)的值(用input 语句输入n 值)。
%pp.m%
function s=pp(n)
n=input(‘n=’)
sum=0
for i=1:2:2*n-1
sum=sum+i
end
sum
//////
pp
n=
2.编写分段函数 ⎪⎩⎪⎨⎧≤≤-<≤=其它021210)(x x
x x x f 的函数文件,存放于文件ff.m 中,并
求
)3(-f ,)2(f ,)(∞f 的值。
%ff.m%
function f=ff(x)
if x>=0&&x<1
f=x
else if x>=1&&x<=2
f=2-x
else f=0
end
end
f
/////
ff
x=-3
f=0
format rat
x=2^(1/2)
f=577/985
x=inf
f=0
3. 编写一个函数文件求三个数的最大值。
%fmax.m%
function s=fmax(a,b,c)
a=input('a=')
c=input('c=')
if a>b
if a>c
s=a
else
s=c
end
else if b>c
s=b
else
s=c
end
end
/////
fmax
a=2
b=6
c=3
s=6
4.产生一个随机数,若大于0.5,则把这个数连加,直到刚好超过10为止,求这个数。
function s=fff(x)
x=rand()
s=0
while(s<=10)
if x>0.5
s=s+x
else x=rand()
end
end
/////
fff
s
5.建立5 6矩阵,要求输出矩阵第n行元素。
当n值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息
6.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。
其中90分~100分为A,80分~89分为B,70分~79分为C,60分~69分为D,60分一下为E。