数字信号实验报告

实验二  DFT在卷积计算中的应用

一、实验目的:

学习MATLAB计算信号DFT;学习利用MATLAB由DFT计算线性卷积。

二、实验原理:

在MATLAB信号处理工具箱中,函数dftmtx(n)用来产生N*N的DFT矩阵DN。另外MATLAB提供了4个内部函数用于计算DFT和IDFT。分别为:fft(x),fft(x,n),ifft(x),ifft(x,n)。

fft(x):计算M点的DFT,M是序列X的长度;

fft(x,n):计算N点的DFT,若M>N,则截断,反之则补0;

ifft(x),ifft(x,n):分别为以上两种运算的逆运算;

Fftfilt:函数基于重叠相加法的原理,可实现长短序列的线性卷积,其格式为:y=fftfilt(h,x,n),h为短序列,x长序列,n为DFT点数。

三、实验内容:

1.分别计算16点序列的16点和32点DFT,绘出幅度谱图形。

2.已知x[k]=2k+1,,h[k]={1,3,2,4};试分别用重叠相加法和直接求卷积法求两序列的卷积,并绘出幅度谱图形。

四、实验结果:

1.

n1=0:15;

x=cos(15*pi/16*n);

X1=fft(x,16);

n2=0:31;

X2=fft(x,32);

mag1=abs(X1);

mag2=abs(X2);

subplot(2,1,1);stem(n1,mag1);title('取样16点的DFT');

subplot(2,1,2);stem(n2,mag2);title('取样32点的DFT')

2.

k=0:18;

x=2*k+1;

h=[1 3 2 4];

n=16;

y=fftfilt(h,x,n);

z=conv(h,x);

mag1=abs(y);mag2=abs(z);

subplot(2,1,1);stem(mag1);title('重叠相加法');

subplot(2,1,2);stem(mag2);title('直接求卷积法');

实验三  快速Fourier变换(FFT)及其应用

一、实验目的

加深对离散信号的DFT的理解及其FFT算法的运用。

二、实验原理:

N点序列的DFT和IDFT变换定义式如下:

利用旋转因子的周期性,可以得到快速算法(FFT)。

在Matlab中,可以用函数X=fft(x,N)和x=ifft(X,N)计算N点序列的DFT正、反变换。

三、实验要求

利用Matlab编程完成下列序列的FFT,绘出相应图形。并与理论计算相比较,说明实验结果的原因。

四、实验内容:

1、高斯序列

?

2、衰减正弦序列

? ? ?

3、三角波序列

?


4、反三角序列

?     ?

五、实验结果:

1.高斯序列

n=0:15;

p=8;

q=2;

x=exp(-1*(n-p).^2/q); 

close all;

y=fft(x);

subplot(2,1,1);

stem(y); title('高斯序列');

X=abs(fft(x));

subplot(2,1,2);

stem(X);title('高斯序列幅度谱');

2.衰减正弦序列

n=0:15;

a=0.1;

f=0.065;

x=exp(-a*n).*sin(2*pi*f*n);

close all;

subplot(2,1,1);

stem(x); title('衰减正弦序列');

subplot(2,1,2);

stem(abs(fft(x))); title('衰减正弦序列幅度谱');

3.三角序列

for n=1:4

x(n)=n;

end

for n=5:8

x(n)=9-n;

end

close all;

subplot(2,1,1);

stem(x);

title('三角波序列')

y=fft(x,n);

Y=abs(y);

subplot(2,1,2);

stem(Y);

title('傅里叶变换后的三角波')

4.反三角序列

for n=1:4

x(n)=5-n;

end

for n=5:8

x(n)=n-4;

end

close all;

subplot(2,1,1);

stem(x);

title('反三角波序列')

y=fft(x,n);

Y=abs(y);

subplot(2,1,2);

stem(Y);

title('傅里叶变换后的反三角波')

实验四  IIR滤波器的设计

一、模拟滤波器的设计

