实验一离散傅里叶变换的性质.docx
《实验一离散傅里叶变换的性质.docx》由会员分享,可在线阅读,更多相关《实验一离散傅里叶变换的性质.docx(28页珍藏版)》请在冰豆网上搜索。
实验一离散傅里叶变换的性质
数字信号处理
实验报告
实验日期:
2011.12.11
姓名:
公飞杜志广
学号:
090220107090220106
哈尔滨工业大学(威海)
实验一离散傅里叶变换的性质
一、实验目的
1、掌握离散傅里叶变换的性质,包括线性特性、时移特性、频移特性、对称性和循环卷积等性质;
2、通过编程验证傅里叶变换的性质,加强对傅里叶变换性质的认识。
二、实验原理和方法
1.线性特性
2.时移特性
3.频移特性
4.对称性
设由x(n)开拓成的周期序列为
则
偶序列
奇序列
将
和
截取主周期,分别得
则
x(n)序列的实部和虚部的离散立叶变换
5.循环卷积
有限长序列线性卷积与循环卷积的关系
X1(n)和x2(n)的线性卷积:
将X1(n)和x2(n)开拓成以N为周期的周期序列
则它们的周期卷积为
X1(n)和x2(n)周期开拓后的周期卷积等于他们的线性卷积的的周期开拓。
三、实验内容和步骤
任取长度为N=8的随机实序列x1[n],x2[n],例如x1[n]=[13536839],x2[n]=[24367902],和长度为N=8的随机复序列x3[n],x4[n],例如x3[n]=[1+2j3+4j5+3j3+4j6+j8+2j3+3j9+2j],x4[n]=[4+1j6+4j4+3j3+4j7+j8+3j3+4j1+2j],采用MATLAB编程验证傅里叶变换的如下性质
1.线性特性
a.给出序列x1[n]的傅里叶变换X1[k],并画出其幅度谱和相位谱
b.给出序列x2[n]的傅里叶变换X2[k],并画出其幅度谱和相位谱
c.给出序列Z=2*X1[k]+6*x2[k],并与序列2*x3[n]+6*x4[n]的傅里叶变换比较
程序:
x1=[13536839];
x2=[24367902];
x3=[1+2j3+4j5+3j3+4j6+1j8+2j3+3j9+2j];
x4=[4+1j6+4j4+3j3+4j7+1j8+3j3+4j1+2j];
X1=fft(x1,8);
X2=fft(x2,8);
x_axis=[0:
1:
7];
figure
(1);
subplot(2,2,1);
stem(x_axis,abs(X1));
title('X1的幅度谱');
subplot(2,2,2);
stem(x_axis,angle(X1));
title('X1的相位谱');
subplot(2,2,3);
stem(x_axis,abs(X2),'r*');
title('X2的幅度谱');
subplot(2,2,4);
stem(x_axis,angle(X2),'r*');
title('X2的相位谱');
sum1=2*x1+6*x2;
SUM1=fft(sum1,8);%序列之和的FFT
sum2=2*x3+6*x4;
SUM2=fft(sum2,8);
figure
(2);
subplot(2,1,1);
stem(x_axis,abs(SUM1));holdon;
stem(x_axis,abs(SUM2),'r*');
title('幅度谱');
subplot(2,1,2);
stem(x_axis,angle(SUM1));holdon;
stem(x_axis,angle(SUM2),'r*');
title('相位谱');
2.时移特性
给出序列x1[n]右移3位后的傅里叶变换的幅度谱和相位谱,并和原始序列的幅度谱和相位谱相比较
程序:
x1=[13536839];
N=length(x1);
n=0:
N-1;
X1=fft(x1);
xc=circshift(x1,[1,3]);%xc[n]=x1[n-3];
Xc=fft(xc);
figure,
subplot(3,2,1),stem(n,x1,'r*');title('原序列');
subplot(3,2,3),stem(n,abs(X1),'r*');title('原幅度谱');
subplot(3,2,5),stem(n,atan2(real(X1),imag(X1)),'r*');title('原相位谱');
subplot(3,2,2),stem(n,xc,'r*');title('变化序列');
subplot(3,2,4),stem(n,abs(Xc),'r*');title('变化幅度谱');
subplot(3,2,6),stem(n,atan2(real(Xc),imag(Xc)),'r*');title('变化相位谱');
3.对称性
(1)利用x1[n]构造共轭对称序列和共轭反对称序列,讨论如下问题
(a)画出共轭对称序列的傅里叶变换的幅度谱和相位谱
(b)画出共轭对称序列的傅里叶变换的实部和虚部
(c)画出该共轭反对称序列的傅里叶变换的幅度谱和相位谱
(d)画出该共轭反对称序列的傅里叶变换的实部和虚部
程序:
clearall;
x1=[13536839];
N=length(x1);
x2
(1)=x1
(1);
fori=2:
N
x2(i)=x1(N+2-i);
end
xe=(x1+conj(x2))/2;
xo=(x1-conj(x2))/2;
n=0:
N-1;
Xo=fft(xo);
Ro=real(Xo);
Io=imag(Xo);
Mo=abs(Xo);
phaseo=atan2(Io,Ro);%angle(X);
figure
(1),
subplot(2,2,1),stem(n,Ro,'r*');title('共轭反对称序列的频谱实部');
subplot(2,2,2),stem(n,Io,'r*');title('共轭反对称序列的频谱虚部');
subplot(2,2,3),stem(n,Mo,'r*');title('共轭反对称序列的幅度谱');
subplot(2,2,4),stem(n,phaseo,'r*');title('共轭反对称序列的相位谱');
Xe=fft(xe);
Re=real(Xe);
Ie=imag(Xe);
Me=abs(Xe);
phasee=atan2(Ie,Re);%angle(X);
figure
(2),
subplot(2,2,1),stem(n,Re,'r*');title('共轭对称序列的频谱实部');
subplot(2,2,2),stem(n,Ie,'r*');title('共轭对称序列的频谱虚部');
subplot(2,2,3),stem(n,Me,'r*');title('共轭对称序列的幅度谱');
subplot(2,2,4),stem(n,phasee,'r*');title('共轭对称序列的相位谱');
(2)当x(n)为复序列时,推导傅里叶变换公式,利用x3[n]构造共轭对称序列和共轭反对称序列,讨论如下问题
a.画出该共轭对称序列的傅里叶变换的幅度谱和相位谱
b画出该共轭对称序列的傅里叶变换的实部和虚部
c画出该共轭反对称序列的傅里叶变换的幅度谱和相位谱
d画出该共轭反对称序列的傅里叶变换的实部和虚部
clearall;
x3=[1+2j3+4j5+3j3+4j6+1j8+2j3+3j9+2j];
N=length(x3);
n=0:
N-1;
X3=fft(x3);
R3=real(X3);
I3=imag(X3);
xe=ifft(R3);
xo=ifft(j*I3);
Xo=fft(xo);
Ro=real(Xo);
Io=imag(Xo);
Mo=abs(Xo);
phaseo=atan2(Io,Ro);%angle(X);
figure
(1),
subplot(2,2,1),stem(n,Ro,'r*');title('共轭反对称序列的频谱实部');
subplot(2,2,2),stem(n,Io,'r*');title('共轭反对称序列的频谱虚部');
subplot(2,2,3),stem(n,Mo,'r*');title('共轭反对称序列的幅度谱');
subplot(2,2,4),stem(n,phaseo,'r*');title('共轭反对称序列的相位谱');
Xe=fft(xe);
Re=real(Xe);
Ie=imag(Xe);
Me=abs(Xe);
phasee=atan2(Ie,Re);%angle(X);
figure
(2),
subplot(2,2,1),stem(n,Re,'r*');title('共轭对称序列的频谱实部');
subplot(2,2,2),stem(n,Ie,'r*');title('共轭对称序列的频谱虚部');
subplot(2,2,3),stem(n,Me,'r*');title('共轭对称序列的幅度谱');
subplot(2,2,4),stem(n,phasee,'r*');title('共轭对称序列的相位谱');
(3)总结共轭对称和共轭反对称的实数序列和复数序列的傅里叶变换性质
4.循环卷积
(1)计算序列x1[n]和x2[n]的循环卷积y[n],计算x1[n]和x2[n]的傅里叶变换X1[k]和X2[k],Y[k]=X1[k]*X2[k],求Y[k]的反傅里叶变换y2[n],比较y[n]与y2[n].
程序:
%卷积
x1=[13536839];
x2=[24367902];
M=length(x1);
N=length(x2);
x10=[x1,zeros(1,N-1)];
x20=[x2,zeros(1,M-1)];
X10=fft(x10);
X20=fft(x20);
Y=X10.*X20;
y=ifft(Y);
y1=conv(x1,x2);
m=0:
length(x1)-1;
n=0:
length(x2)-1;
ny=0:
length(y)-1;
figure
(1),
subplot(2,2,1),stem(m,x1,'r*');title('序列1');
subplot(2,2,2),stem(ny,y1,'r*');title('直接卷积y[n]');
subplot(2,2,3),stem(n,x2,'r*');title('序列2');
subplot(2,2,4),stem(ny,y,'r*');title('傅里叶卷积y2[n]');
5.补零
用MATLAB计算如下N点序列的M点DFT:
(1)取N=8,M=8
(2)取N=8,M=16
(3)取N=8,M=32
根据实验结果,分析延长序列的离散傅里叶变换的特点。
程序:
%补零
clearall;
N=8;
M1=8;
M2=16;
M3=24;
x1=ones(1,N);
x2=[x1,zeros(1,M1)];
x3=[x1,zeros(1,M2)];
x4=[x1,zeros(1,M3)];
X1=fft(x1);
X2=fft(x2);
X3=fft(x3);
X4=fft(x4);
RX1=real(X1);
IX1=imag(X1);
MX1=abs(X1);
phaseX1=atan2(IX1,RX1);%angle(X);
RX2=real(X2);
IX2=imag(X2);
MX2=abs(X2);
phaseX2=atan2(IX2,RX2);%angle(X);
RX3=real(X3);
IX3=imag(X3);
MX3=abs(X3);
phaseX3=atan2(IX3,RX3);%angle(X);
RX4=real(X4);
IX4=imag(X4);
MX4=abs(X4);
phaseX4=atan2(IX4,RX4);%angle(X);
m=0:
length(x1)-1;
n=0:
length(x2)-1;
k=0:
length(x3)-1;
l=0:
length(x4)-1;
figure
(1),
subplot(2,4,1),stem(m,MX1,'r*');title('原序列的幅度谱');
subplot(2,4,2),stem(n,MX2,'r*');title('补N个零后序列的幅度谱');
subplot(2,4,3),stem(k,MX3,'r*');title('补2N个零后序列的幅度谱');
subplot(2,4,4),stem(l,MX4,'r*');title('补4N个零后序列的幅度谱');
subplot(2,4,5),stem(m,phaseX1,'r*');title('原序列的相位谱');
subplot(2,4,6),stem(n,phaseX2,'r*');title('补N个零后序列的相位谱');
subplot(2,4,7),stem(k,phaseX3,'r*');title('补2N个零后序列的相位谱');
subplot(2,4,8),stem(l,phaseX4,'r*');title('补4N个零后序列的相位谱');
实验二IIR滤波器设计
一、实验目的
1、掌握冲激响应不变法和双线性变换法设计IIR滤波器的原理及具体设计方法,熟悉用双线性设计法设计低通IIR数字滤波器的计算机程序;
2、熟悉模拟Butterworth滤波器的设计,掌握冲激响应不变法和双线性变换法设计数字IIR滤波器的方法。
二、实验原理和方法
IIR滤波器设计的过程可以首先设计模拟滤波器,然后采用冲激响应不变法和双线性变换法设计IIR数字滤波器。
Butterworth滤波器
,其中
为3dB截止频率,N为滤波器阶次,均待定。
模拟滤波器的设计步骤:
首先根据数字滤波器设计要求计算模拟滤波器指标;其次要求出滤波器的阶次N和
三、实验内容
1.采样频率为1Hz,设计一个Butterworth低通数字滤波器,其中通带临界频率
,通带内衰减小于1dB(
),阻带临界频率
,阻带内衰减大于25dB(
)。
求这个数字滤波器的传递函数H(z),输出它的幅频特性曲线。
利用冲激响应不变法和双线性变换法实现该滤波器,并将结果进行比较。
程序:
%Butterworth低通滤波器设计
Wp=2*pi*0.2;Ws=2*pi*0.3;
Rp=1;Rs=25;
%设计滤波器
[N,Wn]=buttord(Wp,Ws,Rp,Rs,'s');
[z,p,k]=buttap(N)
[B,A]=butter(N,Wn,'s')
[bz,az]=impinvar(B,A)
%画图Butterworth低通滤波器
f1=linspace(0,Wp,5);
f2=linspace(Wp,Ws,15);
f3=linspace(Ws,2*pi*10,30);
h1=20*log10(abs(freqs(B,A,f1)));
h2=20*log10(abs(freqs(B,A,f2)));
h3=20*log10(abs(freqs(B,A,f3)));
plot([f1f2f3]/(2*pi),[h1,h2,h3]);
grid;
xlabel('FrequencyinHz');
ylabel('GainindB');
结果:
N=
9
Wn=
1.3693
z=
[]
p=
-0.1736+0.9848i
-0.1736-0.9848i
-0.5000+0.8660i
-0.5000-0.8660i
-0.7660+0.6428i
-0.7660-0.6428i
-0.9397+0.3420i
-0.9397-0.3420i
-1.0000
k=
1.0000
B=
Columns1through8
00000000
Columns9through10
016.9199
A=
Columns1through8
1.00007.885331.089080.0039147.5921202.0932205.3890149.6408
Columns9through10
71.160516.9199
幅度谱:
%Butterworth低通滤波器设计
Wp=2*tan(0.2*pi);Ws=2*tan(0.15*pi);
Rp=1;Rs=25;Fs=1;
%设计滤波器
[N,Wn]=buttord(Wp,Ws,Rp,Rs,'s')
[z,p,k]=buttap(N)
[B,A]=butter(N,Wn,'s')
[numd,dend]=bilinear(B,A,Fs)
%画图Butterworth低通滤波器
f1=linspace(0,Wp,5);
f2=linspace(Wp,Ws,15);
f3=linspace(Ws,2*pi*10,30);
h1=20*log10(abs(freqs(B,A,f1)));
h2=20*log10(abs(freqs(B,A,f2)));
h3=20*log10(abs(freqs(B,A,f3)));
plot([f1f2f3]/(2*pi),[h1,h2,h3]);
grid;
xlabel('FrequencyinHz');
ylabel('GainindB');
结果:
N=
11
Wn=
1.3236
z=
[]
p=
-0.1423+0.9898i
-0.1423-0.9898i
-0.4154+0.9096i
-0.4154-0.9096i
-0.6549+0.7557i
-0.6549-0.7557i
-0.8413+0.5406i
-0.8413-0.5406i
-0.9595+0.2817i
-0.9595-0.2817i
-1.0000
k=
1.0000
B=
Columns1through7
0000000
Columns8through12
000021.8508
A=
Columns1through7
1.00009.300843.2523132.2326294.4862500.7404662.7998
Columns8through12
682.9268537.2631307.8911115.997121.8508
numd=
Columns1through7
0.00010.00140.00690.02060.04120.05760.0576
Columns8through12
0.04120.02060.00690.00140.0001
dend=
Columns1through7
1.0000-2.80334.8599-5.55844.6931-2.95241.4091
Columns8through12
-0.50250.1309-0.02350.0026-0.0001
实验三FIR滤波器设计
一、实验目的
1、熟悉FIR滤波器设计的基本方法;
2、掌握窗函数法设计FIR滤波器的原理和方法;
3、熟悉线性相位FIR滤波器的幅频特性和相位特性;
4、了解不同窗函数对滤波器性能的响应。
二、实验原理和方法
三、实验内容
1.用窗函数法设计一个长度N=8的线性相位FIR滤波器。
其理想的幅频特性为
分别用矩形窗、Hanning窗、Hamming窗、Blackman窗设计该滤波器,并比较设计结果;
如果N=15,重复这一设计,观察幅频特性和相位特性的变化,注意长度N变化对结果的影响。
程序:
clc,clearall,closeall;
N_array=[815];
Point_array=['b','r'];
forI=1:
length(N_array)
N=N_array(I);
rect_window=ones(1,N);
hanning_window=hanning(N);
hamming_window=hanning(N);
blackman_window=blackman(N);
H_rect=freqz(rect_window,1,512);
H_hann=freqz(hanning_window,1,512);
H_hamm=freqz(hamming_window,1,512);
H_black=freqz(blackman_window,1,512);
freq_norm=[0:
511]/512;%归一化的频率轴
subplot(4,2,1);
plot(freq_norm,20*log10(abs(H_rect)/max(abs(H_rect))),Point_array(I));holdon;
title('矩形窗幅度谱');
xlabel('归一化频率w/pi');ylabel('幅度(dB)');
subplot(4,2,2);
plot(freq_norm,angle(H_rect),Point_array(I));holdon;
title('矩形窗相位谱');
xlabel('归一化频率w/pi');ylabel('相位');
subplot(4,2,3);
plot(freq_norm,20*log10(abs(H_hann)/max(abs(H_hann))),Point_array(I));holdon;
title('Hanning窗幅度谱');
xlabel('归一化频率w/pi');ylabel('幅度(dB)');
subplot(4,2