MATLAB实验五
- 格式:doc
- 大小:565.82 KB
- 文档页数:9
实验五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次测量数据,将数据绘制成为分组形式和堆叠形式的条形图。
MATLAB数值计算班级:11电信一班姓名:何得中学号:20111060108实验目的:1.了解MATLAB提供的标准多项式的常用函数;2.掌握用MATLAB创建多项式;3.学会用MATLAB对数据的分析;实验仪器:MATLAB软件,电脑实验数据:>> poly2sym([1 2 6 -5 3 9])ans =x^5+2*x^4+6*x^3-5*x^2+3*x+9 >> A=[7 8 9;4 5 6;1 2 3];>> B=poly(A)B =1.0000 -15.0000 18.00000.0000>> poly2sym(B)ans=x^3-15*x^2+18*x+422583449577050 7/633825300114114700748351602688 >> v=[0.5 0.6i -0.4 -0.6i]v =0.5000 0 + 0.6000i -0.4000 0 - 0.6000i>> p=poly(v)p =1.0000 -0.1000 0.1600 -0.0360 -0.0720>> pr=poly2sym(p)pr=x^4-1/10*x^3+4/25*x^2-9/250*x-9/12 5>> p=poly([1 2 3 4 5]);>> polyval(p,6)ans =120>> p=[1 3 1 2 1];>> polyvalm(p,[3 6;8 4])ans = 7186 66668888 8297>> polyvalm(p,7)ans =3494>> p=[1 4 2];>> x=0:0.8:4;>> y=polyval(p,x)y = 2.0000 5.8400 10.9600 17.3600 25.0400 34.0000>> a=[1 -1 4 10];>> r=roots(a);r = 1.1879 + 2.4202i1.1879 -2.4202i-1.3758>> pp=poly(r)pp =1.0000 -1.0000 4.0000 10.0000>> p1=[1,0,1,1];>> p2=[0,1,-1,2];>> p1+p2ans =1 1 0 3>> p1-p2ans =1 -1 2 -1>> c=conv([1 1 2 2],[1 2 5 4])c = 1 3 9 15 18 18 8>> p1=[1,0,1,1]; >> p2=[1,-1,2];>> [q,r]=deconv(p1,p2) q = 1 1 r = 0 0 0 -1 >> g=[1 5 4 6 20 48 27 72 39 ]; >> h=polyder(g) h = 8 35 24 30 80 144 54 72 >> q=polyint(h) q =1 5 4 6 20 48 27 72 0 >> b=[4,9]; >> a=[1,7,8]; >> [r,p,k]=residue(b,a) r = 3.2127 0.7873 p = -5.5616 -1.4384 k = [] >> [b,a]=residue(r,p,k) b = 4.0000 9.0000 a = 1 7 8 x=linspace(0,2*pi,50); >> y=sin(x); >> [p,s]=polyfit(x,y,3) p = 0.0912 -0.8596 1.8527 -0.1649 s = R: [4x4 double] df: 46 normr: 0.5055>> plot(x,y,'r:*',x,polyval(p,x),'-o')>> a=ceil(rand(4,4)*12) a = 12 11 10 12 3 10 6 9 8 6 8 3 6 1 10 5 >> b=ceil(rand(4,4)*10) b = 10 1 2 3 10 4 3 2 5 9 2 1 9 1 7 8 >> x=a\b x = -0.6400 -0.3800 -0.5800 -0.3600 0.0814 1.4697 -0.2959 -0.7021 0.9883 1.0679 0.9748 0.7876 0.5752 -1.7738 0.2055 0.5972 >> x=[1 1.5 2 2.5 3 3.5 4 4.5 5]'; >> y=[-1.4 2.7 3 5.9 8.4 12.2 16.6 18.8 26.2]'; >> e=[ones(size(x)) x.^2]; >> c=e\y c = -1.0685 1.0627>> x1=[1:0.1:5]'; >> y2=[ones(size(x1)),x1.^2]*c;>> plot(x,y,'ro',x1,y2,'k')>> a=[2 4 7 4;9 3 5 6]; >> b=[8 5]'; >> x=pinv(a)*bx = -0.21510.44590.79490.2707>> x=0:0.02*pi:2*pi;>> y=sin(x);>> ymax=max(y)ymax = 1>> ymin=min(y)ymin = -1>> ymean=mean(y)ymean =2.2995e-017>> ystd=std(y)ystd =0.7071>> score=[90 80 78 98 79;100 90 68 78 69;88 77 99 87 100];>> score_sum=sum(score)score_sum = 278 247 245 263 248>> score_avg=score_sum/3.score_avg =92.6667 82.3333 81.6667 87.6667 82.6667>> score_max=max(score)score_max=100 90 99 98 100>>[score_max,score_max_student]=max(s core)score_max =100 90 99 98 100score_max_student = 2 2 3 1 3>> score_min=min(score)score_min = 88 77 68 78 69>>[score_min,score_min_student]=min(sc ore)score_min = 88 77 68 78 69score_min_studen t=3 3 2 2 2>> score_student_sum=sum(score) score_student_sum=278 247 245 263 248>>score_student_savg=score_student_sum. /3score_student_savg =92.6667 82.3333 81.6667 87.6667 82.6667>> std(score)ans =6.4291 6.8069 15.8219 10.0167 15.8219>> var(score)ans =41.3333 46.3333 250.3333 100.3333 250.3333>> x=linspace(0,2*pi,10)x =0 0.6981 1.3963 2.0944 2.7925 3.4907 4.1888 4.8869 5.5851 6.2832>> y=sin(x)y=0 0.6428 0.9848 0.8660 0.3420 -0.3420 -0.8660 -0.9848 -0.6428 -0.0000>> dy=diff(y)dy=0.6428 0.3420 -0.1188 -0.5240 -0.6840 -0.5240 -0.1188 0.3420 0.6428>> d2y=diff(y,2)d2y= -0.3008 -0.4608 -0.4052 -0.1600 0.1600 0.4052 0.4608 0.3008>> d3y=diff(y,3)d3y= -0.1600 0.0556 0.2452 0.3201 0.2452 0.0556 -0.1600>> x=[1 2 3 4 5];>> y=[4 5 6 7 8];>> cx=cov(x)cx = 2.5000>> cy=cov(y)cy = 2.5000>> cxy=cov(x,y)cxy =2.5000 2.50002.5000 2.5000>> x=-1:0.2:1;>> z=exp(x.^2);>> fx=gradient(z)fx= -0.8218 -0.6425 -0.3615 -0.1963 -0.0868 0 0.0868 0.1963 0.3615 0.6425 0.8218function ex=ex(x)ex=exp(-x.^2)return>> format long>> quad('ex',0,1,1e-6)ex = 1.00000000000000 0.981730032806080.928898599395100.778800783071400.588254444230630.473852624646280.36787944117144ex = 0.99540087747802 0.95936125127772ex =0.86171221264734 0.68574192538547ex = 0.53040332078406 0.41944631668514ans = 0.74682418072642>> quadl('ex',0,1,1e-6)ex=1.000000000000000.999184727905840.991616959101330.968441445328330.926451851978820.864349866175970.778800783071400.682385279905670.592380095006350.509706301048790.438272262810980.389185953389380.36787944117144ex = 0.99161695910133 0.926451851978820.778800783071400.592380095006350.43827226281098ans = 0.74682413398845>> quad8('ex',0,1,1e-6) ex =1.00000000000000 0.999184727905840.991616959101330.968441445328330.92645185197882 0.86434986617597 0.778800783071400.682385279905670.592380095006350.509706301048790.438272262810980.389185953389380.36787944117144ex= 0.99161695910133 0.926451851978820.778800783071400.592380095006350.43827226281098ans = 0.74682413398845x0=0:pi/5:4*pi;y0=sin(x0).*exp(-x0/10);xi=0:pi/20:4*pi;yi=interp1(x0,y0,xi,'spline');plot(x0,y0,'or',xi,yi,'--b');Untitled2>> t=0:5:65;>> x=2:5:57;>>f=[3.1025,2.256,879.5,1835.9,2968.8,41 36.2,5237.9,6152.7,6725.3,6848.3,6403. 5,6824.7,7328.5,7857.6];>> f1=interp1(t,f,x)f1 = 1.0e+003 *0.002763900000000.353153600000001.262060000000002.289060000000003.435760000000004.576880000000005.603820000000006.381740000000006.774500000000006.670380000000006.571980000000007.02622000000000>> f2=interp1(t,f,x,'nearext') f2 = 1.0e+003 *0.003102500000000.002256000000000.879500000000001.835900000000002.968800000000004.136200000000005.237900000000006.152700000000006.725300000000006.848300000000006.403500000000006.82470000000000>> f3=interp1(t,f,x,'spline') f3 = 1.0e+003 *-0.170259056484550.306978324423981.256000890788642.269771808421483.439603875525464.589619889476705.637043766567756.422853844252316.859291256423016.653528330055636.481654623354457.04407557652658 >> f4=interp1(t,f,x,'cubic')f4 = 1.0e+003 *0.002438844000000.223194994900141.248358437730492.273647289639383.436483654858934.591276133775775.636234122067276.436239461848896.797756124209326.691730400000006.507716445924327.01855707680041[x,y,z]=peaks(6);mesh(x,y,z)[xi,yi]=meshgrid(-3:0.2:3,-3:0.2:3); z1=interp2(x,y,z,xi,yi,'nearest');z2=interp2(x,y,z,xi,yi,'linear');z3=interp2(x,y,z,xi,yi,'spline');z4=interp2(x,y,z,xi,yi,'cubic'); subplot(2,2,1)mesh(xi,yi,z1)title('nearest插值的网络图') subplot(2,2,2)mesh(xi,yi,z2)title('linear插值的网络图') subplot(2,2,3)mesh(xi,yi,z3)title('spline插值的网络图') subplot(2,2,4)mesh(xi,yi,z4)title('cubic插值的网络图')。
实验五 基于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中的循环结构有了更加深入的了解,我相信这对我的编程能力和日后的学习工作都将大有裨益。
六、实验感想和改进意见通过本次实验,我深刻认识到循环结构在程序设计中的重要性和灵活性。
循环结构能够帮助我们简化程序的编写,提高代码的重用性和可读性,因此在实际的程序设计中,合理地运用循环结构能够大大提高程序的效率和逻辑清晰度。
实验五数据可视化一、实验目的掌握MATLAB 二维、三维图形绘制,掌握图形属性的设置和图形修饰。
二、实验内容(1)二维图形绘制。
(2)三维曲线和三维曲面绘制。
三、实验步骤1.二维图形绘制(1) 二维图形绘制主要使用函数plot。
(2)函数plot 的参数也可以是矩阵。
(3) 选用绘图线形和颜色(4) 添加文字标注。
(5) 修改坐标轴范围。
6) 子图和特殊图形绘制。
2. 三维曲线和三维曲面绘制(1) 三维曲线绘制使用plot3 函数。
绘制一条空间螺旋线:z=0:0.1:6*pi;x=cos(z);y=sin(z);plot3(x,y,z);(2) 三维曲面图的绘制:MATLAB 绘制网线图和曲面图的函数分别是mesh( )和surf( ),其具体操作步骤是:①用函数meshgrid( )生成平面网格点矩阵[X,Y];②由[X,Y]计算函数数值矩阵Z;③用mesh( )绘制网格图,用surf( )绘制曲面图。
绘制椭圆抛物面:clear all,close all;x=-4:0.2:4;y=x;[X,Y]=meshgrid(x,y);Z=X.^2/9+Y.^2/9;mesh(X,Y,Z);title('椭圆抛物面网格图')figure(2)surf(X,Y,Z);title('椭圆抛物面曲面图')绘制阔边帽面:clear all,close all;x=-7.5:0.5:7.5;y=x;[X,Y]=meshgrid(x,y);R=sqrt(X.^2+Y.^2)+eps; %避开零点,以免零做除数Z=sin(R)./R;mesh(X,Y ,Z);title('阔边帽面网格图')figure(2)surf(X,Y ,Z);title('阔边帽面曲面图')四、练习:1、写出图 A2 的绘制方法。
提示:按照以下的步骤进行(1)产生曲线的数据(共有 3组数据);(2)选择合适的线形、标记、颜色(正弦曲线为红色,余弦曲线为青色);(3)添加图例及文字说明信息;(4)添加坐标轴说明与图标题。
实验五 MATLAB 数值计算一、实验目的1.掌握求数值导数和数值积分的方法。
2.掌握代数方程数值求解的方法。
3.掌握常微分方程数值求解的方法。
二、实验的设备及条件计算机一台(带有MATLAB7.0以上的软件环境)。
设计提示1.参考本节主要内容,学习并理解相关函数的含义及调用方法。
三、实验内容1.线性系统方程:分别使用左除(\)和求逆(inv )求解下面系统方程的解:⎪⎩⎪⎨⎧=+=+=++377251463c b b a c b a2. 数值积分:使用quad 和trapz 求解⎰-503/dx xe x 的数值积分,并与其解析解9243/5+--e 相比较;3. 请完成教材P154页中实验指导环节的实验内容第2题4. 请完成教材P155页中思考练习的第3题(1),并绘制解在该求解区间(即[0,5])上的图像;。
5、请完成教材P164页实验指导环节的实验内容第5题。
(提示:该函数的符号导数,可以通过函数diff 求得。
首先定义符号变表达式,如求sin(x)的一阶符号导数,可以先定义f=’sin(x)’;df=diff(f);可求得df=cos(x)。
其中df 即为函数f 的一阶符号导数)。
四、实验报告要求(包含预习报告要求和最终报告要求)1.实验名称2.实验目的3.实验设备及条件4.实验内容及要求5.实验程序设计指程序代码。
6.实验结果及结果分析实验结果要求必须客观,现象。
结果分析是对实验结果的理论评判。
7.实验中出现的问题及解决方法8. 思考题的回答五、实验报告的提交方式Word文档,命名方式:实验号_你的学号_姓名例如本次实验:实验一_000000001_张三.doc(信息101提交报告邮箱):E_mail: *******************(网络工程101提交作业邮箱):E_mail: *******************(注意网络班的M是大写的)下一次课前提交,过期不收!六、参考文献参考教材和Matlab帮助文件。
实验五用MATLAB判定系统的能控性1、实验设备MATLAB软件2、实验目的①学习线性定常连续系统的状态空间模型的能控性判定、掌握MATLAB中关于该模型判定的主要函数;②通过编程、上机调试,进行模型判定。
3、实验原理说明对于连续的线性定常系统,采用代数判据判定状态能控性需要计算能控性矩阵。
Matlab提供的函数ctrb()可根据给定的系统模型,计算能控性矩阵Qc=[B AB … An-1B]能控性矩阵函数ctrb()的主要调用格式为:Qc = ctrb(A,B)Qc = ctrb(sys)其中,第1种输入格式为直接给定系统矩阵A和输入矩阵B,第2种格式为给定状态空间模型sys。
输出矩阵Qc为计算所得的能控性矩阵。
基于能控性矩阵函数ctrb()及能控性矩阵Qc的秩的计算rank(),就可以进行连续线性定常系统的状态能控性的代数判据判定。
也可用函数Judge_contr()通过调用能控性矩阵函数ctrb()和计算矩阵秩的函数rank(),完成能控性代数判据的判定。
4、实验步骤①根据所给状态空间模型,依据线性定常连续系统状态方程计算能控性矩阵,采用MATLAB 编程。
在MATLAB界面下调试程序,并检查是否运行正确。
习题1:试在Matlab中计算如下系统的状态能控性。
Matlab源程序如下:A=[1 3 2; 0 2 0; 0 1 3];B=[2 1; 1 1; -1 -1];sys=ss(A,B,[],[]);Judge_contr(sys);函数Judge_contr()的源程序为:function Judge_contr(sys)Qc=ctrb(sys);n=size(sys.a);if rank(Qc)==n(1)disp('The system is controlled')elsedisp('The system is not controlled')end表明所判定的系统状态不能控。
实验五 MATLAB 绘图一、实验目的 掌握基本的MATLAB 绘图函数及方法。
二、实验内容1、在同一坐标系下绘制下面三个函数在t ∈[0,4π]的图象。
)sin(41.0321t e y t y ty t -===π程序如下:t=0:pi/100:4*pi;y1=t;y2=sqrt(t);y3=4*pi*exp(-0.1*t).*sin(t);plot(t,y1,’b ’,t,y2,’g ’,t,y3,’r ’);2、编写程序,选择合适的步距,绘制下面函数在区间[-6,6]中的图象。
⎪⎩⎪⎨⎧>+-≤<≤=3,630,0,sin )(x x x x x x x y程序如下:x1=-6:pi/100:0;y1=sin(x1);x2=0:0.01:3;y2=x2;x3=3:0.01:6;y3=-x3+6;plot(x1,y1,x2,y2,x3,y3);3、用compass函数画下面相量图ua = 1 ;ub = cos(-2*pi/3)+sin(-2*pi/3)*i ;uc=cos(2*pi/3)+sin(2*pi/3)*i;compass([ua,ub,uc,ua-ub,ub-uc,uc-ua])4、用mesh 或surf 函数绘制下面方程所表示的三维空间曲面,x 和y 的取值范围设为[-3,3]。
101022y x z +-= 程序如下:[x,y]=meshgrid(-3:0.01:3,-3:0.01:3);z= -(x.*x)/10+(y.*y)/10; subplot(1,2,1); mesh(x,y,z); subplot(1,2,2); surf(x,y,z);5、编写一个函数,x<=2时,function f1=myfun(x)if x<=2f1=0.5.*x;elseif x>6f1=0.5;elsef1=1.5-0.25.*x;end>> x=0:0.01:2;>> plot(x,myfun(x).*myfun(x+2))。
本次实验注意:《实验五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在信号与系统的应用【实验目的】1、了解并熟悉MATLAB实现常用连续时间信号的产生方法;连续系统的时域和频域分析方法。
2、掌握MATLAB程序的编程方法。
3、了解MATLAB信号处理工具箱函数的调用方法。
【实验内容】1、对书上例题的总结例1 绘制了单位冲激函数、单位阶跃函数与复指数函数的图形,用到的关键语句单位冲激函数:x1=zeros(1,length(t)); %对所有信号初始化,t为时间x1(n1)=1/dt; %给出t1时刻脉冲信号,dt为时间间隔单位阶跃函数:x2 = [zeros(1,n1),ones(1,length(t)-n1)];%产生阶跃信号,n1为t1对应的样本序号例2 求解了LTI系统的零输入响应,用到了经典法求解,关键语句如下:p=roots(a); %求系统的极点V=rot90(vander(p));c= V\Y0'; % 用范德蒙特矩阵求对应于各极点的系数for k=1:n y= y+c(k)*exp(p(k)*t);end例3 求解n阶LTI系统的冲激响应,用到了residue函数求解极点和留数,还用到了for语句叠加各根分量。
例4 主要是卷积的计算。
用到的函数有conv函数计算卷积,input函数等待用户输入数值,fliplr(h)函数将h左右翻转。
例5 求LTI系统的零状态响应,和求解零输入同样用到留数residue函数来求解冲激响应函数,并且绘制冲激响应函数的图形,然后将其与输入信号的卷积求出,即输出函数,最后绘制输出函数的图形。
例7 将周期方波分解为多次正弦波之和,用程序演示谐波合成情况。
用到的新函数是line([0,pi+0.5],[pi/4,pi/4]) % 加上方波幅度线及标注halft=ceil(length(t)/2);mesh(t(1:halft),[1:10],y(:,1:halft)) %绘制三维图形例10 比较调幅信号通过带通滤波器后与原波形的区别。
实验五MATLAB程序设计(2)一、m脚本文件和M函数文件:(一)m脚本文件1.格式和前后位置与命令窗口中的命令行相同,除了没有函数声明行之外,和m函数文件类似。
2.M脚本文件运行产生的变量都驻留在MATLAB的工作空间,可以在命令窗口方便的查看变量。
(二)M函数文件1.每个文件以函数声明行开头,函数声明行的格式如下:function [输出参数列表]=函数名(输入参数列表)说明:▲函数名是函数的名称,保存时函数名和文件名应一致。
▲输入参数列表是函数接收的输入参数,多个参数间用“,”分隔。
▲输出参数列表是函数的运算结果,多个参数间用“,”分隔。
2.当文件执行完最后一条命令或遇到”return”命令时就结束函数文件的运行,同时函数工作空间的变量被清除。
3.一个m函数文件中可以包含一个或多个函数,主函数是出现在文件最上方的函数,一个m文件只能有一个主函数,通常主函数名与m函数文件名相同。
4.在一个m函数文件中如果包含一个或多个函数,则除了第一个主函数之外,其余的都是子函数。
子函数只能被同一文件中的函数(主函数或子函数)调用。
5.在命令窗口调用m 函数文件时,输入文件名和必要的参数即可。
二、实验内容1.创建矩阵⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡--=0000020001100120123 n n n y (1) 创建m 脚本文件,使用for 循环结构建立矩阵n=6;y=zeros(n);for m=1:n-1for mn=(m+1):ny(m,mn)=mn-1;endend(2) 创建m 脚本文件,使用while 循环结构建立矩阵n=6;y=zeros(n);m=1;while m<nmn=m+1;while mn<=ny(m,mn)=mn-1;mn=mn+1;endm=m+1;end(3)使用m函数文件function y=sy1(n)y=zeros(n);for m=1:n-1for mn=(m+1):ny(m,mn)=mn-1;endend2.“水仙花数”是一个三位数,各位数的立方和等于该数本身,如果是“水仙花数”则函数输出为1,否则输出为0。
09电子系物本 姓名: 周 琴 学号: 120091001129实验指导五一、 实验目的掌握定义和调用MATLAB 函数的方法。
二、 实验内容1、建立5×6矩阵,要求输出矩阵第n 行元素。
当n 值超过矩阵的行数时,自动转为输出矩阵的最后一行元素,并给出出错信息。
2、已知:y=()()()403020f f f +(1) 当f(n)=n+10ln(n^2+5)时,y 的值是多少。
(2) 当f(n)=1*2+2*3+3*4+…+n*(n+1)时,y 的值是多少。
3、先用函数的递归调用一个函数文件求50121k =1111n m i k k i k k k ===++∑∑∑∑100,然后调用该函数文件求。
三、实验数据:1、>> cleara=rand(5,6);n=input('请输入一个数:');if n>5n=5a(n,:)disp('输入超出范围');elsea(n,:)end请输入一个数:6n =5ans =0.7680 0.4983 0.7266 0.9334 0.1338 0.5751 输入超出范围2、(1)保存的文件名:n2a.m代码:function a=n2a(n)a=n+10*log(n*n+5)命令窗:clear;y=n2a(40)/(n2a(30)+n2a(20))a =113.8088a =98.0793a =80.0389y =0.6390(2)创建函数文件名:n1b.m代码:function b=n1b(n)b=0;for i=1:nb=b+i*(i+1);end命令窗内容:clear;y=n1b(40)/(n1b(30)+n1b(20))y =1.76623、首先建立命令文件分别并以文件名factor1.m和factor2.m和factor3存盘. Factor1中的代码如下:function f=factor1(k)if k==1f=1;elsef=factor1(k-1)+k;endFactor2中的代码如下:function f=factor2(k)if k==1f=1;elsef=factor2(k-1)+k^2;endFactor3中的代码如下:function f=factor3(k)if k==1f=1;elsef=factor3(k-1)+1/k;end在命令窗口中输入:y=factor1(100)+factor2(50)+factor3(10);y运行结果: y =4.7978e+004。
实验五曲面绘图【实验目的】1.了解二元函数图形的制作。
2.空间曲面等高线的制作。
3.学习掌握MATLAB软件有关的命令。
【实验内容】画出函数22y=的图形,并画出其等高线。
xz+【实验准备】1.曲线绘图的MATLAB命令MATLAB中主要用mesh,surf命令绘制二元函数图形。
可以用help mesh, help surf查阅有关这些命令的详细信息【实验方法与步骤】练习1画出函数22y=的图形,不妨将区域限制在z+x⨯-x。
用MATLAB作图的程序代码为:(-y∈)]3,3,[]3,3[>>clear;>>x=-3:0.1:3; %x的范围为[-3,3]>>y=-3:0.1:3; %y的范围为[-3,3]>>[X,Y]=meshgrid(x,y); %将向量x,y指定的区域转化为矩阵X,Y>>Z=sqrt(X.^2+Y.^2); %产生函数值Z>>mesh(X,Y,Z)结果如图5.1。
图5.1是网格线图,如果要画完整的曲面图,只需将上述的MATLAB 代码mesh(X,Y,Z)改为surf(X,Y,Z), 结果如图5.2图5.1 锥面图5.2 锥面要画等高线,需用contour,contour3命令.其中contour为二维等高线, contour3为三维等高线,如画图5.1的三维等高线, MATLAB代码为:>>clear;>>x=-3:0.1:3;>>y=-3:0.1:3;>>[X,Y]=meshgrid(x,y);>>Z=sqrt(X.^2+Y.^2);>>contour3(X,Y,Z,10) %画10条等高线>>xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis') %三个坐标轴的标记>>title('Contour3 of Surface') %标题>>grid on %画网格线结果如图5.3.图5.3 等高线如画图5.1的二维等高线, MATLAB代码为:>>clear; x=-3:0.1:3; y=-3:0.1:3;>>[X,Y]=meshgrid(x,y); Z=sqrt(X.^2+Y.^2);>> contour(X,Y,Z,10)>>xlabel('X-axis'),ylabel('Y-axis')>>title('Contour of Surface')>>grid on结果如图5.4.图5.4 等高线如果要画1=z 的等高线,则用命令>>clear; x=-3:0.1:3; y=-3:0.1:3;>>[X,Y]=meshgrid(x,y); Z=sqrt(X.^2+Y.^2);>> contour(X,Y,Z,[1 1])结果如图5.5。
实验五
院系:物理与电子科学学院 专业:电子信息科学与技术 班级: 二班 实验名称:
用(DFT )FFT 和CZT 对信号进行频谱分析
课程名称: 数字信号处理
实验室:
实验C 楼201
成绩
实验人: 邵洋 学号:200840620225
指导教师: 赵发勇
实验目的:
1、进一步加深DFT 算法原理和基本性质的理解
2、熟悉FFT 算法原理和FFT 子程序的应用
3、学习用FFT 对连续信号和时域离散信号进行谱分析的方法, 了解可能出现的分析误差及 其原因, 以便在实际中正确应用FFT 。
实验内容:
1.为了说明高密度频谱与高分辨率频谱之间的区别,考虑序列:
)52.0cos()45.0cos()(n n n x ππ+=
求出它基于有限个样本的频谱。
a.
当100≤≤n 时,确定并画出x (n )的离散时间傅利叶变换。
b. 当0100≤≤n 时,确定并画出x (n )的离散时间傅利叶变换。
2.设)(~
1n x 的基本周期N=50,它的一个周期由下式给出:
⎪⎩⎪⎨
⎧≤≤≤≤=-49260250,)(~
3.01n n ne n x n ,
)
(~2
n x 的基本周期N=100,它的一个周期由下式给出:
⎪⎩⎪⎨
⎧≤≤≤≤=-99260250,)(~
3.02n n ne n x n ,
这两个周期序列的区别在于它们的周期,但它们具有相同的非零样本。
a.求出)(~1n x 的DFS )(~1n X ,用stem 函数画出它的幅度和角度样本。
b.求出)(~2n x 的DFS )(~2n X ,画出它的幅度和角度样本。
3.以教材《数字信号处理导论》P179面例4.7.2为例,编程求解教材P182面习题4.10。
CZT 算法的研究
给定信号∑==
3
1
)2sin()(i i
t f t x π,已知Hz f
8.101
=,Hz f 75.112=,
Hz f 55.123=,令Hz f s 40=,对)(t x 抽样后得)(n x ,又令N=64。
实验结果分析
1、
)52.0cos()45.0cos()(n n n x ππ+=
(a )当100≤≤n 时,确定并画出x (n )的离散时间傅利叶变换。
(b )当0100≤≤n 时,确定并画出x (n )的离散时间傅利叶变换。
2、设)(~
1n x 的基本周期N=50,它的一个周期由下式给出:
⎪⎩⎪⎨
⎧≤≤≤≤=-49260250,)(~
3.01n n ne n x n ,
)
(~2
n x 的基本周期N=100,它的一个周期由下式给出:
⎪⎩⎪⎨
⎧≤≤≤≤=-99260250,)(~
3.02n n ne n x n ,
(a ).求出)(~1n x 的DFS )(~1n X ,用stem 函数画出它的幅度和角度样本。
由以下DFT图形进行周期延拓后可得DFS
(b ).求出)(~2n x 的DFS )(~2n X ,画出它的幅度和角度样本。
3、CZT 算法的研究。
给定信号∑==
3
1
)2sin()(i i
t f t x π,已知Hz f
8.101
=,Hz f 75.112=,
Hz f 55.123=,令Hz f s 40=,对)(t x 抽样后得)(n x ,又令N=64。
(1)调用MA TLAB 中的czt.m ,可求出X(k)及其幅度谱,这时f ∆=N f s /=0.625Hz ,小于(12f f -)及(23f f -),观察三个谱峰的分辨情况。
(2)在)(n x 后分别补3N 个零、7N 个零、15N 个零,再做DFT ,观察补零效果。
(3)调用MA TLAB 中的文件czt.m ,按如下两组参数赋值:
参数1:Hz f s 40=,N=64,M=50,Hz f 90=,f ∆=0.2Hz ; 参数2:Hz f s 40=,N=64,M=\60,Hz f 80=,f ∆=0.12Hz 。
分别求X(k),k=0,1,…,M-1,画出其幅度谱,并和(1),(2)的结果相比较
(1)、调用MA TLAB 中的czt.m,求出其幅度谱
(2)、在)
x后分别补3N个零、7N个零、15N个零,再做DFT,观察补零效果。
(n
(3)调用MA TLAB中的文件czt.m,按所给两组参数赋值:
思考题解答
1、用FFT作频谱分析时,分辨率主要由哪些因素决定?周期函数:抽样频率
非周期函数:窗的宽度
2、实验说明CZT相对于FFT更具有哪些估点?(1)、可以设定开始位置
(2)、可设定分辨率
(3)、可设置取点数。