2009级MATLAB实验五
- 格式:doc
- 大小:93.00 KB
- 文档页数:4
实验五1、 编写程序,该程序在同一窗口中绘制函数在[]0,2π之间的正弦曲线和余弦曲线,步长为200/π,线宽为 2 个象素,正弦曲线设置为蓝色实线,余弦曲线颜色设置为红色虚线,两条曲线交点处,用红色星号标记,并通过函数方式在生成的图形中添加注释,至少应包括:标题,文本注释,图例和坐标轴标注。
x=0:pi/200:2*pi;sinx = sin(x); cosx = cos(x);k=find(abs(sinx-cosx)<1e-2); x1=x(k);figure,plot(x,sinx,'LineWidth',2) hold on ,plot(x,cosx,'r:','LineWidth',2)hold on ,plot(x(find(cosx==sinx)),cosx(find(cosx==sinx)),'r*','LineWidth',2)hold on ,plot(x1,sin(x1),'r*') xlabel('x:(0-2\pi)'); ylabel('y:sin(x)/cos(x)');title('正弦曲线和余弦曲线');text(x1+0.1,sin(x1),'sin(x)=cos(x)');gtext('sin(x)') gtext('cos(x)')legend('sin(x)','cos(x)')2、 绘制图像:双曲抛物面:22164x y z =-,1616x -<<,44y -<<,并对绘制的双曲抛物面尝试进行视点控制。
[X,Y] = meshgrid(-16:0.4:16,-4:0.1:4); Z = X.^2/16 - Y.^2/4;subplot(1,3,1),plot3(X,Y,Z),view(0,180),title('azimuth = 0,elevation = 180'); subplot(1,3,2),plot3(X,Y,Z),view(-37.5,-30),title('azimuth = -37.5,elevation = -30');subplot(1,3,3),plot3(X,Y,Z),view([3,3,2]),title('viewpoint=[3,3,1]');3、 表中列出了4个观测点的6次测量数据,将数据绘制成为分组形式和堆叠形式的条形图。
实验报告(5):插值实验(Interpolation)1.(1)Write a MATLAB function to perform the Lagrangian form Interpolation.function yy=Lagrange(x,y,xi)m=length(x);n=length(y);if m ~= n , error('向量x与y长度须一致'); end;s=0;for i=1 : nz=ones(1,length(xi));for j=1 : nif j ~= iz=z.*(xi-x(j))./(x(i)-x(j));endends=s+z*y(i);endyy=s;保存为Lagrange2(2)Write a call back m-file to check the function you write.x=[0.5610,0.56280,0.56401,0.56521];y=[0.82741,0.82659,0.82577,0.82495];xi=[0.5625,0.5635,0.5645];yi=Lagrange2(x,y,xi)yi=2.In the following table(saved in the data file named Interpolation_Problem1_data.xls), X is the Fahrenheit(华氏的)temperature, and Y is the number of times a cricket(蟋蟀)chirps(鸣叫)in one minute.(1)Make a scatterplot(散点图) of the data.x=[46 49 51 52 54 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71];y=[40 50 55 63 72 70 77 73 90 93 96 88 99 110 113 120 127 137 132 137];plot(x,y,'ro');xlabel('Fahrenheit temperature');ylabel('number of times a cricket chirps in one minute ');grid on实验报告(5):插值实验(Interpolation )Fahrenheit temperaturen u m b e r o f t i m e s a c r i c k e t c h i r p s i n o n e m i n u t e(2) Interpolate the data with some low order piecewise interpolating polynomials. x=[46 49 51 52 54 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71];y=[40 50 55 63 72 70 77 73 90 93 96 88 99 110 113 120 127 137 132 137]; xi=45:0.05:71; yi=interp1(x,y,xi); plot(x,y,'r*',xi,yi)xlabel('Fahrenheit temperature');ylabel('number of times a cricket chirps in one minute '); grid onFahrenheit temperaturen u m b e r o f t i m e s a c r i c k e t c h i r p s i n o n e m i n u t e实验报告(5):插值实验(Interpolation )splineFahrenheit temperaturen u m b e r o f t i m e s a c r i c k e t c h i r p s i n o n e m i n u t ecubicFahrenheit temperaturen u m b e r o f t i m e s a c r i c k e t c h i r p s i n o n e m i n u t e(3) Fit the data by using an 18th -degree polynomial that passing through (通过) the data points as an empirical model. Analyze the appropriateness of doing so.x=[46 49 51 52 54 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71];y=[40 50 55 63 72 70 77 73 90 93 96 88 99 110 113 120 127 137 132 137]; xi=46:0.05:71; p=polyfit(x,y,18); yi=polyval(p,xi); plot(x,y,'o',xi,yi); title('polyinter')xlabel('Fahrenheit temperature');ylabel('number of times a cricket chirps in one minute ');grid on实验报告(5):插值实验(Interpolation )Fahrenheit temperaturen u m b e r o f t i m e s a c r i c k e t c h i r p s i n o n e m i n u t e后期图像放大:Fahrenheit temperaturen u m b e r o f t i m e s a c r i c k e t c h i r p s i n o n e m i n u t e运用高次多项式是插值,虽然得出的结果光滑有较好的分析性质,但图形的震荡的频率极大,不具收敛性。
实验五 基于matlab 的数据拟合与回归分析一、 实验类型验证性实验二、 实验学时2学时三、 实验目的1、掌握利用MATLAB 中实现单因变量的多元线性回归分析(经典多元线性回归分析)的方法;2、掌握利用MATLAB 中实现多因变量的多元线性回归分析(多对多线性回归分析)的方法。
3、掌握MATLAB 有关逐步回归的命令。
四、 实验内容及要求 实验内容:1 学习MATLAB 中有关经典多元线性回归分析的命令;(1) [b,bint,r,rint,stats] = regress(y,X,alpha)建立回归分析模型01122,i i i ip ip i y b b x b x b x ε=+++++其中()()2E 0,D i i εεσ==,1,2,,i n =.注:在该命令中,设计矩阵()(1)ij n p X x ⨯+=(X 的第1列全为1 ) 或响应值向量()1i n y y ⨯=中的无效值Nan 将被免忽略。
输入参数至少有2个,alpha 是检验的显著性水平,默认值为0.05。
输出参数至少有1个,b 是回归系数的估计值;bint 是各回归系数的置信度为1-alpha 的置信区间(第1列是它们的下界,第2列是它们的上界);r 是残差,rint 是残差的置信区间;stats 给出一个1*4的向量,依次是判定系数2R ,F 统计量的观测值及检验的p 值,以及误差的方差的估计值2ˆσ. 这里//(1)U p MMSF Q n p MSE==-- 是检验回归模型是否显著的检验统计量,当012:0p H b b b ====成立时, ~(,1)F F p n p --.可以通过分析残差的置信区间来观察原始数据是否存在异常点,若残差的置信区间不包括0,则可认为对应的观测值是异常值,将异常值全部去掉,重新建立的回归模型将更加精确。
可以调用命令rcoplot(r,rint)按观测顺序逐个画出各组观测值对应的残差和残差置信区间,从而观测异常值的位置。
实验五 MATLAB二维、三维图形的绘制一、实验目的1.掌握二维、三维图形的绘制;2.掌握特殊二维图形的绘制;3.掌握绘图参数的设置;4.了解并学习简单动画的制作。
二、实验内容1.运行下列程序,学会并掌握标题、坐标轴标签和网格线的设置方法x=0:1:10;y=x.^2-10*x+6;plot(x,y);title ('Plot of y=x.^2-10*x+6');xlabel ('x');ylabel ('y');grid on;2.运行下列程序,学会并掌握线型、点型、颜色的设置方法x = -pi:pi/20:pi;y1 = sin(x);y2 = cos(x);plot(x,y1,'bo',x,y2,'r:');title('线型、点型和颜色');xlabel('时间'),ylabel('Y');grid on;3.同一坐标系内多条曲线的绘制1)使用 plot(x,[y1;y2;…])x = -pi:pi/20:pi;y1 = sin(x);y2 = cos(x);plot(x,[y1;y2]);legend('sin x','cos x');2)使用hold命令x = -pi:pi/20:pi;y1 = sin(x);y2 = cos(x);plot(x,y1);hold on;plot(x,y2,‘r’);3)在plot后使用多输入变量x = -2*pi:pi/20:2*pi;y1 = 2*sin(x);y2 = 2*cos(x);plot(x,y1,'ro',x,y2,'b:');title('线型、点型和颜色');xlabel('时间'),ylabel('Y');4) 使用plotyy命令x = -pi:pi/20:pi;y1 = sin(x);y2 = 5*cos(x);plotyy(x,y1,x,y2);grid on;gtext(‘sinx’) ; gtext(‘5cosx’) ;4.子图形窗口的绘制subplot(2,1,1);x= -pi:pi/20:pi;y=sin(x);plot(x,y) ; grid on;title('正弦曲线');subplot(2,1,2);x= -pi:pi/20:pi;y=cos(x);plot(x,y); grid on;title('余弦曲线');5.对数坐标图形x=0:0.1:10;y=x.^2 -10.*x +25;subplot(2,2,1);plot(x,y); grid on;xlabel('a) x、y轴线性刻度');subplot(2,2,2);semilogx(x,y); grid on;xlabel('b) x轴对数刻度、y轴线性刻度');subplot(2,2,3);semilogy(x,y); grid on;xlabel('c) x轴线性刻度、y轴对数刻度');subplot(2,2,4);loglog(x,y); grid on;xlabel(‘d) x、y轴对数刻度');6.极坐标下的绘图theta = 0:pi/20:2*pi;r = 0.5+cos(theta);polar(theta,r);7.复数的绘图,并比较下面几种情况的不同1)t = 0:pi/20:6*pi;y = exp(0.1*t) .* (cos(t) + i * sin(t));plot(y);grid on ;title('Plot of Complex Function vs Time');xlabel('Real Part');ylabel('Imaginary Part');2)t = 0:pi/20:6*pi;y = exp(0.1*t) .* (cos(t) + i * sin(t));plot(t, y);grid on ;title('Plot of Complex Function vs Time');xlabel('t');ylabel('y(t)');3)t = 0:pi/20:6*pi;y = exp(0.1*t) .* (cos(t) + i * sin(t));plot(t, real(y),'b-');grid on;hold on;plot(t, imag(y),'r-');title('Plot of Complex Function vs Time');xlabel('t');ylabel('y(t)');legend('real','imaginary');hold off;4)t = 0:pi/20:6*pi;y = exp(0.1*t) .* (cos(t) + i * sin(t));polar(angle(y),abs(y));title('Plot of Complex Function');8.特殊二维图形的绘制1)x = [1 2 3 4 5 6];y = [2 6 8 7 8 5];stem(x,y);title('Example of a Stem Plot');xlabel('x');ylabel('y');axis([0 7 0 10]);将上述程序中的stem语句换为stairs、bar、barh和compass,即可实现阶梯图、条形图、罗盘图的绘制。
实验五:循环结构程序设计实验报告一、实验目的1. 了解循环结构的基本概念和原理;2. 掌握使用Matlab进行循环结构程序设计的方法;3. 提高编程能力和问题解决能力。
二、实验内容1. 学习while循环和for循环的基本语法和用法;2. 设计并编写一些基于循环结构的Matlab程序;3. 分析程序运行结果并进行总结。
三、实验原理循环结构是程序设计中的重要组成部分,它可以让一段代码重复执行多次,从而简化程序的编写。
在Matlab中,循环结构主要有while 循环和for循环两种形式。
while循环在执行循环体前判断条件是否为真,只有条件为真时才会执行循环体;for循环则是指定循环的次数,每次迭代时执行一次循环体。
四、实验步骤与结果1. 编写一个使用while循环的程序,实现1~100的累加。
程序代码如下:```matlabsum = 0;i = 1;while i <= 100sum = sum + i;i = i + 1;enddisp(sum);```运行程序后,得到的结果为5050。
2. 编写一个使用for循环的程序,实现1~10的阶乘。
程序代码如下:```matlabresult = 1;for i = 1:10result = result * i;enddisp(result);```运行程序后,得到的结果为xxx。
五、实验总结通过本次实验,我深刻理解了循环结构的基本概念和原理,掌握了使用Matlab进行循环结构程序设计的方法。
在编写循环程序的过程中,我发现循环结构可以大大简化程序的编写,并且能够高效地处理重复性任务。
我也进一步提高了自己的编程能力和问题解决能力。
本次实验使我对Matlab中的循环结构有了更加深入的了解,我相信这对我的编程能力和日后的学习工作都将大有裨益。
六、实验感想和改进意见通过本次实验,我深刻认识到循环结构在程序设计中的重要性和灵活性。
循环结构能够帮助我们简化程序的编写,提高代码的重用性和可读性,因此在实际的程序设计中,合理地运用循环结构能够大大提高程序的效率和逻辑清晰度。
实验五、选择与循环结构一、实验目的:1、 掌握建立和执行M 文件的方法。
2、 掌握利用if 语句实现选择结构的方法。
3、 掌握利用switch 语句实现多分支选择结构的方法。
4、 掌握try 语句的使用。
5、 掌握利用for 语句实现循环结构的方法。
6、 掌握利用while 语句实现循环结构的方法。
7、 熟悉利用向量运算来代替循环的操作方法。
二、实验内容:1、 列分段函数的值。
⎪⎩⎪⎨⎧--≠≠<≤+--≠<-+=其他且且,632,100,6530,6222x x x x x x x x x x x y要求:(1) 用if 语句实现,分别输出x =-0.5,-3.0,1.0,2.0,2.5,3.0,5.0时的y 值。
提示:x 的值从键盘输入,可以是向量。
%homework_5_1_1.mx=input('请输入x 的值:x=');if (x<0 & x~=-3)y= x.*x + x - 6elseif (x>=0 & x<10 & x~=2 & x~=3)y=x.*x-5.*x+6elsey=x.*x-x-6end>> homework_5_1请输入x 的值:x=[-0.5 -3.0 1.0 2.0 2.5 3.0 5.0]y =-5.2500 6.0000 -6.0000 -4.0000 -2.2500 0 14.0000(2) 用逻辑表达式实现上述函数。
%homework_5_1_2.mx=input('请输入x 的值:x=')y=(x<0 & x~=-3).*(x.*x+x-6)...+(x>=0 & x<10 &x~=2 &x~=3).*(x.*x-5.*x+6)...+(x>=10 | x==-3 | x==3 | x==2).*(x.*x-x-6)>> homework_5_1_2请输入x=[-0.5 -3.0 1.0 2.0 2.5 3.0 5.0]x =-0.5000 -3.0000 1.0000 2.0000 2.5000 3.0000 5.0000 y =-6.2500 6.0000 2.0000 -4.0000 -0.2500 0 6.00002、输入一个百分制成绩,要求输出成绩的等级为A,B,C,D,E。
本次实验注意:《实验五MALTAB基础知识(简单)》《实验五基于Matlab的信号频谱分析(复杂)》选作一个即可实验五MALTAB基础知识(一)实验目的 (2)(二)实验设备 (2)(三)实验要求 (2)(四)实验内容 (2)1.1 MATLAB基础知识 (2)1.1.1 MATLAB程序设计语言简介 (2)1.1.2 MA TLAB界面及帮助 (2)1.2 MA TLAB基本运算 (4)1.2.1 MA TLAB内部特殊变量和常数 (4)1.2.2 变量类型 (4)1.2.3 内存变量管理 (5)1.2.4 MA TLAB常用数学函数 (5)1.2.5 MA TLAB矩阵生成 (5)1.2.6 MA TLAB矩阵运算 (8)1.2.7 MA TLAB中的矩阵分析 (10)1.3 MA TLAB程序设计 (10)1.3.1 M文件 (10)1.3.2 程序控制结构 (12)实验五MALTAB基础知识(一)实验目的●了解MA TLAB 程序设计语言的基本特点,熟悉MA TLAB软件运行环境●掌握创建、保存、打开m文件及函数的方法●掌握变量等有关概念,具备初步的将一般数学问题转化为对应的计算机模型并进行处理的能力(二)实验设备计算机,Matlab软件(三)实验要求本实验属于验证实验,请根据(四)实验内容的步骤,运行相应的指令或例子,并将仿真结果截图至文档(请自己新建一个word文档,注意,并不一定所有指令或例子的实验结果都要截图,截图数目大于等于5个即可,自己选择性截图,答案不唯一,自由发挥)请在页眉处填写班级、学号、姓名,并将实验报告命名为“实验五_学号_姓名”,并通过FTP上传至指定文件夹。
(四)实验内容1.1 MATLAB基础知识1.1.1 MATLAB程序设计语言简介MA TLAB,Matrix Laboratory的缩写,是由MathWorks公司开发的一套用于科学工程计算的可视化高性能语言,具有强大的矩阵运算能力。
实验5 MATLAB的M文件和程序设计
目的和要求
(1)熟练掌握M文件的结构。
(2)熟练掌握MATLAB的程序流程控制结构。
(3)学会编写基本程序
内容和步骤
◆用户如想灵活应用matlab去解决实际问题,充分调用matlab的科学技术资源,就
需要编辑m文件
◆包含matlab语言代码的文件称为m文件,其扩展名为m。
◆编辑m文件可使用各种文本编辑器。
1.M文件的创建方法:
在matlab命令窗口点击file 菜单new m-file,可以打开空白的文件编辑器,也可以通过打开已有的M文件来打开文件编辑器。
如图5.1所示,为打开已建的M文件。
图5.1
2.M文件的编写
2.1M脚本文件
(1)在MATLAB桌面打开M文件编辑器;
(2)将以下命令全部写入编辑器,为了能标志该文件名称,在第一行写入包含文件名的注释。
%exam01二阶系统时域响应曲线
x=0:0.1:20;
y1=1-1/sqrt(1-0.3^2)*exp(-0.3*x).*sin(sqrt(1-0.3^2)*x+acos(0.3))
plot(x,y1,'r')
hold on
y2=1-1/sqrt(1-0.707^2)*exp(-0.707*x).*sin(sqrt(1-0.707^2)*x+acos(0.707)) plot(x,y2,'g')
y3=1-exp(-x).*(1+x)
plot(x,y3,'b')
编写好之后,将文件存在当前路径下,文件名exam01.m,在MATLAB命令窗口执行命令:
>>exam01
2.2M函数文件
MATLAB函数文件(function file)的格式:
function 返回变量=函数名(输入变量)
注释说明语句段
程序语句段
特定规则:
(1)函数m文件第一行必须以单词function作为引导词,必须遵循如下形式:
function <因变量>=<函数名>(<自变量>)
(2)m文件的文件名必须是<函数名> .m。
(3)程序中的变量均为局部变量,不保存在工作空间中。
其变量只在函数运行期间有
效。
创建M函数文件并调用的步骤如下:
(1)编写函数代码
function y=exam02(zeta) %exam02
x=0:0.1:20;
if(zeta>0)&(zeta<1)
y=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt(1-zeta^2)*x+acos(zeta));
elseif zeta==1
y=1-exp(-x).*(1+x);
end
plot(x,y)
(2)在M文件编辑窗口编写上述程序,保存为exam02.m文件
(3在MATLAB命令窗口输入:
>>zeta=0.707;
>>exam02(zeta)
3.MATALB程序设计
matlab语言的程序结构与其它高级语言是一致的,分为顺序结构,循环结构,分支结构。
(1).顺序结构——依次顺序执行程序的各条语句
(2).循环结构——被重复执行的一组语句,循环是计算机解决问题的主要手段。
循环语句主要有:
●for — end
语法为:
for i = 表达式(表达式为一个向量)
可执行语句
end
利用for循环求1!+2!+3!+ …… +5!的值(
sum=0;
for i=1:5
pdr=1;
for k=1:i
pdr=pdr*k;
end
sum=sum+pdr;
end
在M文件编辑窗口编写上述程序,保存为exam03.m文件;在MATLAB命令窗口执行命令:
>>exam03
>>sum
for循环语句计算sum=
10
1i
i
i =
∑的程序
sum=0;
for n=1:10;
sum=n^n+sum;
end
在M文件编辑窗口编写上述程序,保存为exam04.m文件;在MATLAB命令窗口执行命令:
>>exam04
>>sum
●while — end 循环
while循环将循环体中的语句循环执行不定次数。
语法为:while 表达式
循环体语句
end
表达式一般是由逻辑运算和关系运算以及一般运算组成的,以判断循环的进行和停止;只要表达式的值非0,继续循环;直到表达式值为0,循环停止。
用while循环求1~100间整数的和
sum=0;
i=1;
while i<=100
sum=sum+i;
i=i+1;
end
sum
在M文件编辑窗口编写上述程序,保存为exam05.m文件;在MATLAB命令窗口执行命令:
>>exam05
while循环语句计算sum=
10
1i
i
i =
∑的程序
>> n=1;
>> sum=0;
>> while n<=10
sum=n^n+sum
n=n+1;
end
在M 文件编辑窗口编写上述程序,保存为exam06.m 文件;在MATLAB 命令窗口执行命令:
>>exam06
>>sum
(3).分支结构——根据一定条件来执行的各条语句。
if — else — end 语句;语法如下:
if 表达式1
语句1
elseif 表达式2
语句2
elseif 表达式3
语句3
……
else
语句n
end
编写m 函数文件,计算函数值 y=⎪⎩
⎪⎨⎧>=-<<-<)10(113)
101(12)1(x x x x x x (1)编写函数代码
function f=exam07(t)
if(t<1)
f=t
elseif(t>1)&(t<10)
f=2*t-10
else
f=3*t-11
end
(2)在M 文件编辑窗口编写上述程序,保存为exam07.m 文件
(3)在MATLAB 命令窗口输入:
>> x=5;
>> y=exam07(x)
其它x 取值同学们可以自己实验,并查看结果。