实验一MATLAB语言的基本使用方法实验类别:基础性实验实验目的:(1)了解MATLAB程序设计语言的基本方法,熟悉MATLAB软件运行环境。
(2)掌握创建、保存、打开m文件的方法,掌握设置文件路径的方法。
(3)掌握变量、函数等有关概念,具备初步的将一般数学问题转化为对应计算机模型并进行处理的能力。
(4)掌握二维平面图形的绘制方法,能够使用这些方法进行常用的数据可视化处理。
实验内容和步骤:1、打开MATLAB,熟悉MATLAB环境。
2、在命令窗口中分别产生3*3全零矩阵,单位矩阵,全1矩阵。
3、学习m文件的建立、保存、打开、运行方法。
4、设有一模拟信号f(t)=1.5sin60πt,取∆t=0.001,n=0,1,2,…,N-1进行抽样,得到序列f(n),编写一个m文件sy1_1.m,分别用stem,plot,subplot等命令绘制32点序列f(n)(N=32)的图形,给图形加入标注,图注,图例。
5、学习如何利用MATLAB帮助信息。
实验结果及分析:1)全零矩阵>> A=zeros(3,3)A =0 0 00 0 00 0 0 2)单位矩阵>> B=eye(3)B =1 0 00 1 00 0 13)全1矩阵>> C=ones(3)C =1 1 11 1 11 1 14)sy1_1.mN=32;n=0:N-1;dt=0.001;t=n*dt;y=1.5*sin(60*pi*t);subplot(2,1,1), plot(t,y); xlabel('t');ylabel('y=1.5*sin(60*pi*t)'); legend('正弦函数');title('二维图形');subplot(2,1,2), stem(t,y) xlabel('t');ylabel('y=1.5*sin(60*pi*t)'); legend('序列函数');title('条状图形');00.0050.010.0150.020.0250.030.035ty=1.5*sin(6*pi*t)二维图形00.0050.010.0150.020.0250.030.035ty=1.5*sin(6*pi*t)条状图形思考问题(a)Matlab中改变目录的命令CD的使用方法是否与DOS下完全相同?答:不完全相同。
1、dos命令行中cd命令用法:显示当前目录名或改变当前目录。
CHDIR [/D] [drive:][path]CHDIR [..]CD [/D] [drive:][path]CD [..] 指定要改成父目录。
键入CD drive: 显示指定驱动器中的当前目录。
不带参数只键入CD,则显示当前驱动器和目录。
使用/D 开关,除了改变驱动器的当前目录之外,还可改变当前驱动器。
如果命令扩展被启用,CHDIR 会如下改变:当前的目录字符串会被转换成使用磁盘名上的大小写。
cd\ '返回到根目录cd.. '返回到上一级目录2、在Matlab中使用cd命令的方法:进入指定的目录一般有两种用法(1)cd dir,这里,dir是指特定的计算机路径(也可以采用matlab运行目录下的文件路径简写方式),特别需要注意的一点是,dir需要是具体的指定文件路径,如cd E:a\b\c\d,而不能采用str='E:a\b\c\d',cd str的方式,因为这时cd后面的str会被直接认定为文件路径,不会读取str中的内容。
为了对解决这种情况,简化cd命令,可以先用str='E:a\b\c\d',然后采用cd的第二种用法;(2)cd(str),这里,str是一个char数组,存储了某个文件路径。
同理,在mex -outdir dir中,这里,dir也必须是具体的指定文件目录路径,而不能是一个表示文件路径的char数组,原因同cd命令。
为了简写mex编译选项命令,其实可以采取以下方法:mex_str = sprintf('mex -outdir %s',dir);eval(mex_str),这里,dir即是存储文件路径的char数组。
(b)结束并退出Matlab的操作方法可以有六种,对吗?答:一般有三种方法,但还可以扩展,如4、5、6种:1、在Microsoft Windows平台上,单击 MATLAB桌面右上角的关闭框2、从桌面上的File菜单,选择Exit MATLAB3、在命令窗口提示键入quit or exit4、finishsav.m —MATLAB退出时保存工作区到一个MAT文件。
5、finishdlg.m—显示一个对话框,允许您取消和保存工作区。
6、创建一个终止文件,使这些样本文件副本,finish.m更改名称,将它添加到路径使用它。
实验二离散时间信号时域表示实验类别:验证性试验实验目的:(1)掌握序列的产生方法。
(2)熟悉关于序列的简单运算。
(3)序列及其运算结果的可视化表示。
实验内容和步骤:1、编写sy2_1.m程序文件,生成单位抽样序列和单位阶跃序列(n=-10~20),用图形显示。
2、编写sy2_2.m程序文件,生成一个实数值的指数序列(n=0~35,a=1.2,k=0.2),用图形显示。
3、编写sy2_3.m程序文件,生成扫频正弦序列x(n)=cos(n²π/200)(n=0~100), 用图形显示。
4、编写sy2_4.m程序文件以实现下列功能:用rand函数产生随机噪声,加在一个已知的确定信号上,然后采用三点滑动平均算法y(n)=⅓(x[n-1]+x[n]+x[n+1])实现信号平滑,用图形显示平滑前后的信号。
实验结果及分析:1.单位抽样序列n=-10:20;y=[zeros(1,10),1,zeros(1,20)];stem(n,y);axis([-10,20,0,2]);title ('单位抽样序列')2.单位阶跃序列n=-10:20;y=[zeros(1,10),ones(1,21)];stem(n,y,'r');axis([-10,20,0,2]);title('单位阶跃序列')sy2_2.m 实数值的指数序列n=0:35;a=1.2;k=0.2;x=k*a.^n;stem(n,x);title('实数值的指数序列')sy2_3.m 扫频正弦序列n=0:100;x=cos((pi/200)*n.*n); stem(n,x);title('扫频正弦序列')sy2_4.m 平滑信号相关图形N=100;u=rand(1,N);m=0;N-1;xx=2*pi*[0:N-1];s=sin(xx);subplot(3,1,1);plot(s);x=u+s;subplot(3,1,2);plot(x);x1=[0 0 x];x2=[0 x 0];x3=[x 0 0];y=(x1+x2+x3)/3;subplot(3,1,3);plot(y);title('实现信号平滑')思考题Legend命令的作用是什么?答:MATLAB中legend命令是依据绘图的先后顺序,依次输出字符串对各个图形进行注解说明。
实验三卷积实验类别:验证性试验实验目的:(1)掌握线性卷积的计算机编程方法,利用卷积的方法观察、分析系统响应的时域特性。
(2)验证卷积定理。
(3)掌握圆周卷积的计算机编程方法,并比较与线性卷积的差别。
利用圆周卷积的方法观察、分析系统响应的时域特性。
实验内容和步骤:1、在编程前,认真复习卷及有关内容:线性卷积、圆周卷积、卷积定理、快速傅里叶变换FFT计算线性卷积等,阅读本实验原理和方法以及实验用子程序简介。
2、设计程序sy3_1.m,用函数conv实现线性卷积,用circonv实现圆周卷积。
并计算(a)序列g1=[1 2 3 4 5]和g2=[ 2 2 0 1 1]的线性卷积g1*g2、圆周卷积g15g2;(b)序列x1=[1 3 5 7 9 11 13 15 17]和x2=[1 -2 3 -2 1]的线性卷积g1*g2、圆周卷积g15g2。
观察线性卷积和圆周卷积是否相同?3、设计一个能代表线性卷积的圆周卷积程序sy3_2.m,并用上一步中(a)、(b)两种情况下的序列验证本程序的正确性。
4、设计子程序overlapsav.m采用重叠保留法计算一个很长的序列与一个很短的序列卷积。
编写主程序sy3_3.m,对x(n)=[1,2,3,…,10],h(n)=[1,0,-1]取N=6调用overlapsav和fftfilt进行分段卷积,比较其结果。
5、设计利用傅里叶变换FFT计算线性卷积的程序sy3_4.m,用x1=[1 3 5 7 911 13 15 17];x2=[1 -2 3 -2 1]进行试验,并用conv得到的结果比较。
实验结果及分析:sy3_1.m圆周卷积函数circonv(circonv.m)function y=circonv(g1,g2)g1=[1 2 3 4 5];g2=[2 2 0 1 1];L1=length(g1);L2=length(g2);if L1~=L2;error('sequences of unequal lengths'),endy=zeros(1,L1);g2tr=[g2(1) g2(L2:-1:2)];for k=1:L1;sh=cirshift(g2tr,1-k);h=g1.*sh;y(k)=sum(h);end圆周位移函数circshift(circshift.m)function y=circshift(g,m)% circularly shiftingif abs(m)>length(g)m=rem(m,length(g));endif m<0m=m+length(g);endy=[g(m+1:length(g)) g(1:m)];1.序列g1,g2线性卷积g1=[1 2 3 4 5]; g2=[2 2 0 1 1]; y=conv(g1,g2)y = 2 6 10 15 21 15 7 9 52.序列g1,g2圆周卷积g1=[1 2 3 4 5]; g2=[2 2 0 1 1]; ycir=circonv(g1,g2)ycir =17 13 19 20 213.序列x1,x2线性卷积x1=[1 3 5 7 9 11 13 15 17]; x2=[1 -2 3 -2 1]; z=conv(x1,x2)z =1 1 2 4 5 7 9 11 13 -4 34 -19 17 4.序列x1,x2圆周卷积g1=[1 3 5 7 9 11 13 15 17]; g2=[1 -2 3 -2 1]; ycir=circonv(g1,g2)ycir =17 13 19 20 21sy3_2.m 用圆周卷积代替线性卷积g1e=[g1 zeros(1,length(g2)-1)]; g2e=[g2 zeros(1,length(g1)-1)]; ylin=circonv(g1e,g2e)ylin =17 13 19 20 21重叠保留法函数overlapsav(overlapsav.m)function [y]=overlapsav(x,h,N)Lx=length(x);M=length(h);M1=M-1;L=N-M1;h=[h,zeros(1,N-M)];x=[zeros(1,M1),x,zeros(1,N-1)];K=floor((Lx+M1-1)/(L))+1;Y=zeros(K+1,N);for k=0:K-1xk=x(K*L+1:k*L+N);Y(k+1,:)=circonv(xk,h);endY=Y(:,M:N)';y=(Y(:))';sy3_3.m 重叠相加法分段卷积n=0:9;x=n+1;h=[1,0,-1]N=6;y2=fftfilt(h,x)sy3_4.m 快速傅里叶变换FFT计算线性卷积g1=[1,3,5,7,9,11,13,15,17];g2=[1,-2,3,-2,1];Ng=length(g1)+length(g2)-1;gg1=[g1 zeros(1,Ng-length(g1))];gg2=[g2 zeros(1,Ng-length(g2))];Gg1=fft(gg1);Gg2=fft(gg2);yc=real(ifft(Gg1.*Gg2))yc =Columns 1 through 101.0000 1.00002.0000 4.0000 5.0000 7.0000 9.0000 11.0000 13.0000 -4.0000Columns 11 through 1334.0000 -19.0000 17.0000思考题在什么情况下圆周卷积代表线性卷积?答:圆周卷积与线性卷积之间的关系:当有限长序列x(n)和h(n)的长度分别为N1和N2,取N>=max(N1,N2),当N>=N1+N2-1,则线性卷积与圆周卷积相同。