(1)滤波器的原型设计

[z,p,k]=besslap(n)

H(s)的表达式

(2)滤波器阶数的选择

除能求模拟阶数,也能求数字的阶数

[n,Wn]=buttord(Wp,Ws.Rp,Rs)(数字)

[n,Wn]=buttord(Wp,Ws.Rp,Rs,’s’)(模拟)

(3)模拟频率的变换

[bt,at]=lp2lp(b,a,wo)

二、模拟到数字的映射

(1)双线性变换法

[zd,pd,kd]=bilinear(z,p,k,fs)

[numd,dend]=bilinear(num,den,fs)

(2)冲激响应不变法

[bz,az]=impinvar(b,a,fs)

三、直接设计

[b,a]=butter(n,wn)

[b,a]=butter(n,wn,’ftype’)

[b,a]=butter(n,wn,’s’)

[b,a]=butter(n,wn,’ftype’,’s’)

另外:

Freqz(B,A,N,FS)

一.实验目的

1.了解工程上两种最常用的变换方法:脉冲响应不变法和双线性变换法。

2.掌握双线性变换法设计IIR滤波器的原理及具体设计方法,熟悉用双线性设计法设计低通、带通和高通IIR数字滤波器的计算机程序。

3.观察用双线性变换法设计的滤波器的频域特性,并与脉冲响应不变法相比较,了解双线性变换法的特点。

4.熟悉用双线性变换法设计数字Butterworth和Chebyshev 滤波器的全过程。

二.实验原理

从模拟滤波器设计IIR数字滤波器具有四种方法:微分-差分变换法、脉冲响应不变法、双线性变换法、z平面变换法。工程上常用的是其中的两种:脉冲响应不变法、双线性变换法。脉冲响应不变法需要经历如下基本步骤:由已知系统传输函数H(S)计算系统冲激响应h(t);对h(t)等间隔采样得到h(n)=h(nT);由h(n)获得数字滤波器的系统响应H(Z)。这种方法非常直观,其算法宗旨是保证所设计的IIR滤波器的脉冲响应和模拟滤波器的脉冲响应在采样点上完全一致。而双线性变换法的设计准则是使数字滤波器的频率响应与参考模拟滤波器的频率响应相似。

脉冲响应不变法一个重要的特点是频率坐标的变换是线性的(),其确定是有频谱的周期延拓效应,存在频谱混叠的现象。为了克服脉冲响应不变法可能产生的频谱混叠,提出了双线性变换法,它依靠双线性变换式:

, 其中

建立其S平面和Z平面的单值映射关系,数字域频率和模拟域频率的关系是:

        

由上面的关系式可知,当时,终止在折叠频率处,整个轴单值的对应于单位圆的一周。因此双线性变换法不同于脉冲响应不变法,不存在频谱混叠的问题。从式(3-1)还可以看出,两者的频率不是线性关系。这种非线性关系使得通带截至频率、过渡带的边缘频率的相对位置都发生了非线性畸变。这种频率的畸变可以通过预畸变来校正。用双线性变换法设计数字滤波器时,一般总是先将数字滤波器的个临界频率经过频率预畸变,求得相应参考模拟滤波器的个临界频率,然后设计参考模拟滤波器的传递函数,最后通过双线性变换式求得数字滤波器的传递函数。这样通过双线性变换,正好将这些频率点映射到我们所需要的位置上。参考模拟滤波器的设计,可以按照一般模拟滤波器设计的方法,利用已经成熟的一整套计算公式和大量的归一化设计表格和曲线。这些公式、表格主要是用于归一化低通原型的。通过原型变换,可以完成实际的低通、带通和高通滤波器的设计。在用双线性变换法设计滤波器的过程中,我们也可以通过原型变换,直接求得归一化参考模拟滤波器原型参数,从而使得设计更加简化。综上所述,以低通数字滤波器设计为例,可以将双线性变换法设计数字滤波器的步骤归纳如下:

