实验一 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 0
0 0 0
0 0 0
2)单位矩阵
>> B=eye(3)
B =
1 0 0
0 1 0
0 0 1
3)全1矩阵
>> C=ones(3)
C =
1 1 1
1 1 1
1 1 1
4)sy1_1.m
N=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('条状图形');
思考问题
(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 MATLAB
3、在命令窗口提示键入quit or exit
4、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(n2π/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 9 11 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'),
end
y=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 shifting
if abs(m)>length(g)
m=rem(m,length(g));
end
if m<0
m=m+length(g);
end
y=[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 5
2.序列g1,g2圆周卷积
g1=[1 2 3 4 5]; g2=[2 2 0 1 1]; ycir=circonv(g1,g2)
ycir =17 13 19 20 21
3.序列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 21
sy3_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-1
xk=x(K*L+1:k*L+N);
Y(k+1,:)=circonv(xk,h);
end
Y=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 10
1.0000 1.0000 2.0000 4.0000 5.0000 7.0000 9.0000 11.0000 13.0000 -4.0000
Columns 11 through 13
34.0000 -19.0000 17.0000
思考题
在什么情况下圆周卷积代表线性卷积?
答:圆周卷积与线性卷积之间的关系:当有限长序列x(n)和h(n)的长度分别为N1和N2,取N>=max(N1,N2),当N>=N1+N2-1,则线性卷积与圆周卷积相同。
实验四 用FFT做谱分析
试验类别:设计性试验
实验目的:
(1) 加深对DFT算法原理及基本性质的理解;
(2) 熟悉FFT算法原理及子程序的应用;
(3) 学习FFT对连续信号和时域离散信号作谱分析的方法。了解可能出现的分析误差和原因,以便在实际中正确应用FFT。
实验内容:
(1) 编写由DFT定义直接写成的子程序mydft.m以实现对x(n)的FT;
(2) 编写基2DIT FFT 算法子程序myditfft.m以实现x(n)的FFT;
(3) 设有一模拟信号x(t)=20sin60pit+5cos120pit,取抽样周期T=0.001s,N=1024点进行抽样,得到序列x(n)。编制一个主程序sy4_1.m,分别调用子程序mydft.m,系统子程序fft,子程序myditfft.m对x(n)做傅里叶变换,查看结果是否相同;
(4) MATCH_
word
word文档格式规范word作业纸小票打印word模板word简历模板免费word简历
_1713530153843_0三种方法所耗费的时间,比较他们的运行速度;
(5) 绘出x(t)及其振幅谱,相位谱;
(6) 设计利用快速傅里叶变换FFT计算线性卷积的程序;
实验结果及分析:
Mydft.m
function y=mydft(x);
N=length(x);
n=0:N-1;
k=n;
nk=n'*k;
WN=exp(-j*2*pi/N);
WNnk=WN.^nk;
Xk=x*WNnk;
y=Xk;
mydifft.m:
function y=mydifft(x)
m=nextpow2(x);
N=2^m;
if length(x)
> b=[1 0 0 0 16.0625 0 0 0 1];
>> a=[1 0 0 0 0 0 0 0 0 ];
>> [sos,g]=tf2sos(b,a)
sos =1.0000 2.8284 4.0000 1.0000 0 0
1.0000 -2.8284 4.0000 1.0000 0 0
1.0000 0.7071 0.2500 1.0000 0 0
1.0000 -0.7071 0.2500 1.0000 0 0
直接形式信号流图
Z-4
16.0625
y(n)
线性相位形式信号流图
x(n)
Z-4
Z-4
16.0625
y(n)
级联形式信号流图
y(n)
x(n)
-2.8284
-0.7071
0.7071
2.8284
z-1
z-1
z-1
z-1
z-1
4.0
0.25
0.25
4.0
z-1
z-1
z-1
Sy6_2.m
1.单位冲击响应、零极点图绘制
b=[1 0 0 0 16.0625 0 0 0 1]; a=[1 0 0 0 0 0 0 0 0 ];
w=[0:1:500]*pi/500; x2=1;
x1=1+16.0625*exp(-4*j*w)+exp(-8*j*w); x=x1./x2;
magx=abs(x); angx=angle(x).*180/pi;
subplot(2,2,1); impz(b,a,15); title('冲击响应');
subplot(2,2,3); zplane(b,a); title('零极点图');
subplot(2,2,2); plot(w/pi,magx); title('幅度部分'); ylabel('振幅');
subplot(2,2,4); plot(w/pi,angx); title('相位部分');
xlabel('以pi为单位的频率'); ylabel('相位');
2.频率响应
>> b=[1 0 0 0 16.0625 0 0 0 1];
>>a=[1 0 0 0 0 0 0 0 0 ];
>> freqz(b,a,'whole')
简要回答思考问题
FIR滤波器的结构有哪几种形式?
答:直接型、级联型、线性相位型、频率采样型。
实验七 双线性设计法设计 IIR数字设计滤波器
设计类别:设计性试验
实验目的:
(1) 熟悉用双线性变换法设计IIR熟悉滤波器的原理和方法;
(2) 掌握数字录波器设计的计算机仿真方法;
(3) 观察用所设计的滤波器对一个复合信号的激励作用,获得数字滤波的感性认识。
实验内容和步骤:
1) 用双线性变换法设计巴特沃斯IIR数字低通滤波器。设计指标为:通带内频率低于0.2pi时,最大衰减小于1dm;在阻带[0.3pi,pi]频率区间上,最小衰减大于15dm。设计程序名为sy6_1a.m。
2) 在0.02Pi为采样区间,绘出数字滤波器在频率区间(0,pi/2)上的幅频响应特性曲线。
3) 编写sy6_2a.m,考虑频率预畸修正再次重新设计。比较两次结果
4) 用所设计的滤波器对由三个正弦波分量(频率分别为5,20,和30赫兹)构成的一个复合信号采样序列进行仿真滤波处理,并分别绘出滤波前后的波形图,观察
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
滤波作用与效果。编写试验程序名为sy6_3f.m。
实验原理:
简述双线性变换法设计IIR数字滤波器的原理
实验结果及分析:
通带内频率低于0.2*PI,最大衰减小于1DB
通带内频率低于0.3*PI~PI,最大衰减小于15DB
思考题
说明双线性变换法设计IIR数字滤波器的优点?
答:双线性变换法优点:克服多值映射得关系,可以消除频率的混叠。
实验八 用窗函数法设计FIR数字滤波器
实验类别:设计性试验
实验目的:
1) 掌握用窗函数法设计FIR数字滤波器的原理和方法。
2) 熟悉线性相关相位FIR数字滤波器特性。
3) 了解各种窗对滤波器特性的影响。
实验内容:
1) 复习用窗函数法设计FIR数字滤波器的内容。
2) 熟悉产生矩阵窗,汉宁窗,三角形窗,布莱克曼窗和凯瑟-贝塞尔窗的窗函数子程序机器调用方法。
3) 编写Matlab程序sy7_2.m用窗函数法设计低通数字FIR滤波器,滤波器指标为:
。选择哈明窗。确定冲激函数响应,并画出滤波器的频率响应。
4) 编写Matlab程序sy7_2.m用窗函数法设计低通数字FIR滤波器。滤波器指标为:
低阻带:
低通带:
高通带:
高阻带:
选用Blackman窗。确定冲激响应,并画出滤波器的频率响应。
5) 编写程序sy7_3.m用所设计的滤波器对又三个正弦波分量(频率分别为6,25,和48赫兹)构成的一个复合信号采样序列进行仿真滤波处理,并分别绘出滤波前后的波形图,观察总结滤波作用与效果。
实验结果及分析:
fdatool
FIR
窗函数法设计FIR滤波器的主要特点:
滤波器目前常用的设计方法有窗函数法和频率采样法,窗函数法是从时域进行设计,而频率采样法是从频域进行设计。窗函数法由于简单、物理意义清晰,因而得到了较为广泛的应用。
对比滤波前后的信号波形,说明滤波器的滤波过程和作用:
窗函数法设计的基本思想是:首先根据技术指标要求,选取合适的阶数 N 和窗函数的类型 w(n),使其幅频特性逼近理想滤波器幅频特性。其次,因为理想滤波器的 hd(n)是无限长的,所以需要对 hd(n) 进行截断,数学上称这种方法为窗函数法。 简而言之,用窗函数法设计FIR滤波器是在时域进行的,先用傅里叶变换求出理想滤波器单位抽样相应hd(n),然后加时间窗w(n)对其进行截断,以求得FIR 滤波器的单位抽样响应h(n)。
数字信号处理实验
学院:物理与信息科学学院
班级:11级电信一班
姓名:窦世霞
学号:20111060105