数字信号处理实验报告Word格式文档下载.docx
《数字信号处理实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验报告Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
![数字信号处理实验报告Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-12/12/6f3b3f8e-c03e-4c4b-a522-811660090476/6f3b3f8e-c03e-4c4b-a522-8116600904761.gif)
Fs是抽样频率,若Fs=1,频率轴给出归一化频率;
whole指定计算的频率范围是从0~Fs,缺省时是从0~Fs/2。
(三)、作业
给定系统
,编程并绘出系统的单位阶跃响应y(n),频率响应
。
给出实验报告。
程序及结果如下:
clear;
x=ones(100);
%x(n)=1,n=1~100;
t=1:
100;
%t用于后面的绘图;
b=[0,0,-0.2];
%形成向量b;
a=[1,0,0.8];
%形成向量a;
y=filter(b,a,x);
subplot(311)
plot(t,x,'
r.'
t,y,'
k-'
);
gridon;
%图上;
ylabel('
x(n)andy(n)'
)
xlabel('
1'
clearall;
[H,w]=freqz(b,a,256,1);
Hr=abs(H);
%绝对值(幅值);
Hphase=angle(H);
%相位角;
Hphase=unwrap(Hphase);
%解卷绕
subplot(312)
plot(w,Hr);
AmplitudeFreq.Res.'
subplot(313)
plot(w,Hphase);
PhaseFreq.Res.'
实验二、快速傅里叶变换
1、通过本实验进一步加深对快速傅里叶变换的理解。
2、会熟练运用fft,ifft,czt实现线性调频z变换。
(二)、实验内容
1、快速傅里叶变换(fft)
调用格式为X=fft(x)或X=fft(x,N)
对前者,若x的长度是2的整次幂,则按该长度实现x的快速变换,否则,实现的是非2的整次幂的变换;
对后者,N应为2的整次幂,若x得长度小于N,则补零,若超过N,则舍弃N以后的数据。
ifft的调用格式与之相同。
附:
fftshift函数
fftshift函数就是一个交换函数:
交换规则如下:
如:
x=[12345678];
y=fftshift(x);
theny=[56781234];
其在fft运算里的物理意义:
把0频(低频)周围的频谱搬移到中频范围(采样频率的一半),只是形象化的展示FT变换后的低频成分(正负频率)。
其实质是把Fs/2的右边频谱平移到Fs/2的左边,把低频平移到Fs/2的右边,各图象间距不变。
2、线性调频Z变换(CZT)
CZT可用来计算单位圆上任一段曲线上的Z变换,做DFT时输入的点数N和输出的点数可以不相等,从而达到频域“细化”的目的。
CZT在单位圆上的Z变换就是傅里叶变换。
其调用格式为:
X=czt(x,M,W,A)
式中x是待变换的时域信号x(n),其长度设为N,M是变换的长度,W确定变换的步长,A确定变换的起点。
若M=N,A=1,则CZT变成DFT。
CZT应用举例:
设x(n)由三个实正弦组成,频率分别是8Hz,9Hz,10Hz,抽样频率为60Hz,时域取256点,作CZT变换、IFFT变换和FFT变换,观察波形,更改参数,得出不同参数下的CZT变换波形。
N=256;
%2的8次幂,进行8级蝶形运算
f1=8;
f2=9;
f3=10;
fs=60;
a1=1;
a2=6;
a3=8;
stepf=fs/N;
n=0:
N-1;
t=2*pi*n/fs;
n1=0:
stepf:
fs/2-stepf;
x=a1*sin(f1*t)+a2*sin(f2*t)+a3*sin(f3*t);
M=N;
W=exp(-j*2*pi/M);
%三个不同频率的正弦信号;
subplot(511);
plot(n,x);
one'
%应用FFT求频谱;
X=fft(x);
%快速傅里叶变换;
subplot(512);
plot(n1,abs(X(1:
N/2)));
ylabel('
two'
y=ifft(X);
%快速傅里叶逆变化
subplot(513);
plot(real(y(1:
N)));
three'
%A=1时的czt变换
A=1;
Y1=czt(x,M,W,A);
subplot(514)
plot(n1,abs(Y1(1:
four'
%详细构造A后的czt
M=60;
f0=7.0;
DELf=0.05;
A=exp(j*2*pi*f0/fs);
W=exp(-j*2*pi*DELf/fs);
Y3=czt(x,M,W,A);
n2=f0:
DELf:
f0+(M-1)*DELf;
subplot(515);
plot(n2,abs(Y3));
five'
实验三、无限冲击响应数字滤波器设计
1、要求掌握IIR数字滤波器的设计原理、设计方法和设计步骤;
2、能根据给定的滤波器指标进行滤波器设计;
3、掌握数字巴特沃斯滤波器、数字切比雪夫滤波器的设计原理和步骤;
IIR数字滤波器的设计有多种方法,如频率变换法、数字域直接设计以及计算辅助设计等。
下面只介绍频率变换设计法。
首先考虑由模拟低通滤波器到数字低通滤波器的转换,其基本的设计过程如下:
1、将数字滤波器的技术指标转换为模拟滤波器的技术指标;
2、设计模拟滤波器G(S);
3、将G(S)转换成数字滤波器H(Z)
在低通滤波器的设计基础上,可以得到数字高通、带通、带阻滤波器的设计流程,以高通数字滤波器的设计为例:
1、将数字高通滤波器
的技术指标
,通过
转变为模拟高通
,作归一化处理后得
;
2、利用频率变换关系
,将模拟高通
的技术指标转换为归一化的低通滤波器G(p)的技术指标,并有p=
;
3、设计模拟低通滤波器G(p);
4、将G(p)转换为模拟高通滤波器的转移函数
p=
5、将
转换成数字高通滤波器的转移函数
,s=(z-1)/(z+1)。
以上5个步骤同样适用于数字带通、数字带阻滤波器的设计。
只是在步骤2,3,4中频率转换的方法不同。
设计一个数字带通滤波器,参数自定。
fp=[150350];
fs=[100500];
%wp=[.19*pi0.21*pi];
ws=[.198*pi0.202*pi];
Fs=1000;
rp=3;
rs=20;
wp=fp*2*pi/Fs;
ws=fs*2*pi/Fs;
%
%Firstlytofinishfrequencyprewarping;
wap=2*Fs*tan(wp./2)
was=2*Fs*tan(ws./2);
[n,wn]=buttord(wap,was,rp,rs,'
s'
%Note:
'
!
[z,p,k]=buttap(n);
[b,a]=zp2tf(z,p,k)
bw=wap
(2)-wap
(1)
w0=sqrt(wap
(1)*wap
(2))
[bt,at]=lp2bP(b,a,w0,bw)
[bz1,az1]=bilinear(bt,at,Fs)
[h,w]=freqz(bz1,az1,256,Fs);
figure
(1)
plot(w,20*log10(abs(h)))
实验四、有限冲击响应数字滤波器设计
1、了解无限冲击响应数字滤波器设计和有限冲击响应数字滤波器
设计各自的特点,比较两者的优缺点。
2、掌握用窗函数法设计FIR数字滤波器的原理和方法。
3、熟悉线性相位FIR数字滤波器特性。
4、了解各种窗函数对滤波特性的影响。
(二)、实验原理及内容
窗口法的基本思想:
根据给定的滤波器技术指标,选择滤波器长度N和窗函数
,使其具有最窄宽度的主瓣和最小的旁瓣。
1、窗口法的设计步骤:
(1)、给定理想频响函数
(2)、根据指标选择窗函数。
确定窗函数类型的主要依据是过度带宽和阻带最小衰耗的指标;
(3)、由
求
,加窗得
(4)、检验。
由
,求
是否在误差容限之内。
2、常用MATLAB文件介绍
fir1.m
本文件采用窗函数法设计FIR数字滤波器,其调用格式为
(1)b=fir1(N,Wn)
(2)b=fir1(N,Wn,‘high’)
(3)b=fir1(N,Wn,‘stop’)
式中N为滤波器的阶数,因此滤波器的长度为N+1;
Wn是通带截止频率,其值在0~1之间,1对应抽样频率的一半;
b是设计好的滤波器系数h(n).对格式1,若Wn是一标量,则可用来设计低通滤波器;
若Wn是1*2的向量,则用来设计带通滤波器;
若Wn是1*L的向量,则可用来设计L带通滤波器,这时,格式1要改为
b=fir1(N,Wn,‘DC-1’)或b=fir1(N,Wn,‘DC-0’)
前者保证第一个带为通带,后者保证第一个带为阻带。
格式2用来设计高通滤波器,3用来设计带阻滤波器。
在上述所有格式中,若不指定窗函数的类型,fir1自动选择汉明窗。
三)、作业
设计一FIR低通滤波器,所希望的频率响应
在0≤
≤0.3pi之间,在0.3pi≤
≤pi之间为0,分别取N=10,20,40,自行选择窗函数,观察其幅频响应的特性。
程序和图:
N1=10;
N2=20;
N3=40;
b1=fir1(N1,0.3,boxcar(N1+1));
b2=fir1(N1,0.3,hamming(N1+1));
b3=fir1(N2,0.3,boxcar(N2+1))
b4=fir1(N2,0.3,hamming(N2+1));
b5=fir1(N3,0.3,boxcar(N3+1));
b6=fir1(N3,0.3,boxcar(N3+1));
M=256;
h1=freqz(b1,1,M);
h2=freqz(b2,1,M);
t=0:
10;
subplot(321)
stem(t,b2,'
.'
holdon;
plot(t,zeros(1,11));
grid;
f=0:
0.5/M:
0.5-0.5/M;
subplot(322)
plot(f,abs(h1),'
b-'
f,abs(h2),'
g-'
h3=freqz(b3,1,M);
h4=freqz(b4,1,M);
20;
subplot(323)
stem(t,b4,'
plot(t,zeros(1,21));
subplot(324)
plot(f,abs(h3),'
f,abs(h4),'
h5=freqz(b5,1,M);
h6=freqz(b6,1,M);
40;
subplot(325)
stem(t,b6,'
plot(t,zeros(1,41));
subplot(326)
plot(f,abs(h5),'
f,abs(h6),'