(1)确定数字滤波器的性能指标。这些指标包括:通带、阻带临界频率;通带内的最大衰减;阻带内的最小衰减;采样周期T。

(2)确定相应的数字频率,

(3)计算经过频率预畸变的相应参考模拟低通原型的频率,

(4)计算低通原型阶数N;计算3dB归一化频率,从而求得低通原型的传递函数

(5)用表(3-1)中所列变换公式,代入,求得数字滤波器的传世函数

(6)分析滤波器频域特性,检查其指标是否满足要求。

1ButterWorth 模拟和数字滤波器

(1)butterd 函数:ButterWorth 滤波器阶数的选择。

调用格式:[n,Wn]=buttord(Wp,Ws,Rp,Rs),在给定滤波器性能的情况下(通带临界频率Wp、阻带临界频率Ws、通带内最大衰减Rp 和阻带内最小衰减Rs),计算ButterWorth 滤波器的阶数n 和截止频率Wn。相同参数条件下的模拟滤波器则调用格式为:

[n,Wn]=buttord(Wp,Ws,Rp,Rs,’s’)

(2)butter 函数:ButterWorth 滤波器设计。

调用格式:[b,a]=butter(n,Wn),根据阶数n 和截止频率Wn 计算ButterWorth 滤波器分子分母系数(b 为分子系数的矢量形式,a 为分母系数的矢量形式)。相同参数条件下的模拟滤波器则调用格式为:[b,a]=butter(n,Wn,’s’)

例1:采样频率为1Hz,通带临界频率fp =0.2Hz,通带内衰减小于1dB(αp=1);阻带临界频率fs=0.3Hz,阻带内衰减大于25dB(αs=25)。设计一个数字滤波器满足以上参数。

[n,Wn]=buttord(0.2,0.3,1,25);

[b,a]=butter(n,Wn); freqz(b,a,512,1);

2Chebyshev 模拟和数字滤波器

(1)cheb1ord 函数:Chebyshev型滤波器阶数计算。

调用格式:[n,Wn]=cheb1ord(Wp,Ws,Rp,Rs),在给定滤波器性能的情况下(通带临界频率Wp、阻带临界频率Ws、通带内波纹Rp 和阻带内衰减Rs),选择ChebyshevⅠ型滤波器的最小阶n 和截止频率Wn。

(2)cheby1 函数:ChebyshevⅠ型滤波器设计。

调用格式:[b,a]= cheby1(n,Rp,Wn),根据阶数n、通带内波纹Rp 和截止频率Wn 计算ButterWorth 滤波器分子分母系数(b 为分子系数的矢量形式,a 为分母系数的矢量形式)。

注:ChebyshevⅡ型滤波器所用函数和Ⅰ型类似,分别是cheb2ord、cheby2。

实现上例中的滤波器:

 [n,Wn]=cheb1ord(0.2,0.3,1,25); [b,a]=cheby1(n,1,Wn);

freqz(b,a,512,1);

3、滤波器设计

(1)脉冲响应不变法设计数字ButterWorth 滤波器

调用格式:[bz,az]=impinvar(b,a,Fs),再给定模拟滤波器参数b,a 和取样频率Fs 的前提下,计算数字滤波器的参数。两者的冲激响应不变,即模拟滤波器的冲激响应按Fs 取样后等同于数字滤波器的冲激响应。

(2)利用双线性变换法设计数字ButterWorth 滤波器

调用格式:[bz,az]=bilinear[b,a,Fs],根据给定的分子b、分母系数a 和取样频率Fs,根据双线性变换将模拟滤波器变换成离散滤波器,具有分子系数向量bz 和分母系数向量az。模拟域的butter 函数说明与数字域的函数说明相同[b,a]=butter(n,Wn,’s’)可以得到模拟域的Butterworth滤波器。

三.实验内容

采样频率为1Hz,通带临界频率fp =0.2Hz,通带内衰减小于1dB(αp=1);阻带临界频率fs=0.3Hz,阻带内衰减大于25dB(αs=25)。设计一个数字滤波器满足以上参数。

