数字信号处理实验三

数字信号处理实验三
数字信号处理实验三

实验三 离散付里叶变换(DFT )

一、实验目的:

1. 掌握离散付里叶级数 2. 掌握DFT 变换。 3. 掌握DFT 特性。

4. 掌握利用DFT 计算线性卷积。 5. 掌握快速付里叶变换(FFT)。

二、实验原理:

1.离散付里叶级数(DFS ) )(~n x 为周期序列,其频率为基本频率(N /2π

)的倍数(或谐波)。其离散付叶级

数(DFS )为:;∑

-=-±==

1

2,,1,0,)(~)(~N n kn

N

j

k e

n x k X π

IDFS 为:∑

-==

1

2)(~

1)(~N k kn

N

j

e

k X N

n x π

2.离散付里叶变换(DFT )

)(n x 为长度N 的有限长序列,其DFT 为:21

1()()N j

kn

N

k x n X k e

N

π--==

IDFT 为:21

()(),0,1,N j

kn

N

n X k x n e

k π-==

=±∑

3.DFT 的特性:

(1) 线性性:)]([)]([)]()([2121n x bDFT n x aDFT n bx n ax DFT +=+

(2) 循环折叠(圆周对称)性:??

?

-≤≤-==-1

1)

(0)

0())((N n n N x n x n x N

(3) 共轭性: N k X n x DFT ))(()]([*

*-=

(4) 实序列的对称性(圆周共轭对称性):N k X k X ))(()(*

-=

(5) 序列的圆周移位:N m n x m n x ))(()(~

-=-

(6) 频域中的圆周移位:)())(()]([|ln

k R l k X n x W DFT N N N

-=-

(7) 时域循环卷积:)()()]()([2121k X k X n x n x DFT =? (8) 频域循环卷积(乘法性):)()(1)]()([2121k X k X N

n x n x DFT ?=

(9) 帕塞瓦尔(Parseval )定理:∑

-=-==

=

1

2

1

2

)

(1)(N k N n x k X N

n x E

4.用DFT 计算线性卷积:

设)(1n x 为1N 点序列,)(2n x 为2N 点序列,)(3n x 为)(1n x 和)(2n x 的线性卷积,其为121-+N N 点序列,)(4n x 为)(1n x 和)(2n x 的圆卷积,其长度为

N ,当121-+=N N N 时,)()(43n x n x =。实际中,采用分段卷积法,即重

叠保留法和重叠相加法。需要对数据流进行分块处理,这时直接采用DFT 计算线性卷积会产生一些问题,而应该将)(n x 通过重复前M-1个取样进行分块,这样可得到正确结果。

5.快速付里叶变换(FFT ):

掌握基2-时域抽取FFT(DIT-FFT)和基2-频域抽取FFT(DIF-FFT)。MATLAB 提供fft 函数来计算x 的DFT 。fft 函数是用机器语言写的,采用混合基法,其调用形式为:),(N x fft X =。如N 为2的幂,则得到高速的基2-FFT 算法;若N 不是2的乘方,则将N 分解成质数,得到较慢的混合基FFT 算法;最后,若N 为质数,则fft 函数采用的是原始的DFT 算法。

三、实验步骤:

1.离散付里叶级数(DFS )

(1)自已动手:编写实现离散付里叶级数和逆离散付里叶级数的函数。

(2)已知周期性序列如下所示:}3,2,1,0,3,2,1,0,3,2,1,0{)(~

=n x 求其离散付里叶级数。

2.离散付里叶变换(DFT )

(1) 编写实现DFT 和IDFT 的函数。

(2) 已知)(n x 是一个六点序列,如下所示:

??

?≤≤=e ls e

n n x 0

501

)(

要求计算该序列的离散时间的付里叶变换和离散付里叶变换,并绘出它们的幅度和相

位。

(3) 序列后面增加零可以提高信号频谱的密度,比较高密度频谱与高分辨率频谱之间

的区别。考虑如下序列:()n n n x ππ53.0cos(47.0cos()(+= 求其有限各样本的频谱,并要求:

(a ) 当取 x(n)(100≤≤n )时,确定出的离散付里叶变换。

(b ) 将(a )的)(n x 补零加长到1000≤≤n ,确定出离散付里叶变换。 (c ) 当取x(n)(5000≤≤n ),确定出的离散付里叶变换。

3.DFT 性质:

(1) 设n n x )8.0(10)(=,100≤≤n ,求15))6(()(-=n x n y (2) 设}4,5,2,1{)(},2,2,1{)(21==n x n x 试分别计算下列圆卷积。 (a )5),()()(21=?=N n x n x n y (b) 6),()()(21=?=N n x n x n y

4.利用DFT 计算线性卷积:

用重复法求解:1)(+=n n x ,90≤≤n ,{}1,0,1)(-=n h ,求其线卷积)(n y 。

5.快速付里叶变换(FFT )

(1)用MA TLAB 的fft()来求信号的DFT 的幅值谱。

已知模拟信号为)8cos(5)4sin(2)(t t t x ππ+=,以t=0.1n (n=0:N-1)进行取样,求N 点DFT 的幅值谱。

设N 分别为(1)N=45;(2)N=50;(3)N=55;(4)N=60

(2在上题的基础上,N=64,并在信号中加入噪声(正态)w(t)(用函数randn(1,N)) )(8.0)8cos(5)4sin(2)(t w t t t x ++=ππ

试比较有无噪声时的信号谱。并分析在信号的检测的意义上,这种噪声会不会影响信号的检测?

四、思考题

1.通过分析计算机中的wav 文件信号来进一步讨论数字信号处理中的信号分析方法。由于本题需要用户电脑具有麦克风和声卡,所以由同学们在课外完成。 (1) 先掌握几个要用到的函数:

[x,fs,bits]=waveread (‘filename’)

其功能是读取wav 文件的函数;其中x 表示一长串的数据,一般是两列(立体声);fs 是该wav 文件在采集时用的采样频率;bits 是指在进行A/D 转化时用的量化位长(一般是8bits 或16bits ). [d]=FFT (w,l)

是matlab 中快速付里叶变换函数的一种输入输出形式。其中w 是一列波形数据;

l是指示用多少点的FFT;d是频域输出.

Sound(w,fs,bits)

与waveread的参数一样,它将数列的数据通过声卡转化为声音。

(2)选择一个wav文件作为分析对象,可以用麦克风录一段用户自己的声音,也可选择计算机中.wav的文件,在此选择Windows系统中都有的ding.wav(在Windows\media目录中).

(3)编程求将此声音播放出并求出要处理的数据量的大小(答案为201911)。(4)分别画出单声道和双声道要处理的信号的波形图及信号频域的幅值(对信号求fft)。

(5)求出此信号的主频率。

(6)说明为何双声道能有一种从一侧耳朵穿过另一侧耳朵的感觉。

2.考虑一被噪声污染的信号,分析它所包含的频率分量,如一个由50Hz和120Hz正弦信号构成的信号,受零均值随机噪声的干扰,数据采样率为1000Hz.可通过fft函数来分析其信号频率成分。

3.混合信号成分分析。有一信号x由三种不同频率的正弦信号混合而成,通过得到信号的DFT,确定出信号的频率及其强度关系。

π

2

)

*

2

20

*

(t

pi

+

x+

t

t

t

sin(

*

2

*

*

)

)

sin(

45

2

cos(

5

*

*

30

)

4.信号在传输过程中,由于受信道或环境影响,在接收端得到的是噪声环境下的信号。我们利用FFT函数对这一信号进行傅里叶分析,从而确定信号的频率。

size

(t

)

randn

t

x+

2

t

(

2.1

(

));

sin(

)

*

*

2

50

5.天文学家记录了300年来太阳黑子的活动情况,我们对这组数据进行傅里叶分析,从而得出太阳黑子的活动周期。(其中记录的数据文件是sunspot.dat,在matlab 中已有).

实验三实验结果

1.离散付里叶级数(DFS )

(1) 自已动手:编写实现离散付里叶级数和逆离散付里叶级数的函数。 解:% dfs.m

function [Xk]=dfs(xn,N) n=0:N-1; k=0:N-1;

WN=exp(-j*2*pi/N); nk=n'*k; WNnk=WN.^nk; Xk=xn*WNnk; % Idfs.m

function [Xk]=idfs(xn,N) n=0:N-1; k=0:N-1;

WN=exp(-j*2*pi/N); nk=n'*k;

WNnk=WN.^(-nk); xn=(Xk*WNnk)/N;

(2) 已知周期性序列如下所示:

}3,2,1,0,3,2,1,0,3,2,1,0{)(~ ↑

=n x 求其离散付里叶级数。 xn=[0 1 2 3];

N=4;

xk=dfs(xn,N)

xk = 6.0000 -2.0000 + 2.0000i -2.0000 - 0.0000i -2.0000 - 2.0000I

2.离散付里叶变换(DFT )

(4) 编写实现DFT 和IDFT 的函数。 解:%dft.m

function [Xk]=dft(xn,N) n=0:N-1;

k=0:N-1;

WN=exp(-j*2*pi/N);

WNnk=WN.^nk; Xk=xn*WNnk;

%idft.m

function [Xk]=idft(xn,N) n=0:N-1; k=0:N-1;

WN=exp(-j*2*pi/N); nk=n'*k;

WNnk=WN.^(-nk); xn=Xk*WNnk;

(5) 已知)(n x 是一个六点序列,如下所示:

??

?≤≤=e ls e

n n x 0

501

)(

要求计算该序列的离散时间的付里叶变换和离散付里叶变换,并绘出它们的幅度和相位。 %计算DTFT n=0:5; x=ones(1,6); k=-200:200; w=(pi/100)*k;

X=x*(exp(-j*pi/100)).^(n'*k); magX=abs(X);

angX=angle(X)*180/pi; subplot(2,2,1) plot(w/pi,magX); axis([0 2 0 6]); grid

title('DTFT 幅度'); subplot(2,2,2); plot(w/pi,angX);

axis([0 2 -200 200]); grid

xlabel('以pi 为单位的频率'); title('DTFT 的相位'); %计算DFT N=6;

X=dft(x,N); magX=abs(X)

phaX=angle(X)*180/pi n1=1:1024;

x1=[x,zeros(1,1018)];

X1=dft(x1,N1);

magX1=abs(X1);

phaX1=angle(X1)*180/pi;

subplot(2,2,3)

stem(n,magX);

hold on

plot(6*n1/1024,magX1,'r--');

title('DFT幅度');

grid

hold off

subplot(2,2,4);

stem(n,phaX);

hold on

plot(6*n1/1024,phaX1,'r--');

title('DTFT相位');

grid

hold off

magX =

6.0000 0.0000 0.0000 0.0000 0.0000 0.0000 phaX =

0 -165.9638 -126.8699 -90.0000 -68.7495 -43.0908

(6) 序列后面增加零可以提高信号频谱的密度,比较高密度频谱与高分辨率频谱之间

的区别。考虑如下序列:()n n n x ππ53.0cos(47.0cos()(+=

求其有限各样本的频谱,并要求:

(a ) 当100≤≤n ,确定出的离散付里叶变换。(给序列进行补零加长至n=99) (b ) 当5000≤≤n ,确定出的离散付里叶变换。 解:(a )确定10点的DFT n=0:499;

x=cos(0.47*pi*n)+cos(0.53*pi*n); n1=0:9; y1=x(1:10); subplot(2,2,1); stem(n1,y1);

title('信号x(n) 0<=n<=9'); axis([0 10 -2.5 2.5]); text(10.2,-2.3,'n'); hold on;

plot([0 10],[0 0]); hold off; %进行DFT

Y1=dft(y1,10); magY1=abs(Y1(1:6)); k1=0:5;

w1=2*pi/10*k1; subplot(2,2,2); stem(w1/pi,magY1);

title('DTFT 幅度的样本'); xlabel('以pi 为单位的频率');

%将10点的DFT 补零加长,看谱线是否变细。 n2=0:99;

y2=[x(1:10), zeros(1,90)]; subplot(2,2,3); stem(n2,y2);

title('信号x(n),0<=n<9+90 zeros');

%进行DFT

Y2=dft(y2,100);

magY2=abs(Y2(1:51));

k2=0:50;

w2=2*pi/100*k2;

subplot(2,2,4);

stem(w2/pi,magY2);

title('DTFT幅度');

xlabel('以pi为单位的频率');

axis([0 1 0 9]);

从图看出此序列在π5.0

w处有一主频率,原始序列则没有这一频率,它只有主频为=

π

.0

w的两个频率,由于其点数不够,所以出现频谱混叠失真。给

=

53

47

.0

=

w和π

序列尾部补零,提供了更加细化的谱线。

(b)确定x(n)前500点的DFT

n=0:500-1;

x=cos(0.47*pi*n)+cos(0.53*pi*n);

subplot(2,1,1);

stem(n,x);

title('信号x(n) 0<=n<500');

%进行DFT

X=dft(x,500);

magX=abs(X(1:251));

k=0:250;

w=2*pi/100*k;

subplot(2,1,2);

plot(w/pi,magX);

title('DFT幅度');

xlabel('以pi为单位的频率');

axis([0 5 0 180]);

结果表明两个靠得很近的频率,这是高分辨率的频谱。从上面实验看出:

a. 给序列尾部添零,只能是得到更加光滑的频谱,但不能提供更多的信息。即得到高密度的频谱。

b.增加样本点则可以使频谱的信息量更大,即可得到高分辨频谱。

3.DFT 性质:

(1) 设n n x )8.0(10)(=,100≤≤n ,求15))6(()(-=n x n y

解:首先编循环移位函数:

%cirshftt.m

function y=cirshftt (x,m,N) if length(x)>N

error('N must be >=the length of x') end

x=[x zeros(1,N-length(x))];%序列补零加长 n=[0:1:N-1]; n=mod(n-m,N); y=x(n+1);

其中m 为序列x 的长度,N 为序列的循环移位的点数 主程序调用移位函数:

figure(1)

n=0:10;x=10*(0.8).^n;

y=cirshftt (x,6,15) %求循环移位 n=0:14;x=[x,zeros(1,4)];

subplot(2,1,1);stem(n,x);title( 'Original sequence' ) xlabel('n' );ylabel( 'x(n)');axis([-1,15,-1,11]) subplot(2,1,2);stem(n,y);

title('Circularly shifted sequence,N=15' ) xlabel('n' );ylabel( 'x((n-6) mod 15)' ); axis([-1,15,-1,11])

结果为:

y = 1.3422 1.0737 0 0 0 0 10.0000 8.0000 6.4000 5.1200 4.0960 3.2768 2.6214 2.0972 1.6777

(2) 设}4,5,2,1{)(},2,2,1{)(21==n x n x 试分别计算下列圆卷积。 (a )5),()()(21=?=N n x n x n y (b) 6),()()(21=?=N n x n x n y 解:先编循环卷积函数: %circonvt.m

function y=circonvt(x1,x2,N) if length(x1)>N

error('N must be >=the length of x1') end

if length(x2)>N

error('must be >=the length of x2') end

x1=[x1 zeros(1,N-length(x1))]; x2=[x2 zeros(1,N-length(x2))]; m=[0:1:N-1];

x2=x2(mod(-m,N)+1); H=zeros(N,N); for n=1:1:N

H(n,:)=cirshftt(x2,n-1,N); end y=x1*H';

求{}2,2,1)(1=n x ,{}4,5,2,1)(1=n x (1))()()(211n x n x n y ?=

N=5 (2))()()(212n x n x n y ?=

N=6

程序:

x1=[1,2,2];

x2=[1,2,5,4];

y1=circonvt(x1,x2,5) y2=circonvt(x1,x2,6)

结果为:

y1=9 4 11 18 18

y2=1 4 11 18 18 8

4.利用DFT 计算线性卷积:

用重复法求解:1)(+=n n x ,90≤≤n ,{}1,0,1)(-=n h ,求其线卷积)(n y 。 解:先编一个重叠保留法作分段卷积函数; %ovrlpsav.m

function [y]=ovrlpsav(x,h,N) Lenx=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((Lenx+M1-1)/(L)); Y=zeros(K+1,N); for k=0:K

xk=x(k*L+1:k*L+N);

Y(k+1,:)=circonvt(xk,h,N); end

Y=Y(:,M:N)'; y=(Y(:))';

再编主程序进行计算; n=0:9; x=n+1;

h=[1,0,-1]; N=6;

y=ovrlpsav(x,h,N) 结果:

y = 1 2 2 2 2 2 2 2 2 2 -9 -10

5.快速付里叶变换(FFT )

(1)用MA TLAB 的fft()来求信号的DFT 的幅值谱。

已知模拟信号为)8cos(5)4sin(2)(t t t x ππ+=,以t=0.01n(n=0:N-1)进行取样,求N 点DFT 的幅值谱。

设N 分别为(1)N=45;(2)N=50;(3)N=55;(4)N=60

N=45;

n=0:N-1;

t=0.01*n;

q=n*2*pi/N;

x=2*sin(4*pi*t)+5*cos(8*pi*t);

y=fft(x,N);

plot(q,abs(y))

title('FFT N=45')

%

subplot(2,2,2);

N=50;

n=0:N-1;

t=0.01*n;

q=n*2*pi/N;

x=2*sin(4*pi*t)+5*cos(8*pi*t);

y=fft(x,N);

plot(q,abs(y))

title('FFT N=50')

%

subplot(2,2,3);

N=55;

n=0:N-1;

t=0.01*n;

q=n*2*pi/N;

x=2*sin(4*pi*t)+5*cos(8*pi*t);

y=fft(x,N);

plot(q,abs(y))

title('FFT N=55')

%

subplot(2,2,4);

N=60;

n=0:N-1;

t=0.01*n;

q=n*2*pi/N;

x=2*sin(4*pi*t)+5*cos(8*pi*t);

y=fft(x,N);

plot(q,abs(y))

title('FFT N=60')

(2在上题的基础上,N=64,并在信号中加入噪声(正态)w(t)(用函数randn(1,N)) π

)

w

(t

t

t

+

x+

t

)

)

8.0

(

)

2

8

sin(

cos(

4

5

试比较有无噪声时的信号谱。并分析在信号的检测的意义上,这种噪声会不会影响信号的检测?

N=64;

n=0:N-1;

t=0.01*n;

q=n*2*pi/N;

x=2*sin(4*pi*t)+5*cos(8*pi*t);

y=fft(x,N);

plot(q,abs(y))

title('FFT N=64')

%

subplot(2,1,2);

N=64;

n=0:N-1;

t=0.01*n;

q=n*2*pi/N;

x=2*sin(4*pi*t)+5*cos(8*pi*t)+0.8*randn(1,N);

y=fft(x,N);

plot(q,abs(y))

title('FFT N=64(with noise)')

从下图中可以看出,在信号检测的意义上,这种噪声不会影响信号的检测。

四、思考题

1.通过分析计算机中的wav文件信号来进一步讨论数字信号处理中的信号分析方法。由于本题需要用户电脑具有麦克风和声卡,所以由同学们在课外完成。

(1)先掌握几个要用到的函数:

[x,fs,bits]=waveread(‘filename’)

其功能是读取wav文件的函数;其中x表示一长串的数据,一般是两列(立体声);fs是该wav文件在采集时用的采样频率;bits是指在进行A/D转化时用的量化位长(一般是8bits或16bits).

[d]=FFT(w,l)

是matlab中快速付里叶变换函数的一种输入输出形式。其中w是一列波形数据;l是指示用多少点的FFT;d是频域输出.

Sound(w,fs,bits)

与waveread的参数一样,它将数列的数据通过声卡转化为声音。

(2)选择一个wav文件作为分析对象,可以用麦克风录一段用户自己的声音,也可选择计算机中.wav的文件,在此选择Windows系统中都有的ding.wav(在盘符:\Windows\media目录中).

(3)编程求将此声音播放出并求出要处理的数据量的大小(答案为20191*2)。(4)分别画出单声道和双声道要处理的信号的波形图及信号频域的幅值(对信号求fft)。

(5)求出此信号的主频率。

(6)说明为何双声道能有一种从一侧耳朵穿过另一侧耳朵的感觉。

2.考虑一被噪声污染的信号,分析它所包含的频率分量,如一个由50Hz和120Hz正弦信号构成的信号,受零均值随机噪声的干扰,数据采样率为1000Hz.可通过fft函数来分析其信号频率成分。

2.混合信号成分分析。有一信号x由三种不同频率的正弦信号混合而成,通过得到信

号的DFT,确定出信号的频率及其强度关系。

3.

4.模拟信号的取样和重构

设t a e t x 1000)(-=,求其付里叶变换)(jw X z

解:dt e t X jw X jwt a z ?+∞

∞--=)()(

2

10000

1000)

1000

(

1002.0w dt

e

e

dt e

e

jwt

t

jwt

t

+=

+

=

-+∞

∞--??

严格就来,在MATLAB 中不使用SYMBOLIC 工具箱是不能分析模拟信号的,但当以充分小的时间间隔取样)(t x a 时,可产生平滑的图形,当包含足够的时间时,可显示出所有的模式,这样就可以近似地进行分析。

在此中设在510-精度下,)(t x a 为2000

=F 的带限信号,因此若

5

5

10

252000

2110

5--?=?<<

?=?t

这样就可得到)(t x a 的逼近序列)(m x G 程序:

%Analog Signal 模拟信号的重构

Dt=0.00005;t=-0.005:Dt:0.005; xa=exp(-1000*abs(t));

%continuous-time Fourier transform 连续时间的付里叶变换 Wmax=2*pi*2000; % 最大的角频率

K=500;k=0:1:K;W=k*Wmax/K; %某点的角频率

Xa=xa*exp(j*t'*W)*Dt;%某点的频率,其中t’为t 的转置矩阵 Xa=real(Xa);%幅频特性

W=[-fliplr(W),W(2:501)];%其中flipri 按左右方向翻转矩阵元素,使得W 以0为中心对称

Xa=[fliplr(Xa),Xa(2:501)];%使得Xa 以最大的Xa 为中心对称 figure(1)

subplot(2,1,1);plot(t*1000,xa,'-'); xlabel('t in msec.');ylabel('xa(t)')

gtext('Analog Signal') %用鼠标放置文本文件

subplot(2,1,2);plot(W/(2*pi*1000),Xa*1000,'r'); xlabel('Frequency in KHz');ylabel('Xa(jW)*1000') gtext('Continuous-time Fourier Transform')

自已动手:

以本题中的)(t x a 说明取样速率对频域特性的影响:

(1)取样频率Fs=5000Hz,绘出)(1jw X 曲线 (2)取样频率Fs=1000Hz,绘出)(2jw X 曲线

数字信号处理实验一

实验一 离散时间信号分析 班级 信息131班 学号 201312030103 姓名 陈娇 日期 一、实验目的 掌握两个序列的相加、相乘、移位、反褶、卷积等基本运算。 二、实验原理 1.序列的基本概念 离散时间信号在数学上可用时间序列)}({n x 来表示,其中)(n x 代表序列的第n 个数字,n 代表时间的序列,n 的取值范围为+∞<<∞-n 的整数,n 取其它值)(n x 没有意义。离散时间信号可以是由模拟信号通过采样得到,例如对模拟信号)(t x a 进行等间隔采样,采样间隔为T ,得到)}({nT x a 一个有序的数字序列就是离散时间信号,简称序列。 2.常用序列 常用序列有:单位脉冲序列(单位抽样)) (n δ、单位阶跃序列)(n u 、矩形序列)(n R N 、实指数序列、复指数序列、正弦型序列等。 3.序列的基本运算 序列的运算包括移位、反褶、和、积、标乘、累加、差分运算等。 4.序列的卷积运算 ∑∞ -∞==-= m n h n x m n h m x n y )(*)()()()( 上式的运算关系称为卷积运算,式中代表两个序列卷积运算。两个序列的卷积是一个序列与另一个序列反褶后逐次移位乘积之和,故称为离散卷积,也称两序列的线性卷积。其计算的过程包括以下4个步骤。 (1)反褶:先将)(n x 和)(n h 的变量n 换成m ,变成)(m x 和)(m h ,再将)(m h 以纵轴为对称轴反褶成)(m h -。

(2)移位:将)(m h -移位n ,得)(m n h -。当n 为正数时,右移n 位;当n 为负数时,左移n 位。 (3)相乘:将)(m n h -和)(m x 的对应点值相乘。 (4)求和:将以上所有对应点的乘积累加起来,即得)(n y 。 三、主要实验仪器及材料 微型计算机、Matlab6.5 教学版、TC 编程环境。 四、实验内容 (1)用Matlab 或C 语言编制两个序列的相加、相乘、移位、反褶、卷积等的程序; (2)画出两个序列运算以后的图形; (3)对结果进行分析; (4)完成实验报告。 五、实验结果 六、实验总结

《数字信号处理》课程研究性学习报告解读

《数字信号处理》课程研究性学习报告 指导教师薛健 时间2014.6

【目的】 (1) 掌握IIR 和FIR 数字滤波器的设计和应用; (2) 掌握多速率信号处理中的基本概念和方法 ; (3) 学会用Matlab 计算小波分解和重建。 (4)了解小波压缩和去噪的基本原理和方法。 【研讨题目】 一、 (1)播放音频信号 yourn.wav ,确定信号的抽样频率,计算信号的频谱,确定噪声信号的频率范围; (2)设计IIR 数字滤波器,滤除音频信号中的噪声。通过实验研究s P ,ΩΩ,s P ,A A 的选择对滤波效果及滤波器阶数的影响,给出滤波器指标选择的基本原则,确定你认为最合适的滤波器指标。 (3)设计FIR 数字滤波器,滤除音频信号中的噪声。与(2)中的IIR 数字滤波器,从滤波效果、幅度响应、相位响应、滤波器阶数等方面进行比较。 【设计步骤】 【仿真结果】

【结果分析】 由频谱知噪声频率大于3800Hz。FIR和IIR都可以实现滤波,但从听觉上讲,人对于听觉不如对图像(视觉)明感,没必要要求线性相位,因此,综合来看选IIR滤波器好一点,因为在同等要求下,IIR滤波器阶数可以做的很低而FIR滤波器阶数太高,自身线性相位的良好特性在此处用处不大。【自主学习内容】 MATLAB滤波器设计 【阅读文献】 老师课件,教材 【发现问题】(专题研讨或相关知识点学习中发现的问题): 过渡带的宽度会影响滤波器阶数N 【问题探究】 通过实验,但过渡带越宽时,N越小,滤波器阶数越低,过渡带越窄反之。这与理论相符合。 【仿真程序】 信号初步处理部分: [x1,Fs,bits] = wavread('yourn.wav'); sound(x1,Fs); y1=fft(x1,1024); f=Fs*(0:511)/1024; figure(1) plot(x1) title('原始语音信号时域图谱'); xlabel('time n'); ylabel('magnitude n'); figure(2) freqz(x1) title('频率响应图') figure(3) subplot(2,1,1); plot(abs(y1(1:512))) title('原始语音信号FFT频谱') subplot(2,1,2); plot(f,abs(y1(1:512))); title(‘原始语音信号频谱') xlabel('Hz'); ylabel('magnitude'); IIR: fp=2500;fs=3500; wp = 2*pi*fp/FS; ws = 2*pi*fs/FS; Rp=1; Rs=15;

数字信号处理实验

实验一: 系统及响应时域采样及频域采样 1. 实验目的 (1)掌握用卷积求系统响应及卷积定理的验证; (2)掌握连续信号经理想采样前后的频谱变化关系, 加深对时域采样定理的理解。 (3)掌握频域采样引起时域周期化概念, 加深对频域采样定理的理解。 (4) 掌握序列傅里叶变换的计算机实现方法, 利用序列的傅里叶变换对连续信号、离散信号及系统响应进行频域分析。 3. 实验内容及步骤 (1) 认真复习卷积定理、 时域采样和频域采样理论。 (2) 编制实验用主程序及相应子程序。 ①系统单位脉冲响应序列产生子程序。 有限长序列线性卷积子程序, 用于完成两个给定长度的序列的卷积。 可以直接调用MATLAB 语言中的卷积函数conv 。 conv 用于两个有限长度序列的卷积,它假定两个序列 都从n=0开始。调用格式如下: y=conv (x, h) ② 卷积定理的验证。 (3)时域采样定理的验证:信号产生子程序, 用于产生实验中要用到的下列信号序列: x a (t)=Ae -at sin(Ω0t)u(t) 进行采样, 可得到采样序列 x a (n)=x a (nT)=Ae -anT sin(Ω0nT)u(n), 0≤n<50 其中A 为幅度因子, a 为衰减因子, Ω0是模拟角频率, T 为采样间隔。 这些参数都要在实验过程中由键盘输入, 产生不同的x a (t)和x a (n)。 >> %1时域采样序列分析 A=400;a=200;w=200; n=0:50-1;fs=1000; xa=A*exp((-a)*n/fs).*sin(w*n/fs); k=-200:200;w=(pi/100)*k; Xk=fft(xa,length(k));magX=abs(Xk);angX=angle(Xk); subplot(2,1,1); stem(n,xa,'.');xlabel('n');ylabel('xa(n)'); title('信号的类型'); )()(10n R n h a =) 3()2(5.2)1(5.2)()(-+-+-+=n n n n n h b δδδδ1 ,,2,1,0,)()()(-==M k e H e X e Y k k k j j a j ωωω

数字信号处理实验一

一、实验目的 1. 通过本次实验回忆并熟悉MATLAB这个软件。 2. 通过本次实验学会如何利用MATLAB进行序列的简单运算。 3. 通过本次实验深刻理解理论课上的数字信号处理的一个常见方法——对时刻n的样本附近的一些样本求平均,产生所需的输出信号。 3. 通过振幅调制信号的产生来理解载波信号与调制信号之间的关系。 二、实验内容 1. 编写程序在MATLAB中实现从被加性噪声污染的信号中移除噪声的算法,本次试验采用三点滑动平均算法,可直接输入程序P1.5。 2. 通过运行程序得出的结果回答习题Q1.31-Q1.33的问题,加深对算法思想的理解。 3. 编写程序在MATLAB中实现振幅调制信号产生的算法,可直接输入程序P1.6。 4. 通过运行程序得出的结果回答习题Q1.34-Q1.35的问题,加深对算法思想的理解。 三、主要算法与程序 1. 三点滑动平均算法的核心程序: %程序P1.5 %通过平均的信号平滑 clf; R=51; d=0.8*(rand(R,1)-0.5);%产生随噪声 m=0:R-1; s=2*m.*(0.9.^m);%产生为污染的信号 x=s+d';%产生被噪音污染的信号 subplot(2,1,1); plot(m,d','r-',m,s,'g--',m,x,'b-.');

xlabel('时间序号n');ylabel('振幅'); legend('d[n]','s[n]','x[n]'); x1=[0 0 x];x2=[0 x 0];x3=[x 0 0]; y=(x1+x2+x3)/3; subplot(2,1,2); plot(m,y(2:R+1),'r-',m,s,'g--'); legend('y[n]','s[n]'); xlabel('时间序号n');ylabel('振幅'); 2. 振幅调制信号的产生核心程序:(由于要几个结果,因此利用subplot函数画图) %程序P1.6 %振幅调制信号的产生 n=0:100; m=0.1;fH=0.1;fL=0.01; m1=0.3;fH1=0.3;fL1=0.03; xH=sin(2*pi*fH*n); xL=sin(2*pi*fL*n); y=(1+m*xL).*xH; xH1=sin(2*pi*fH1*n); xL1=sin(2*pi*fL1*n); y1=(1+m1*xL).*xH; y2=(1+m*xL).*xH1; y3=(1+m*xL1).*xH; subplot(2,2,1); stem(n,y); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.1;fH=0.1;fL=0.01;'); subplot(2,2,2); stem(n,y1); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.3;fH=0.1;fL=0.01;'); subplot(2,2,3); stem(n,y2); grid; xlabel('时间序号n');ylabel('振幅');title('m=0.3;fH=0.3;fL=0.01;'); subplot(2,2,4); stem(n,y3); grid;

数字信号处理实验

实验一 离散傅里叶变换(DFT )对确定信号进行谱分析 一.实验目的 1.加深对DFT 算法原理和基本性质的理解。 2.熟悉DFT 算法和原理的编程方法。 3.学习用DFT 对信号进行谱分析的方法,了解可能出现的误差及其原因,以便在实际中正确利用。 二.实验原理 一个连续信号)(t x a 的频谱可以用其傅里叶变换表示,即 dt e t x j X t j a a Ω-∞ ∞ -? = Ω)()( 若对)(t x a 进行理想采样可得采样序列 )(|)()(nT x t x n x a nT t a === 对)(n x 进行DTFT ,可得其频谱为: ∑∞ -∞ =-= n n j j e n x e X ωω )()( 其中数字频率ω与模拟频率Ω的关系为: s f T Ω = Ω=ω )(n x 的DFT 为∑∞ -∞ =-= n nk N j e n x k X π 2)()( 若)(t x a 是限带信号,且在满足采样定理的条件下,)(ω j e X 是)(Ωj X a 的周期延拓, )(k X 是)(ωj e X 在单位圆上的等间隔采样值,即k N j e X k X πωω2| )()(= =。 为在计算机上分析计算方便,常用)(k X 来近似)(ω j e X ,这样对于长度为N 的有限 长序列(无限长序列也可用有限长序列来逼近),便可通过DFT 求其离散频谱。 三.实验内容 1.用DFT 对下列序列进行谱分析。 (1))()04.0sin(3)(100n R n n x π=

1 (2)]0,0,0,0,0,0,0,0,1,1,1,1[)(=n x 2.为了说明高密度频谱和高分辨率频谱之间的区别,考察序列 )52.0cos()48.0cos()(n n n x ππ+= (1)当0≤n ≤10时,确定并画出x(n)的离散傅里叶变换。 (2)当0≤n ≤100时,确定并画出x(n)的离散傅里叶变换。 四.实验结果 1. (1) (2)

数字信号处理课程实验报告4

数字信号处理课程实验报告 实验名称FIR数字滤 班级姓名 波器设计 教师姓名实验地点实验日期 一、实验内容 1、设计一个最小阶次的低通FIR数字滤波器,性能指标为:通带0Hz~1500Hz,阻带截 止频率2000Hz,通带波动不大于1%,阻带波动不大于1%,采样频率为8000Hz; 2、用一个仿真信号来验证滤波器的正确性(注意:要满足幅度要求和线性相位特性)。 二、实验目的 1、利用学习到的数字信号处理知识解决实际问题; 2、了解线性相位滤波器的特殊结构; 3、熟悉FIR数字滤波器的设计方法。 三、涉及实验的相关情况介绍(包含使用软件或实验设备等情况) 计算机一台(安装MATLAB6.5版本或以上版本) 四、实验记录(以下1~5项必须完成,第6项为选择性试做) 1.原理基础 令希望设计的滤波器的传输函数是H(ejw,hd(n)是与其对应的单位脉冲响应。一般情况下,由Hd(ejw)求出hd(n),然后由Z变换求出滤波器的系统函数。但是通常Hd(ejw)在边界频率处有不连续点,这使得hd(n)是无限长的非因果序列,所以实际是不能实现的。为了构造一个长度为N的线性相位滤波器,可以将hd(n)截取一段来近似,并且根据线性相位的特点,需要保证截取后的序列关于(N-1)/2对称。设截取的一段为h(n),则 Wr(n)称为矩形窗函数。 当hd(n的对称中心点取值为(N-1)/2时,就可以保证所设计的滤波器具有线性相位。 2 实验流程

1.信号的谱分析 2.信号的采样 3.信号的恢复 3源程序代码 clc; clear all; close all; fs=700;%采样频率 f=[30 40];%截止频率 a=[1 0]; dev=[0.01 0.1]; % dev纹波 [n,fo,ao,w]=remezord(f,a,dev,fs);%n滤波器阶数fo过渡带起止频率ao频带内幅度————firpmord b=remez(n,fo,ao,w);%firpm b=b.*blackman(length(b))'; b=b; a=1; figure(1) % [H,W]=freqz(b,1,1024,Fs); % plot(W,20*log10(abs(H))); freqz(b,1,1024,fs);grid title('滤波器') grid %%%%%%%%%%%%%%%% fc=28; fcl1=50; fcl2=100; fcl3=150; N=1024; n=1:N; % x=2*cos(2*pi*fc/fs*n)+j*2*sin(2*pi*fc/fs*n)+cos(2*pi*fcl/fs*n)+j*sin(2*pi*fcl/fs*n)+1*r and(1,N); xc=2*cos(2*pi*fc/fs*n); x=2*cos(2*pi*fc/fs*n)+2*cos(2*pi*fcl1/fs*n)+2*cos(2*pi*fcl2/fs*n)+0.1*rand(1,N); % x=2*cos(2*pi*fc/fs*n); xfft=abs(fft(x,N));

数字信号处理实验答案完整版

数字信号处理实验答案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

实验一熟悉Matlab环境 一、实验目的 1.熟悉MATLAB的主要操作命令。 2.学会简单的矩阵输入和数据读写。 3.掌握简单的绘图命令。 4.用MATLAB编程并学会创建函数。 5.观察离散系统的频率响应。 二、实验内容 认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。在熟悉了MATLAB基本命令的基础上,完成以下实验。 上机实验内容: (1)数组的加、减、乘、除和乘方运算。输入A=[1 2 3 4],B=[3 4 5 6],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出A、B、C、D、E、F、G。 clear all; a=[1 2 3 4]; b=[3 4 5 6]; c=a+b; d=a-b; e=a.*b; f=a./b; g=a.^b; n=1:4; subplot(4,2,1);stem(n,a); xlabel('n');xlim([0 5]);ylabel('A'); subplot(4,2,2);stem(n,b); xlabel('n');xlim([0 5]);ylabel('B'); subplot(4,2,3);stem(n,c); xlabel('n');xlim([0 5]);ylabel('C'); subplot(4,2,4);stem(n,d); xlabel('n');xlim([0 5]);ylabel('D'); subplot(4,2,5);stem(n,e); xlabel('n');xlim([0 5]);ylabel('E'); subplot(4,2,6);stem(n,f); xlabel('n');xlim([0 5]);ylabel('F'); subplot(4,2,7);stem(n,g); xlabel('n');xlim([0 5]);ylabel('G'); (2)用MATLAB实现下列序列: a) x(n)= 0≤n≤15 b) x(n)=e+3j)n 0≤n≤15 c) x(n)=3cosπn+π)+2sinπn+π) 0≤n≤15 d) 将c)中的x(n)扩展为以16为周期的函数x(n)=x(n+16),绘出四个周期。

数字信号处理实验报告(实验1_4)

实验一 MATLAB 仿真软件的基本操作命令和使用方法 实验容 1、帮助命令 使用 help 命令,查找 sqrt (开方)函数的使用方法; 2、MATLAB 命令窗口 (1)在MATLAB 命令窗口直接输入命令行计算3 1)5.0sin(21+=πy 的值; (2)求多项式 p(x) = x3 + 2x+ 4的根; 3、矩阵运算 (1)矩阵的乘法 已知 A=[1 2;3 4], B=[5 5;7 8],求 A^2*B

(2)矩阵的行列式 已知A=[1 2 3;4 5 6;7 8 9],求A (3)矩阵的转置及共轭转置 已知A=[1 2 3;4 5 6;7 8 9],求A' 已知B=[5+i,2-i,1;6*i,4,9-i], 求B.' , B' (4)特征值、特征向量、特征多项式 已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4] ,求矩阵A的特征值、特征向量、特征多项式;

(5)使用冒号选出指定元素 已知:A=[1 2 3;4 5 6;7 8 9];求A 中第3 列前2 个元素;A 中所有列第2,3 行的元素; 4、Matlab 基本编程方法 (1)编写命令文件:计算1+2+…+n<2000 时的最大n 值;

(2)编写函数文件:分别用for 和while 循环结构编写程序,求 2 的0 到15 次幂的和。

5、MATLAB基本绘图命令 (1)绘制余弦曲线 y=cos(t),t∈[0,2π]

(2)在同一坐标系中绘制余弦曲线 y=cos(t-0.25)和正弦曲线 y=sin(t-0.5), t∈[0,2π] (3)绘制[0,4π]区间上的 x1=10sint 曲线,并要求: (a)线形为点划线、颜色为红色、数据点标记为加号; (b)坐标轴控制:显示围、刻度线、比例、网络线 (c)标注控制:坐标轴名称、标题、相应文本; >> clear;

数字信号处理实验三

实验三:离散LSI 系统的频域分析 一、实验内容 2、求以下各序列的z 变换: 12030() ()sin() ()sin()n an x n na x n n x n e n ωω-=== 程序清单如下: syms w0 n z a; x1=n*a^n;X1=ztrans(x1) x2=sin(w0*n);X2=ztrans(x2) x3= exp(-a*n)*sin(w0*n);X3=ztrans(x3) 程序运行结果如下: X1 =z/(a*(z/a - 1)^2) X2 =(z*sin(w0))/(z^2 - 2*cos(w0)*z + 1) X3 =(z*exp(a)*sin(w0))/(exp(2*a)*z^2 - 2*exp(a)*cos(w0)*z + 1) 3、求下列函数的逆z 变换 0 312342 1 1() () () ()() 1j z z z z X z X z X z X z z a z a z e z ω---= = = = ---- 程序清单如下: syms w0 n z a; X1=z/(z-a);x1=iztrans(X1) X2= z/(a-z)^2;x2=iztrans(X2) X3=z/ z-exp(j*w0);x3=iztrans(X3) X4=(1-z^-3)/(1-z^-1);x4=iztrans(X4) 程序运行结果如下: x1 =a^n x2 =n*a^n/a 课程名称 数字信号 实验成绩 指导教师 实 验 报 告 院系 信息工程学院 班级 学号 姓名 日期

x3 =charfcn[0](n)-iztrans(exp(i*w0),w0,n) x4 =charfcn[2](n)+charfcn[1](n)+charfcn[0](n) 4、求一下系统函数所描述的离散系统的零极点分布图,并判断系统的稳定性 (1) (0.3)()(1)(1) z z H z z j z j -= +-++ z1=[0,0.3]';p1=[-1+j,-1-j]';k=1; [b1,a1]=zp2tf(z1,p1,k); subplot(1,2,1);zplane(z1,p1); title('极点在单位圆外); subplot(1,2,2);impz(b1,a1,20); 由图可见:当极点位于单位圆内,系统的单位序列响应随着频率的增大而收敛;当极点位于单位圆上,系统的单位序列响应为等幅振荡;当极点位于单位圆外,系统的单位序列响应随着频率的增大而发散。由此可知系统为不稳定系统。 -1 -0.5 00.51 -2 -1.5-1-0.500.511.5 2Real Part I m a g i n a r y P a r t 极点在单位圆外 n (samples) A m p l i t u d e Impulse Response

数字信号处理实验4

数字信号处理实验四 第一题结果: (1)没有增加过渡点 源码如下: N = 15; H = [1 1 1 0.5 zeros(1,7) 0.5 1 1 1]; %确定抽样点的幅度大小 %H(3,13) = 0.75;H(5,11) = 0.25; %设置过渡点 k = 0:N-1; A = exp(-j*pi*k*(N-1)/N); %抽样点相位大小 HK = H.*A; %求抽样点的H(k) hn = ifft(HK,N); %求出FIR的单位冲激响应h(n) freqz(hn,1,256); %画出幅频相频曲线figure(2); stem(real(hn),'.'); %绘制单位冲激响应的实部 line([0,35],[0,0]);xlabel('n');ylabel('Real(h(n))'); 单位脉冲响应曲线 幅频和相频特性曲线

(2)增加过渡点 源码如下: N = 15; H = [1 1 1 0.5 zeros(1,7) 0.5 1 1 1]; %确定抽样点的幅度大小 H(3) = 0.75;H(13) = 0.75;H(5) = 0.25;H(11) = 0.25; %设置过渡点 k = 0:N-1; A = exp(-j*pi*k*(N-1)/N); %抽样点相位大小 HK = H.*A; %求抽样点的H(k) hn = ifft(HK,N); %求出FIR的单位冲激响应h(n) freqz(hn,1,256); %画出幅频相频曲线figure(2); stem(real(hn),'.'); %绘制单位冲激响应的实部 line([0,35],[0,0]);xlabel('n');ylabel('Real(h(n))'); 单位脉冲响应曲线 幅频和相频特性曲线 第二题结果:

matlab数字信号处理实验指导

电工电子实验中心实验指导书 数字信号处理 实验教程 二○○九年三月

高等学校电工电子实验系列 数字信号处理实验教程 主编石海霞周玉荣 攀枝花学院电气信息工程学院 电工电子实验中心

内容简介 数字信号处理是一门理论与实践紧密联系的课程,适当的上机实验有助于深入理解和巩固验证基本理论知识,了解并体会数字信号处理的CAD手段和方法,锻炼初学者用计算机和MATLAB语言及其工具箱函数解决数字信号处理算法的仿真和滤波器设计问题的能力。 本实验指导书结合数字信号处理的基本理论和基本内容设计了八个上机实验,每个实验对应一个主题内容,包括常见离散信号的MATLAB产生和图形显示、离散时间系统的时域分析、离散时间信号的DTFT、离散时间信号的Z变换、离散傅立叶变换DFT、快速傅立叶变换FFT及其应用、基于MATLAB的IIR和FIR数字滤波器设计等。此外,在附录中,还简单介绍了MATLAB的基本用法。每个实验中,均给出了实验方法和步骤,还有部分的MATLAB程序,通过实验可以使学生掌握数字信号处理的基本原理和方法。

目录 绪论 (1) 实验一常见离散信号的MATLAB产生和图形显示 (2) 实验二离散时间系统的时域分析 (6) 实验三离散时间信号的DTFT (9) 实验四离散时间信号的Z变换 (14) 实验五离散傅立叶变换DFT (18) 实验六快速傅立叶变换FFT及其应用 (24) 实验七基于MATLAB的IIR数字滤波器设计 (30) 实验八基于MATLAB的FIR数字滤波器设计 (33) 附录 (37) 参考文献 (40)

绪论 绪论 随着电子技术迅速地向数字化发展,《数字信号处理》越来越成为广大理工科,特别是IT领域的学生和技术人员的必修内容。 数字信号处理是把信号用数字或符号表示成序列,通过计算机或通用(专用)信号处理设备,用数值计算方法进行各种处理,达到提取有用信息便于应用的目的。数字信号处理的理论和技术一出现就受到人们的极大关注,发展非常迅速。而且随着各种电子技术及计算机技术的飞速发展,数字信号处理的理论和技术还在不断丰富和完善,新的理论和技术层出不穷。目前数字信号处理已广泛地应用在语音、雷达、声纳、地震、图象、通信、控制、生物医学、遥感遥测、地质勘探、航空航天、故障检测、自动化仪表等领域。 数字信号处理是一门理论和实践、原理和应用结合紧密的课程,由于信号处理涉及大量的运算,可以说离开了计算机及相应的软件,就不可能解决任何稍微复杂的实际应用问题。Matlab是1984年美国Math Works公司的产品,MATLAB 语言具备高效、可视化及推理能力强等特点,它的推出得到了各个领域专家学者的广泛关注,其强大的扩展功能为各个领域的应用提供了基础,是目前工程界流行最广的科学计算语言。早在20世纪90年代中期,MATLAB就己成为国际公认的信号处理的标准软件和开发平台。从1996年后,美国新出版的信号处理教材就没有一本是不用MATLAB的。 本实验指导书结合数字信号处理的基本理论和基本内容,用科学计算语言MATLAB实现数字信号处理的方法和实践,通过实验用所学理论来分析解释程序的运行结果,进一步验证、理解和巩固学到的理论知识,从而达到掌握数字信号处理的基本原理和方法的目的。

数字信号处理实验1

clc; clear; M=26;N=32;n=0:M; xa=0:M/2; xb=ceil(M/2)-1:-1:0; xn=[xa,xb]; Xk=fft(xn,512); Xk1=abs(Xk); X32k=fft(xn,32); X32k1=abs(X32k); x32n=ifft(X32k); X16k=X32k(1:2:N); X16k1=abs(X16k); x16n=ifft(X16k,N/2); figure(1); subplot(3,2,1); stem(Xk1); subplot(3,2,2); stem(X32k1); subplot(3,2,3); stem(x32n); subplot(3,2,4); stem(X16k1); subplot(3,2,5); stem(x16n); Lx=41;N=5;M=10; hn=ones(1,N);hn1=[hn zeros(1,Lx-N)]; n=0:Lx-1; xn=cos(pi*n/10)+cos(2*pi*n/5); yn=fftfilt(hn,xn,M); figure(1); subplot(3,1,1); stem(hn1); subplot(3,1,2); stem(xn); subplot(3,1,3); stem(yn);

clc; clear; n=0:31; A=3; y=A*exp((0.8+j*314)*n); subplot(2,1,1); stem(y); Az=[0.7 0.3]; Bz=[1 -0.8 -0.5]; subplot(2,1,2); zplane(Bz,Az);

郑州大学数字信号处理课程设计报告

实验一:基于DFT的数字谱分析以及可能出现的问题 一、实验目的: 1.进一步加深对DFT的基本性质的理解。 2.掌握在MATLAB环境下采用FFT函数编程实现DFT的语句用法。 3.学习用DFT进行谱分析的方法,了解DFT谱分析中出现的频谱泄露和栅栏效应现 象,以便在实际中正确应用DFT。 二、实验步骤: 1.复习DFT的定义、物理含义以及主要性质。 2.复习采用DFT进行谱分析可能出现的三个主要问题以及改善方案。 3.按实验内容要求,上机实验,编写程序。 4.通过观察分析实验结果,回答思考题,加深对DFT相关知识的理解。 三、上机实验内容: 1.编写程序产生下列信号供谱分析用: 离散信号: x1=R10(n) x2={1,2,3,4,4,3,2,1},n=0,1,2,3,4,5,6,7 x3={4,3,2,1, 1,2,3,4},n=0,1,2,3,4,5,6,7 连续信号: x4=sin(2πf1t)+sin(2πf2t) f1=100Hz, f2=120Hz,采样率fs=800Hz 2.对10点矩形信号x1分别进行10点、16点、64点和256点谱分析,要求256点 频谱画出连续幅度谱,10点、16点和64点频谱画出离散幅度谱,观察栅栏效应。 3.产生信号x2和x3分别进行8点、16点谱分析,画出离散幅度谱,观察两个信 号的时域关系和幅度谱的关系。 4.对双正弦信号x4以采样率fs=800Hz抽样,生成离散双正弦信号并画出连续波形; 对离散双正弦信号进行时域截断,截取样本数分别为1000、250、50。对不同样本的双正弦信号分别进行1024点谱分析,画出连续幅度谱,观察频谱泄露现象。

数字信号处理实验二

实验二: 用FFT 作谱分析 实验目的 (1) 进一步加深DFT 算法原理和基本性质的理解(因为FFT 只是DFT 的一种快速算法, 所以FFT 的运算结果必然满足DFT 的基本性质)。 (2) 熟悉FFT 算法原理和FFT 子程序的应用。 (3) 学习用FFT 对连续信号和时域离散信号进行谱分析的方法, 了解可能出现的分析误差及其原因, 以便在实际中正确应用FFT 。 ● 实验步骤 (1) 复习DFT 的定义、 性质和用DFT 作谱分析的有关内容。 (2) 复习FFT 算法原理与编程思想, 并对照DIT-FFT 运算流图和程序框图, 读懂本实验提供的FFT 子程序。 (3) 编制信号产生子程序, 产生以下典型信号供谱分析用: (4) 编写主程序。 下图给出了主程序框图, 供参考。 本实验提供FFT 子程序和通用绘图子程序。 (5) 按实验内容要求, 上机实验, 并写出实验报告。 1423()()1,03()8470403()3470 x n R n n n x n n n n n x n n n =?+≤≤? =-≤≤?? ?-≤≤?? =-≤≤???456()cos 4 ()sin 8 ()cos8cos16cos20x n n x n n x n t t t π π πππ===++

●实验内容 (1) 对2 中所给出的信号逐个进行谱分析。 (2) 令x(n)=x4(n)+x5(n),用FFT计算8 点和16 点离散傅里叶变换, X(k)=DFT[x(n)] (3) 令x(n)=x4(n)+jx5(n),重复(2)。 ●实验报告要求 (1) 简述实验原理及目的。 (2) 结合实验中所得给定典型序列幅频特性曲线,与理论结果比较,并分析说明误差产生的原因以及用FFT作谱分析时有关参数的选择方法。 (3) 总结实验所得主要结论。 (4) 简要回答思考题。 Matlab代码: 对六个所给信号进行谱分析的主程序(对信号进行64点的FFT变换): clc;clear all; N=64; x1=Signal_x1(N);

《数字信号处理》课程实验题目

计电学院《数字信号处理》课程实验 适用专业:电子通信工程专业;实验学时:9 学时 一、实验的性质、任务和基本要求 (一)本实验课的性质、任务 数字信号处理课程实验是数字信号处理课程的有效的补充部分,通过实验,使学生巩固和加深数字信号处理的理论知识的理解和掌握,在实验过程中了解简单但是完整的数字信号处理的工程实现方法和流程。通过实践进一步加强学生独立分析问题和解决问题的能力、实际动手能力、综合设计及创新能力的培养。 (二)基本要求 掌握数字信号处理基本理论知识和滤波器设计及应用。 (三)实验选项

二、实验教学内容 实验一 1、实验目的和要求 1)加深理解时域采样定理、体会使用MATLAB的离散FT函数fft( )来解决涉及模拟信号的问题; 2)加深理解对带通信号的采样特性,学会采用MATLAB解决该问题; 3)加深理解在频率采样法中,过渡点对所设计滤波器特性的影响。 2、实验要求 1)提供MATLAB程序,画出每个步骤的曲线图; 2)写实验报告,包含有对所得结果进行分析和说明。 第一组:张毅雷凌峰白法聪覃昱滔刘强何新文 第二组:邓志强林盛勇李日胜黎少锋梁聪杨晨 实验二 1、实验目的和要求 (1)加深理解采用数字信号处理方法对模拟信号处理的过程、掌握使用MATLAB处理的方法;对一段音乐信号进行处理和输出;要求画出滤波前后语音信号时域波形、信号和滤波器的幅度频率特性曲线、相位频率特性曲线; (2)加深对截断效应的理解; (3)掌握使用MATLAB设计滤波器,并对语音信号处理的方法。对一段音乐信号进行处理和输出;要求画出滤波前后语音信号时域波形、信号和滤波器的幅度频率特性曲线、相位频率特性曲线。 2、实验要求 1)提供MATLAB程序,画出每个步骤的曲线图; 2)写实验报告,包含有对所得结果进行分析和说明。 第九组:汪涛张汉毅巫金敏张经中柳泽举 第六组:罗涛梁乐杰黄乃生 实验三 1、实验目的和要求 掌握采用MATLAB数字滤波器设计软件编制方法。软件要求在界面内有不同类型(高通低通带通带阻)滤波器的选择、或者只对低通滤波器采用不同方法设