四、实验结果:

1、Butter函数:

[n,Wn]=buttord(0.2,0.3,1,25);

[b,a]=butter(n,Wn);

freqz(b,a,512,1);

2、双线性变换法:

[n,Wn]=buttord(0.2,0.3,1,25,'s');

[b,a]=butter(n,Wn,'s');

[bz,az]=impinvar(b,a,1);

freqz(bz,az,512,1);

3、冲击响应不变法:

[n,Wn]=buttord(0.2,0.3,1,25,'s');

[b,a]=butter(n,Wn,'s');                                                            

[bz,az]=bilinear(b,a,1);

freqz(bz,az,512,1);

                                                                                                                                                            

 

第二篇:MATLAB数字信号实验报告

数字信号处理实验报告

 

    级:  09050741  

    名:  杨建国    

    号: 0905074128 

  实验一  频谱分析与采样定理

一、实验目的

1、观察模拟信号经理想采样后的频谱变化关系。

2、验证采样定理,观察欠采样时产生的频谱混叠现象。

3、加深对DFT算法原理和基本性质的理解。

4、熟悉FFT算法原理和FFT的应用。

二、实验原理

    根据采样定理,对给定信号确定采样频率,观察信号的频谱。

三、实验内容和步骤

1)实验内容

      在给定信号为:

1.x(t)=cos(100*π*at)

2.x(t)=exp(-at)

3.x(t)=exp(-at)cos(100*π*at)

其中a为实验者的学号,记录上述各信号的频谱,表明采样条件,分析比较上述信号频谱的区别。

2)实验步骤

1.根据采样理论、DFT的定义、性质和用DFT作谱分析的有关内容。

2.根据FFT算法原理和基本思想。

3.确定实验给定信号的采样频率,编制对采样后信号进行频谱分析的程序

四、实验过程

%实验一:频谱分析与采样定理

T=0.0001;               %采样间隔T=0.0001

F=1/T;                 %采样频率为F=1/T

L=0.02;                %记录长度L=0.02 

N=L/T;                

t=0:T:L;            

a=28;

f1=0:F/N:F;

f2=-F/2:F/N:F/2;

%%%%%%%%%%%%%%%%%%%%%%%%%

x1=cos(100*pi*a*t);

y1=T*abs(fft(x1));  % 求复数实部与虚部的平方和的算术平方根  

y11=fftshift(y1);

figure(1),

subplot(3,1,1),plot(t,x1);title('正弦信号');

subplot(3,1,2),stem(y1);title('正弦信号频谱');

subplot(3,1,3),plot(f2,y11);title('正弦信号频谱');

%%%%%%%%%%%%%%%%%%%%%

x2=exp(-a*t);

y2=T*abs(fft(x2));

y21=fftshift(y2);

figure(2),

subplot(3,1,1),stem(t,x2);title('指数信号');

subplot(3,1,2),stem(f1,y2);title('指数信号频谱');

subplot(3,1,3),plot(f2,y21);title('指数信号频谱');

%%%%%%%%%%%%%%%%%%%%%

x3=x1.*x2;

y3=T*abs(fft(x3));

y31=fftshift(y3);

figure(3),

subplot(3,1,1),stem(t,x3);title('两信号相乘');

subplot(3,1,2),stem(f1,y3);title('两信号相乘频谱');

subplot(3,1,3),plot(f2,y31);title('两信号相乘频谱');

正弦信号频谱:

指数信号频谱:

两信号相乘频谱:

五、实验结果及分析

    奈奎斯特抽样定理为抽样频率必须大于或等于信号频谱最高频率的2倍,即。取采样间隔T=0.0001s,满足奈奎斯特抽样定理。实验中正弦信号的频率分量为,指数信号的频率分量为0,两信号相乘后频率分量为1400Hz,所以三幅频谱图中相应出现1400Hz、0Hz、1400Hz的频率分量,与实际计算结果一致。频谱图中显示区域的最高频率即为在该采样频率下的最高可分析频率,等于信号采样频率的一半,即

六、实验体会

    通过实验一我熟悉了matlab的使用,加深了对奈奎斯特定理的理解。

实验二  卷积定理

一、实验目的

通过本实验,验证卷积定理,掌握利用DFT和FFT计算线性卷积的方法。

二、 实验原理

时域圆周卷积在频域上相当于两序列DFT的相乘,因而可以采用FFT的算法来计算圆周卷积,当满足时,线性卷积等于圆周卷积,因此可利用FFT计算线性卷积。

三、实验内容和步骤

1、给定离散信号,用图解法求出两者的线性卷积和圆周卷积;

2、编写程序计算线性卷积和圆周卷积;

3、比较不同列长时的圆周卷积与线性卷积的结果,分析原因。

四、实验过程

%实验二:卷积定理

x=[3 0 2 1 3];  %原始序列

y=[3 0 2 1 3];

%直接计算线性卷积

z=conv(x,y);

figure(1),subplot(311),stem(x);axis([1 9 0 4]);

subplot(312),stem(y);axis([1 9 0 4]);

subplot(313),stem(z);axis([1 9 0 30]);

%利用FFT计算

N=10;%N=10时

x1=[x zeros(1,N-length(x))];

y1=[y zeros(1,N-length(y))];

X1=fft(x1);

Y1=fft(y1);

Z1=X1.*Y1;

z1=ifft(Z1);

figure(2),

subplot(321),stem(x1);

subplot(322),stem(real(X1));

subplot(323),stem(y1);

subplot(324),stem(real(X1));

subplot(325),stem(z1);

subplot(326),stem(real(Z1));

N=5;%N=5时

x2=[x zeros(1,N-length(x))];

y2=[y zeros(1,N-length(y))];

X2=fft(x2);

Y2=fft(y2);

Z2=X2.*Y2;

z2=ifft(Z2);

figure(3),

subplot(321),stem(x2);

subplot(322),stem(real(X2));

subplot(323),stem(y2);

subplot(324),stem(real(X2));

subplot(325),stem(z2);

subplot(326),stem(real(Z2));

直接计算线性卷积:

利用圆周卷积计算,取N=10:

利用圆周卷积计算,取N=5:

五、实验结果及分析

时域圆周卷积在频域上相当于两序列DFT的相乘,因而可以采用FFT的算法

来计算圆周卷积,当满足NM+L—1时,线性卷积等于圆周卷积,因此可利用FFT计算线性卷积。可见,对于直接线性卷积结果,对于圆周卷积,取N=10时,所得结果与直接线性卷积计算结果一致,而当N=5<M+L—1,得出 ,与直接线性卷积计算结果不同,产生混叠。

六、实验体会

    通过实验二我学会了用matlab实现卷积算法的方法,要用FFT计算线性卷积,序列长度必须满足NM+L—1。

实验三  IIR滤波器设计实验

一、实验目的

1.学习模拟-数字变换滤波器的设计方法

2.掌握双线性变换滤波器的设计方法

3.掌握实现数字滤波的具体方法。

二、实验要求 

1、用双线性变换法设计一个巴特沃斯低通IIR数字滤波器。设计指标参数为:在通带内频率低于0.2π时,最大衰减小于1dB;在阻带内[0.3π, π]频率区间上,最小衰减大于15dB.

2、0.02π为采样间隔,打印出数字滤波器在频率区间[0, π/2]上的频率响应特性曲线。

3、用所设计的滤波器对实际心电图信号采样序列进行仿真滤波处理,观察总结滤波作用与效果

附:心电图采样序列x(n)

人体心电图信号在测量过程中往往受到工业高频干扰,所以必须经过低通滤波处理后,才能作为判断心脏功能的有用信息。下面给出一实际心电图信号采样序列样本x(n),其中存在高频干扰。在实验中以x(n)作为输入序列,滤除其中的干扰成分。