数字信号处理实验

数字信号处理实验 报告

实验一 信号、系统及系统响应 一.实验目的 (1) 熟悉连续信号理想采样前后的频谱变化关系,加深对时域采样定理的理解; (2) 熟悉时域离散系统的时域特性; (3) 利用卷积方法观察分析系统的时域特性; (4) 掌握序列傅里叶变换的计算机实现方法,利用序列的傅里叶变换对连续信号、离 散信号及系统响应进行频域分析。 二.实验原理与方法 采样时连续信号数字处理的第一个关键环节。对采样过程的研究不仅可以了解采样前后信号时域和频域特性发生变化以及信号信息不丢失的条件,而且可以加深对傅里叶变换、Z 变换和序列傅里叶变换之间关系式的理解。 对一个连续信号 () a x t 进行理想采样的过程可用下式表示: ?()()()a a x t x t p t = 其中 ?()a x t 为 () a x t 的理想采样,()p t 为周期脉冲,即 ()() m p t t nT δ∞ =-∞ = -∑ ?()a x t 的傅里叶变换为 10 ()()k k N jw jw n n X e x m e --==∑ 其中, 10 2()()k k N jw jw n k n X e x m e w k M π --=== ∑ ,k=0,1, M-1 时域离散线性非时变系统的输入输出关系为 ()()*()()() m y n x n h n x m h n m ∞ =-∞ == -∑ 卷积运算也可在频域实现 ()()()jw jw jw Y e X e H e = 三.实验内容及步骤 (1)分析采样序列的特性