{x(n)}={-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,6,4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0}

三、实验过程

%先设计模拟滤波器,再转化数字滤波器   

wp=0.2*pi;

ws=0.3*pi;

Rp=1;

Rs=15;

Ts=0.02*pi;

Fs=1/Ts;

wp1=2/Ts*tan(wp/2);%将模拟指标转变成数字指标

ws1=2/Ts*tan(ws/2);

[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');  %选择滤波器的最小阶数  

[Z,P,K]=buttap(N);%创建butterworth模拟滤波器

[Bap,Aap]=zp2tf(Z,P,K);

[b,a]=lp2lp(Bap,Aap,Wn);   

[bz,az]=bilinear(b,a,Fs);%用双线性变换法实现模拟滤波器到数字滤波器的转换 

[H,W]=freqz(bz,az,50);%绘制频率响应曲线

L=length(W)/2+1;

figure(1),plot(W(1:L)/pi,abs(H(1:L))),grid,xlabel('角频率(\pi)'),ylabel('频率响应幅度');

x=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,...

-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,6,4,0,0,0,0,0,...

-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0];

y=filter(bz,az,x);            %滤波

figure(2),

subplot(2,1,1),plot(x),title('原始信号');

subplot(2,1,2),plot(y),title('滤波后信号');

数字滤波器在频率区间[0, π/2]上的频率响应特性曲线:

对实际心电图信号采样序列进行仿真滤波处理:

四、实验结果及分析

用双线性变换法设计巴特沃斯低通IIR数字滤波器,先由已知条件求的数字截止角频率,转化为模拟截止角频率,有指标得出

继而求出与N与所设计的系统函数,以用双线性变换法将其转换为数字滤波器。

五、实验体会

    通过此实验进一步掌握了用双线性变换法设计巴特沃斯低通IIR数字滤波器的方法,双线性变换法不可能产生频率混叠现象。

实验四  FIR滤波器设计实验

一、实验目的 

1.熟悉滤波器的计算机仿真方法

2.掌握用窗函数法设计FIR数字滤波器的原理和方法。

3.了解各种窗函数对滤波特性的影响

二、实验要求 

1.设计一线性相位FIR低通滤波器滤波器,给定抽样频率为Ωs=3π×104(rad/s),通带截止频率为Ωp=3π×103(rad/s),阻带起始频率为Ωst=6π×103(rad/s),阻带衰减比大于50dB。

2.选择不同的窗函数设计该滤波器,观察其频率响应函数有什么变化

三、实验过程

wp1=3000*pi;                  %通带截止角频率  

ws1=6000*pi;                  %阻带截止角频率

wsam1=30000*pi;               %采样角频率

fsam1=wsam1/(2*pi);           %采样截止频率

passrad=(wp1+ws1)/2/fsam1;    %截止频率

A=3.3;

wdelta=(ws1-wp1)/fsam1;

N=ceil(2*pi/wdelta*A);         %滤波器的阶数

w1=hamming(N+1);               %用汉明窗实现

L=N/2+1;

n=1:1:N+1;

hd=sin(passrad*(n-L))./(pi*(n-L));            %理想低通滤波器

if(N==ceil(N/2)*2)

   hd(L)=passrad/pi;

end

h1=hd.*w1';                            %加窗

[mag1,rad]=freqz(h1);

plot(rad,20*log10(abs(mag1)));         %频谱显示

四、实验结果及分析

    阻带衰减比大于50dB,所以选择汉明窗能满足要求。汉明窗时域定义式为,设计所要求的过渡带宽,而汉明窗的带宽为,求出有限长序列长度N,且关于偶对称。理想线性低通滤波器单位抽样响应为,则所设计的滤波器单位抽样响应为

五、实验体会

通过实验掌握用窗函数法设计FIR数字滤波器的原理和方法,深刻理解了各窗函数的特性。

相关推荐