(2)时域离散系统响应分析N=10 3.卷积定理的验证

数字信号处理实验一.

实验一离散傅里叶变换的性质 一、实验目的 1、掌握离散傅里叶变换的性质,包括线性特性、时移特性、频移特性、对称性和循环卷积等性质; 2、通过编程验证傅里叶变换的性质,加强对傅里叶变换性质的认识。二、实验原理和方法 1. 线性特性 1212DFT[((]((ax n bx n aX k bX k +=+ 2. 时移特性 DFT[(](DFT[(]( km km x n m W X k x n m W X k ?+=?= 3. 频移特性 ((nl N IDFT X k l IDFT X k W +=???????? 4. 对称性 设由x(n开拓成的周期序列为 (p x n 则(((p pe po x n x n x n =+ 偶序列(((*1 2 pe p p x n x n x N n ??= +???奇序列(((*12 po p p x n x n x N n ??=

????将(pe x n 和(po x n 截取主周期,分别得 (((pet pe N x n x n R n = (((pot po N x n x n R n = 则(((((p N pet pot x n x n R n x n x n ==+ x(n序列的实部和虚部的离散立叶变换 ({} (Re pet DFT x n X k =???? ({} (Im pot DFT j x n X k =???? [][] (((((((((((arg (arg (R R R I I I X k X k X N k X k X k X N k X k X k X N k X k X N k X k X k ?=?=?=?=?=??=??=?=?? 5. 循环卷积 (3123121 (((((x n x n x n X k X k X k N =?= ?有限长序列线性卷积与循环卷积的关系 X1(n和x2(n的线性卷积: 11 31 2 1 2 0(((((N m m x n x m x n m x m x n ?∞=?∞

数字信号处理实验八

实验报告 实验名称:FIR数字滤波器设计及应用 课程名称____数字信号处理________ 院系部:电气与电子工程专业班级:信息1002 学生姓名:王萌学号: 11012000219同组人:实验台号: 指导教师:范杰清成绩: 实验日期: 华北电力大学

一、实验目的 加深理解 FIR 数字滤波器的时域特性和频域特性,掌握FIR 数字 滤波器的设计原理与设计方法,以及FIR 数字滤波器的应用。 二、 实验原理 FIR 数字滤波器可以设计成具有线性相位,在数据通信、图像处理、 语音信号处理等实际应用领域得到广泛应用。 M 阶FIR 数字滤波器的系统函数为: FIR 数字滤波器的单位脉冲响应h [k ]是长度为M +1的有限长因果序列。当满足对称条件时,该FIR 数字滤波器具有线性相位。FIR 数字滤波器设计方法主要有窗口法、频率取样法及优化设计法。 MATLAB 中提供的常用FIR 数字滤波器设计函数有: fir1 窗函数法设计FIR 数字滤波器(低通、高通、带通、 带阻、多频带滤波器) fir2 频率取样法设计FIR 数字滤波器:任意频率响应 firls FIR 数字滤波器设计:指定频率响应 firrcos 升余弦型 FIR 数字滤波器设计 intfilt 内插FIR 数字滤波器设计 kaiserord 凯塞(Kaiser)窗函数设计法的阶数估计 firpm Parks-McClellan 算法实现FIR 数字滤波器优化设计 firpmord Parks-McClellan 数字滤波器的阶数选择 cremez 复系数非线性相位FIR 等波纹滤波器设计 1、 窗口法设计FIR 数字滤波器 fir1函数可以很容易地实现FIR 数字滤波器窗口法设计。 可设计低通、高通、带通、带阻滤波器、多频带滤波器。 k M k z k h z H -=∑=][)(0

哈尔滨工程大学数字信号处理实验二.

实验报告 课程名称 实验项目名称 实验类型实验学时班级学号 姓名指导教师 实验室名称实验时间 实验成绩预习部分 实验过程 表现 实验报告 部分 总成绩 教师签字日期

实验二 离散时间傅立叶变换 实验报告 一、实验原理 1、经由正、逆离散时间傅里叶变换表达的信号傅里叶表达式是信号分析的一个关键部分,下面方程分别是分析方程和综合方程。 X(ω j e )= ∑∞ -∞ =-n ][x n j e n ω ωωωd e )e (21][x n j j ?-=π π πX n 类似地,当LTI 系统用于滤波时,作为冲击响应离散时间傅里叶变换的频率响应,提供了LTI 系统简介的描述。离散时间傅里叶变换X(ω j e )是ω的周期复值函数,周期总是 2π,并且基周期通常选在区间[-π,π)上。对离散时间傅里叶变换DTFT 来说有两个问题: 第一个问题是:DTFT 的定义对无限长信号是有效的 第二个问题是:DTFT 是连续变量ω的函数 在MA TLAB 中,任何信号必须是有限长度的,这就使第一点成为问题。因此,不可能使用MA TLAB 计算无限长信号的DTFT 。有一个值得注意的例外情形,当能从变换定义式推导出解析式并只是计算它时,可以使用MATLAB 计算无限长信号的DTFT 。例如在x[n]=n a u[n],x[n]具有有理的DTFT 的情形下。 2、第二个问题是频率抽样问题。MA TLAB 擅长在有限网格点上计算DTFT 。通常选择足够多的频率以使绘出的图平滑,逼近真实的DTFT 。对计算有利的最好选择是在(-π,π)区间上一组均匀地隔开的频率,或者对共轭对称变换选择[0,π]区间。采用上述抽样办法,DTFT 式变成X(ω j e )=1...2,1,0,][)(1 )/2(/2-==∑-=-N k e n x e X L n n N k j N k j ππ (3.11)DTFT 的周期性意味着在-π≤ω<0区间上的数值是那些对k>N/2的数值。因为上式是在有限数量的频率点k ω=2πk/N 处计算,并在有限范围内求和,因此它是可计算的。由于信号长度必须是有限的(0≤nL ,只须想像x[n]是增补零的即可;如果N=L )点数多得多的频率处来计算DTFT 。 3、计算DTFT 需要两个函数,MA TLAB 的freqz 函数计算无限长信号,dtft (h ,H )函数计算有限长信号的DTFT 。

相关文档
最新文档