数字信号处理实验三

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

实验三离散时间信号的频域分析

实验室名称:信息学院2204 实验时间:2015年10月15日姓名:蒋逸恒学号:20131120038 专业:通信工程指导教师:陶大鹏

成绩

教师签名:年月日

一、实验目的

1、对前面试验中用到的信号和系统在频域中进行分析,进一步研究它们的性质。

2、学习离散时间序列的离散时间傅立叶变换(DTFT )、离散傅立叶变换(DFT )和z 变换。

二、实验内容

Q3.1 在程序P3.1中,计算离散时间傅里叶变换的原始序列是什么?Matlab 命令pause 的作用是什么?

Q3.2 运行程序P3.1,求离散时间傅里叶变换得的实部、虚部以及幅度和香相位谱。离散时间傅里叶变换是w 的周期函数吗?若是,周期是多少?描述这四个图形表示的对称性。

Q3.2 修改程序P3.1,在范围0≤ w ≤π内计算如下序列的离散时间傅里叶变换:

w j w j jw w

j w j jw jw

e e e e e e e U 32327.05.03.013.05.07.0)(-----+-+++-=

并重做习题P3.2,讨论你的结果。你能解释相位谱中的跳变吗?MATLAB 命令unwarp 可以移除变化。试求跳变被移除后的相位谱。

Q3.6 通过加入合适的注释语句和程序语句,修改程序P3.2,对程序生成的图形中的两个轴加标记。哪个参数控制时移量?

Q3.10 通过加入合适的注释语句和程序语句,修改程序P3.3,对程序生成的图形中的两个轴加标记。哪个参数控制频移量?

Q3.14 通过加入合适的注释语句和程序语句,修改程序P3.4,对程序生成的图形中的两个轴加标记。

Q3.15 运行修改后的程序并讨论你的结果。

Q3.17 通过加入合适的注释语句和程序语句,修改程序P3.5,对程序生成的图形中的两个轴加标记。

Q3.20 通过加入合适的注释语句和程序语句,修改程序P3.6,对程序生成的图形中的两个轴加标记。试解释程序怎样进行时间反转运算。

Q3.23 编写一个MATLAB程序,计算并画出长度为为N的L点离散傅里叶变换X[k]的值,其中L≥N,然后计算并画出L点离散傅里叶逆变换X[k]。对不同长度N和不同的离散傅里叶变换长度L,运行程序。讨论你的结果。

Q3.26 在函数circshift中,命令rem的作用是什么?

Q3.27 解释函数circshift怎样实现圆周移位运算。

Q3.28 在函数circconv中,运算符 = 的作用是什么?

Q3.29 解释函数circconv怎样实现圆周卷积运算。

Q3.30 通过加入合适的注释语句和程序语句,修改程序P3.7,对程序生成的图形中的两个轴加标记。哪个参数决定时移量?若时移量大于序列长度,将会发生什么?

Q3.31 运行修改后的程序并验证圆周时移运算。

Q3.32 通过加入合适的注释语句和程序语句,修改程序P3.8,对程序生成的图形中的两个轴加标记。时移量是多少?

Q3.33 运行修改后的程序并验证离散傅里叶变换的圆周时移性质。

Q3.36 运行程序P3.9并验证离散傅里叶变换的圆周卷积性质。

Q3.38 运行程序P3.10并验证线性卷积可通过圆周卷积得到。

Q3.41 序列x1[n]和x2[n]之间的关系是什么?

Q3.42 运行程序P3.11。由于周期序列的偶数部分的离散傅里叶变换是原序列的XEF 的实数部分,XEF的虚部应该为零。你能验证它们吗?你怎样解释仿真结果?

三、实验器材及软件

1. 微型计算机1台

2. MATLAB 7.0软件

四、实验原理

3.1;3.2;3.3;3.4 离散时间傅立叶变换的结果是关于w 的连续函数,对于系统函数的离散时间傅立叶变换的求法是A

B

F Y H ==

,其中,B 是f 序列傅立叶变换的系数,A 是y 序列傅立叶变换的系数。离散时间傅立叶变换的结果是w 的周期函数,在(2k+1)π附近为高频,在2k π附近为低频(k=0,+1,-1,+2,-2。。。。)

3.6 离散时间傅立叶变换的时移特性:)(][DTFT

0jw jwn e G e n n g o -??→?- 3.10 离散时间傅立叶变换的频移特性:)(][)(DTFT 00w w j n jw e G n g e --??→? 3.14;3.15 离散时间傅立叶变换的卷积性质:)()(][*][DTFT jw jw e H e G n h n g ??→?

3.17 离散时间傅立叶变换的调制特性:

?

--??→

π

θθθπd e H e G n h n g w j j )()(21

][][)

(DTFT

3.20 离散时间傅立叶变换的反转特性:)(][DTFT jw e G n g -??→?-

3.23 在matlab 中,fft ()函数可以快速的计算有限长序列的离散傅立叶变换,ifft ()函数可以快速的计算离散傅立叶逆变换,对于计算中的不同序列长度N ,若把时间当作1s ,则N 相当于采样率Fs ,L 是傅立叶变换后的序列的长度。此时,采样点的频率可表示为Fn=(n-1)*Fs/L ,当N 与L 越接近,Fs/L 越小,Fn 的变化速度越慢,此时相位谱也就相应的变化减慢,因为相位是频率f 的一次函数。

3.26;3.27;3.28;3.29 圆周移位函数和圆周卷积函数都是在“圆周”上循环的,该圆周的长度就是序列的长度。

3.30;3.31;3.32;3.33 圆周时移实际上是把一个序列的后面的点按顺序搬到前面来,

这里与反转和线性时移有着完全的区别。圆周时移实际上的移动范围不会超过序列长

度值。圆周时移性质:若)()(][n R n m x n y N N +=,则)()]([)(k X W n y DFT k Y km

N

-==,其中)]([)(n x DFT k X =,10-≤≤N k 。

3.36;3.38 由实验我们可以知道一个圆周卷积性质:线性卷积可通过圆周卷积得到。

3.41;3.42 由教材可知:)(][jw re DTFT

ev e x n x ??→?,即序列的偶部分的傅立叶变换是序列的傅立叶变换的实部。

五、实验步骤

1、进行本实验,首先必须熟悉matlab 的运用,所以第一步是学会使用matlab 。

2、学习相关基础知识,根据《数字信号处理》课程的学习理解实验内容和目的。

3、在充分熟悉基础知识的情况下进行实验,利用matlab 完成各种简单的波形产生和

观察,理解各种波形产生的原理和方法。

4、从产生的图形中学习新的知识,掌握实验的目的,充分学习数字信号处理的运用。

5、最后需要思考各种波形的联系和建立完整的知识体系,如整理噪声和原波形之间的叠加关系等。

六、实验记录(数据、图表、波形、程序等)

3.2

w=-4*pi:8*pi/511:4*pi; num=[2 1];den=[1 -0.6]; h=freqz(num,den,w); subplot(2,1,1);

plot(w/pi,real(h));grid; title('H(e^{j\omega})的实部'); xlabel('\omega/\pi');

-4

-3

-2

-1

1

2

3

4

2

46

8

H(e j ω)的实部

ω/π

振幅

-4

-3

-2

-1

1

2

3

4

-4

-2

02

4H(e j ω)的虚部

ω/π

振幅

ylabel('振幅');

subplot(2,1,2);

plot(w/pi,imag(h));grid;

title('H(e^{j\omega})的虚部');

xlabel('\omega/\pi');

ylabel('振幅');

pause;

subplot(2,1,1);

plot(w/pi,abs(h));grid;

title('|H(e^{j\omega}|幅度谱');

xlabel('\omega/\pi');

ylabel('振幅');subplot(2,1,2);

plot(w/pi,angle(h));grid;

title('相位谱arg[H(e^{j\omega})]');

xlabel('\omega/\pi');

ylabel('以弧度为单位的相位');

3.3

clf;

w=0:8*pi/511:pi;

num=[0.7 -0.5 0.3 1];den=[1 0.3 -0.5 0.7]; h=freqz(num,den,w);

subplot(2,1,1);

plot(w/pi,real(h));grid;

title('H(e^{j\omega})的实部');

xlabel('\omega/\pi');

ylabel('振幅');

subplot(2,1,2);

plot(w/pi,imag(h));grid;

title('H(e^{j\omega})的虚部');

xlabel('\omega/\pi');

ylabel('振幅');

pause;

subplot(2,1,1);

plot(w/pi,abs(h));grid;

title('|H(e^{j\omega}|幅度谱');

xlabel('\omega/\pi');

ylabel('振幅');

subplot(2,1,2);

plot(w/pi,angle(h));grid;

title('相位谱arg[H(e^{j\omega})]'); xlabel('\omega/\pi');

ylabel('以弧度为单位的相位');

移出跳变后的代码:

clf;

w=0:8*pi/511:pi;

-4-3-2-101234

2

4

6

8

|H(e jω|幅度谱

ω/π

-4-3-2-101234

-2

-1

1

2

相位谱arg[H(e jω)]

ω/π

00.10.20.30.40.50.60.70.80.91

-1

-0.5

0.5

1

H(e jω)的实部

ω/π

00.10.20.30.40.50.60.70.80.91

-1

-0.5

0.5

1

H(e jω)的虚部

ω/π

00.10.20.30.40.50.60.70.80.91

1

1

1

1

|H(e jω|幅度谱

ω/π

00.10.20.30.40.50.60.70.80.91

-4

-2

2

4

相位谱arg[H(e jω)]

ω/π

00.10.20.30.40.50.60.70.80.91

-6

-5

-4

-3

-2

-1

相位谱arg[H(e jω)]

ω/π

num=[0.7 -0.5 0.3 1];

den=[1 0.3 -0.5 0.7];

h=freqz(num,den,w);

plot(w/pi,unwrap(angle(h))); grid;

title('相位谱arg[H(e^{j\omega})]');

xlabel('\omega/\pi');

ylabel('以弧度为单位的相位');

3.4

clf;

w=-4*pi:8*pi/511:4*pi;

num1=[1 3 5 7 9 11 13 15 17];

h=freqz(num,1,w);

subplot(2,1,1);

plot(w/pi,real(h));grid;

title('H(e^{j\omega})的实部');

xlabel('\omega/\pi');

ylabel('振幅');

subplot(2,1,2);

plot(w/pi,imag(h));grid;

title('H(e^{j\omega})的虚部');

xlabel('\omega/\pi');

ylabel('振幅');

pause;

subplot(2,1,1);

plot(w/pi,abs(h));grid;

title('|H(e^{j\omega}|幅度谱');

xlabel('\omega/\pi');

ylabel('振幅');

subplot(2,1,2);

plot(w/pi,angle(h));grid;

title('相位谱arg[H(e^{j\omega})]');

xlabel('\omega/\pi');

ylabel('以弧度为单位的相位');

3.6

w=-pi:2*pi/255:pi;wo=0.4*pi;D=10;

num=[1 2 3 4 5 6 7 8 9];h1=freqz(num,1,w);

-4-3-2-101234 -1

1

2

H(e jω)的实部

ω/π

-4-3-2-101234 -2

-1

1

2

H(e jω)的虚部

ω/π

-4-3-2-101234

0.5

1

1.5

2

|H(e jω|幅度谱

ω/π

-4-3-2-101234 -4

-2

2

4

相位谱arg[H(e jω)]

ω/π

h2=freqz([zeros(1,D) num],1,w);%时移后的傅立叶变换得到的序列 subplot(2,2,1);plot(w/pi,abs(h1));grid;xlabel('\omega/\pi'); ylabel('振幅');title('原序列的幅度谱'); subplot(2,2,2);plot(w/pi,abs(h2)); xlabel('\omega/\pi');ylabel('振幅'); title('时移后序列的幅度谱'); subplot(2,2,3);

plot(w/pi,angle(h1));grid; xlabel('\omega/\pi'); ylabel('以弧度为单位的相位'); title('原序列的相位谱'); subplot(2,2,4);

plot(w/pi,angle(h2));grid; xlabel('\omega/\pi'); ylabel('以弧度为单位的相位'); title('时移后序列的相位谱');

3.10

clf;

w = -pi:2*pi/255:pi; wo = 0.4*pi; num1 = [1 3 5 7 9 11 13 15 17];

L = length(num1);

h1 = freqz(num1, 1, w);n = 0:L-1; num2 = exp(wo*i*n).*num1; h2 = freqz(num2, 1, w); %频移后的傅立叶变换得到的序列

subplot(2,2,1) plot(w/pi,abs(h1));grid xlabel('\omega/\pi');

ylabel('振幅');title('原序列的幅度谱') subplot(2,2,2)plot(w/pi,abs(h2));grid xlabel('\omega/\pi');ylabel('振幅'); title('频移后序列的幅度谱') subplot(2,2,3)

plot(w/pi,angle(h1));grid xlabel('\omega/\pi');ylabel('以弧度为单位的相位');

title('原序列的相位谱') subplot(2,2,4)

plot(w/pi,angle(h2));grid

xlabel('\omega/\pi');ylabel('以弧度为单位的相位');

title('频移后序列的相位谱')

3.14

%离散傅里叶变换的卷积性质 clf;

-1-0.500.51

2040

60ω/π

振幅

原序列的幅度谱

-1

-0.500.5

1

02040

60ω/π

振幅

时移后序列的幅度谱

-1

-0.5

00.5

1

-4-2024

ω/π

以弧度为单位的相位

原序列的相位谱

-1

-0.5

00.5

1

-4-2024

ω/π

以弧度为单位的相位

时移后序列的相位谱

-1

-0.5

00.51

050

100

ω/π

振幅

原序列的幅度谱

-1

-0.500.51

050

100

ω/π

振幅

频移后序列的幅度谱

-1

-0.5

00.5

1

-4-2024ω/π

以弧度为单位的相位

原序列的相位谱

-1

-0.5

0.5

1

-4-2024ω/π

以弧度为单位的相位

频移后序列的相位谱

w = -pi:2*pi/255:pi; x1 = [1 3 5 7 9 11 13 15 17]; x2 = [1 -2 3 -2 1]; y = conv(x1,x2); h1 = freqz(x1, 1, w);

h2 = freqz(x2, 1, w); hp = h1.*h2; h3 = freqz(y,1,w); subplot(2,2,1) plot(w/pi,abs(hp));grid

xlabel('\omega/\pi'); ylabel('振幅'); title('幅度谱的乘积') subplot(2,2,2) plot(w/pi,abs(h3));grid xlabel('\omega/\pi'); ylabel('振幅');

title('卷积后序列的幅度谱') subplot(2,2,3)

plot(w/pi,angle(hp));grid xlabel('\omega/\pi'); ylabel('以弧度为单位的相位'); title('相位谱的和') subplot(2,2,4)

plot(w/pi,angle(h3));grid xlabel('\omega/\pi'); ylabel('以弧度为单位的相位'); title('卷积后序列的相位谱');

3.17

%离散傅里叶变换的调制性质

clf;

w = -pi:2*pi/255:pi; x1 = [1 3 5 7 9 11 13 15 17]; x2 = [1 -1 1 -1 1 -1 1 -1 1]; y = x1.*x2;

h1 = freqz(x1, 1, w); h2 = freqz(x2, 1, w); h3 = freqz(y,1,w); subplot(3,1,1)

plot(w/pi,abs(h1));grid xlabel('\omega/\pi'); ylabel('振幅');

title('第一个序列的幅度谱')

subplot(3,1,2);plot(w/pi,abs(h2));grid

xlabel('\omega/\pi');ylabel('振幅');title('第二个序列的幅度谱')

-1

-0.5

00.51

050

100

ω/π振幅

幅度谱的乘积

-1

-0.500.51

050

100

ω/π

振幅

卷积后序列的幅度谱

-1

-0.5

00.5

1

-4-2024ω/π

以弧度为单位的相位

相位谱的和

-1

-0.5

0.5

1

-4-2024ω/π

以弧度为单位的相位

卷积后序列的相位谱

-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

1

050100ω/π

振幅

第一个序列的幅度谱

-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

1

0510ω/π

振幅

第二个序列的幅度谱

-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

1

050100ω/π

振幅

乘积序列的幅度谱

subplot(3,1,3);plot(w/pi,abs(h3));grid

xlabel('\omega/\pi');ylabel('振幅');title('乘积序列的幅度谱')

3.20

clf;

w = -pi:2*pi/255:pi; num = [1 2 3 4]; L = length(num)-1; h1 = freqz(num, 1, w); h2 = freqz(fliplr(num), 1, w); h3 = exp(w*L*i).*h2;

subplot(2,2,1)

plot(w/pi,abs(h1));grid xlabel('\omega/\pi'); ylabel('振幅'); title('原序列的幅度谱') subplot(2,2,2) plot(w/pi,abs(h3));grid

xlabel('\omega/\pi');ylabel('振幅');title('时间反转后序列的幅度谱') subplot(2,2,3);plot(w/pi,angle(h1));grid

xlabel('\omega/\pi');ylabel('以弧度为单位的相位');title('原序列的相位谱') subplot(2,2,4);plot(w/pi,angle(h3));grid

xlabel('\omega/\pi');ylabel('以弧度为单位的相位');title('时间反转后序列的相位')

3.23

%原始序列是x=[1 2 3 ...], 其长度由N 决定 clear all ;

N=10; N=10 L=10 L=20;

%w1代表频率点 w1 = -pi:2*pi/L:pi; n=1:L; for i=1:L

w(i)=w1(i);

end

for i=1:N N=10 L=20 x(i)=i; end

xx=[x zeros(1,L-N)]; y=fft(xx,L); xk=ifft(y,L); subplot(3,1,1)

plot(w/pi,abs(y));grid

xlabel('\omega/\pi');

ylabel('振幅');

-1

-0.5

00.51

246810ω/π

振幅

原序列的幅度谱

-1

-0.5

0.5

1

2468

10ω/π

振幅

时间反转后序列的幅度谱

-1

-0.5

00.5

1

-4-2024

ω/π

以弧度为单位的相位

原序列的相位谱

-1

-0.5

0.5

1

-4-2024

ω/π

以弧度为单位的相位

时间反转后序列的相位谱-1-0.8-0.6-0.4-0.200.20.40.60.8

050100ω/π

振幅

幅度谱

-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

-505ω/π

以弧度为单位的相位

相位谱

1

2

3

4

5

678910

0510

n 振幅

原始序列

-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

1

050100

ω/π

振幅

幅度谱

-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

1

-505ω/π

以弧度为单位的相位

相位谱

2

4

6

8

1012

14

16

18

20

0510

n

振幅

原始序列

-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

1

050100

ω/π

振幅

幅度谱

-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

1

-505ω/π

以弧度为单位的相位

相位谱

title('幅度谱') N=10 L=50 subplot(3,1,2)

plot(w/pi,angle(y));grid xlabel('\omega/\pi'); ylabel('以弧度为单位的相位'); title('相位谱') subplot(3,1,3)

stem(n,xk);grid

xlabel('n');

ylabel('振幅');

title('原始序列') N=50 L=50

3.30

clf; M = 6;

a = [0 1 2 3 4 5 6 7 8 9];

b = circshift(a,M); L = length(a)-1; n = 0:L; subplot(2,1,1);

stem(n,a);axis([0,L,min(a),max(a)]); xlabel('n');ylabel('幅值'); title('原序列'); subplot(2,1,2);

stem(n,b);axis([0,L,min(a),max(a)]); xlabel('n');ylabel('幅值');

title(['圆周位移',num2str(M),'个样本得到的序列']);

3.31

代码同3.30,只是这里M 值取-15

-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

1

01000

2000ω/π

振幅

幅度谱

-1

-0.8

-0.6

-0.4

-0.2

0.2

0.4

0.6

0.8

1

-505ω/π

以弧度为单位的相位

相位谱

05101520

253035404550

50

n

振幅

原始序列

1

2

3

4

567

8

9

02468n

幅值

原序列

1

2

3

4

5

6

7

8

9

02468n

幅值

圆周位移6个样本得到的序列

1

2

3

4

567

8

9

0246

8n

幅值

原序列

1

2

3

4

5

6

7

8

9

0246

8n

幅值

圆周位移-15个样本得到的序列

3.33 当时移值取5(序列长为9)时的图形输出如下:

clf;

x = [0 2 4 6 8 10 12 14 16]; N = length(x)-1; n = 0:N;

y = circshift(x,5); XF = fft(x); YF = fft(y); subplot(2,2,1) stem(n,abs(XF));grid xlabel('n'); ylabel('振幅'); title('原序列的离散傅立叶变换的幅度'); subplot(2,2,2) stem(n,abs(YF));grid

xlabel('n');

ylabel('振幅'); 当时移值取18(序列长为9)时的图形输出如下: title('圆周移位后的序列的离散傅立叶变换的幅度'); subplot(2,2,3) stem(n,angle(XF));grid

xlabel('n');

ylabel('以弧度为单位的相位'); title('原序列的离散傅立叶变换的相位'); subplot(2,2,4)

stem(n,angle(YF));grid xlabel('n');

ylabel('以弧度为单位的相位');

title('圆周移位后的序列的离散傅立叶变换的相位');

3.36

g1 = [1 2 3 4 5 6]; g2 = [1 -2 3 3 -2 1]; ycir = circonv(g1,g2);

disp('圆周卷积的结果 = ');disp(ycir) G1 = fft(g1); G2 = fft(g2); yc = real(ifft(G1.*G2));

disp('离散傅立叶变换乘积的离散傅立叶逆变换的结果 = ');disp(yc) 输出:

圆周卷积的结果 =

12 28 14 0 16 14

2

468020406080n 振幅

原序列的离散傅立叶变换的幅度024680

20

406080n

振幅圆周移位后的序列的离散傅立叶变换的幅度0

2

46

8

-4-20

24n

以弧度为单位的相位

原序列的离散傅立叶变换的相位0

2

4

6

8

-4-2024n

以弧度为单位的相位

圆周移位后的序列的离散傅立叶变换的相位0

2

468020406080n 振幅

原序列的离散傅立叶变换的幅度024680

20

4060

80n

振幅圆周移位后的序列的离散傅立叶变换的幅度0

2

4

6

8

-4

-2024n

以弧度为单位的相位

原序列的离散傅立叶变换的相位0

2

4

6

8

-4-2024n

以弧度为单位的相位

圆周移位后的序列的离散傅立叶变换的相位

离散傅立叶变换乘积的离散傅立叶逆变换的结果 = 12 28 14 0 16 14

3.38

g1 = [1 2 3 4 5];g2 = [2 2 0 1 1]; g1e = [g1 zeros(1,length(g2)-1)]; g2e = [g2 zeros(1,length(g1)-1)]; ylin = circonv(g1e,g2e);

disp('通过圆周卷积的线性卷积= ');disp(ylin); y = conv(g1, g2);

disp('直接线性卷积 = ');disp(y); 输出:

通过圆周卷积的线性卷积=

2 6 10 15 21 15 7 9 5

直接线性卷积 =

2 6 10 15 21 15 7 9 5 3.42

x = [1 2 4 2 6 32 6 4 2 zeros(1,247)]; x1 = [x(1) x(256:-1:2)]; xe = 0.5 *(x + x1); XF = fft(x); XEF = fft(xe); clf;

k = 0:255; subplot(2,2,1);

plot(k/128,real(XF)); grid; ylabel('振幅');

title('Re(DFT\{x[n]\})'); subplot(2,2,2);

plot(k/128,imag(XF)); grid;

ylabel('振幅');

title('Im(DFT\{x[n]\})'); subplot(2,2,3);

plot(k/128,real(XEF)); grid;

xlabel('时间序号 n');ylabel('振幅'); title('Re(DFT\{x_{e}[n]\})'); subplot(2,2,4);

plot(k/128,imag(XEF)); grid;

xlabel('Time index n');ylabel('振幅');

00.51 1.52

-50

050

100振幅

Re(DFT{x[n]})

00.5

1 1.52

-100

-50

050100振幅

Im(DFT{x[n]})

0.51 1.52

-50

050100时间序号 n

振幅

Re(DFT{x e [n]})

0.51 1.52

-5

5

x 10

-15

Time index n

振幅

Im(DFT{x e [n]})

title('Im(DFT\{x_{e}[n]\})');

七、实验思考题及解答

3.1 原始序列是jw

jw

jw

e e e H ---+=6.012)( ;pause 命令的作用是暂停,当执行到此处时程

序暂停,按下空格键,程序继续执行。

3.2 离散时间傅立叶变换是w 的周期函数,周期是2π;这四个图形都是周期图形,周期为2π,)(jw e H 的实部是关于y 轴对称的偶函数,)(jw e H 的虚部是关于原点对称的奇函数,|)(jw e H |幅度谱是关于y 轴对称的偶函数,)(jw e H 的相位谱是关于原点对称的奇函数。

3.3 该离散时间傅立叶变换也是w 的周期函数,周期是2π;)(jw e H 的实部是关于y 轴对称的偶函数,)(jw e H 的虚部是关于原点对称的奇函数,|)(jw e H |幅度谱是关于y 轴对称的偶函数,这里特别说明)(jw e H 是幅度值恒为1的直线,)(jw e H 的相位谱是关于原点对称的奇函数。解释跳变:在matlab 中规定的角度范围是-π~π,而角度值实际上是0~2π,所以在结果中,弧度从0到π,当超过π之后就变成-π最后回到0,所以在弧度为π时发生跳变,跳变的幅度为2π。

3.4 结果显示也是周期函数,周期是2π,各个图形的对称性也和上述结果一致,这里不再赘述。其跳变的原因也和3.3中的解释一样,不再赘述。 3.6 参数D 控制时移量 3.10 参数0w 控制频移量

3.15卷积定理:g[n]*h[n]对应的傅立叶变换是)(jw e H )(jw e G 。由定理可知,g[n]*h[n]的傅立叶变换的幅度谱显然是等于|)(jw e H ||)(jw e G |,即前两个关于幅度的图形是完全一样的;同样由卷积定理可知二者的频谱图也应该完全一样,即后面两幅关于频谱图的图形一样,这里特别说明,在频域)(jw e H )(jw e G 中,因为相位是w 的一次函数,

而w 是e 的次数,所以)(jw e H )(jw e G 时,频率是相加的,实际上在相位上也是相加的。 3.20 怎么反转运算:程序先对原始序列进行倒序排列(fliplr 函数可对对矩阵进行左右翻转),然后再求离散时间傅立叶变换h2,此时时域的横轴任然是n=0,1,2,3,之后乘以w jn e 0(相当于时域序列左移n 0,n 0是序列长度-1),使时域横轴坐标变成 n=-3,-2,-1,0,以达到时域反转的目的。

3.23 本题使用的原始序列是x=[1 2 3 ...],其长度由N 决定。对于傅立叶变换(FFT ),由图形可以知道:离散傅立叶变换的幅度谱只与序列长度N 有关,N 越大,幅度的最大值越大,又因为是实数序列,所以幅度谱的幅值主要集中在π和-π的地方。相位谱与N 和L 都有关,N 与L 越接近,锯齿越少,即相位变化越慢,L 与N 的差越大,锯齿越多,即相位变化越快,其原理在实验报告的第四部分“实验原理”中给出。 对于傅立叶逆变换(IFFT ),由图形可知,可完全将被经过FFT 后的序列还原出来,序列的长度和L 一样长。当NL ,FFT 将先把序列中的后面的N-L 个值丢弃再进行傅立叶变换,最后还原回来也就是长度变为L 。 3.26 rem(a ,b )函数的作用是a/b 求模,其结果的符号与a 相同。其在程序中的作用是将移位值M 减小到小于序列长度的值。

3.27 解释函数circshift ():函数首先分析M 值,当M 大于序列长度时,让其减小到小于序列长度的情况;根据圆周移位的性质,如果此时M 为负数则将其变为与其对应的正数,公式为M=M+length (x ),最后把序列中第M 个点后面的所有点的值依次放到序列的最前面,实现圆周移位。

3.28 运算符~=的意思是“不等于”,作用是判定所要卷积的两个序列是不是一样长的,不是一样长则提示长度不相等的错误。

3.29 解释函数circonv ():首先判定卷积的两个序列是否相等,在相等的情况下,

把x2的第一个点后面的所有点进行倒序排列;然后将其圆周移位(1-k )个单位(k 从1递增到序列x1的长度值),之后和x1相乘得到新的序列,把该序列加到一起就是圆周卷积位于第k 点的值;最后从圆周移位处开始循环,获取圆周卷积位于每一个点的值,最后即可输出卷积结果。

3.30 参数M 决定时移量。若时移量大于序列长度将会在以序列长度为圆周的圆内进行换算得到一个小于序列长度的时移量,其结果也是正确的。

3.31 M 取-15,运行程序结果显示正确输出,这里时移量为15,圆周移位一圈后还需移位5个单位,与结果的图形完全一致,相当于M=-5=-5+10=5。 3.32 时移量是5。

3.33 由运行的程序结果可以发现幅度没有发生变化,相位发生变化。但有一个特殊值是:时移值为序列长度的整数倍时,则相位不变。如:当时移18个单位(18/9=2)时输出的图形是没有变化的。由此验证了时移性质。其原理见第四部分“实验原理”。 3.36 结果相等,验证了g[n]*h[n]=)(jw e H )(jw e G (这里的*代表圆周卷积),即代码中g1的傅立叶变换G1与g2的傅立叶变换G2的乘积变换到时域实际上是g[n]*h[n]。 3.38 输出结果完全一样,验证了线性卷积可通过圆周卷积得到,但圆周卷积时需要在g1,g2序列后面分别补length(g2)-1)个和length(g1)-1)个0,此时圆周卷积的长度即为补零后的两个序列的长度(补零后的两个序列的长度一样长),而线性卷积长度为length(g1)+length(g2)-1。

3.41 x[n]和x1[n]关系:x1[n]是x[n]的第一个点之后的其他点进行倒序排列的序列。相当于x[n]序列左右翻转之后进行一个单位的圆周移位。

3.42 仿真结果可以看出XEF 的虚部很小,可以认为为0。所以和题目中所说的XEF 虚部为0是一致的,下面证明偶数部分的傅立叶变换是原序列的实数部分傅立叶变换:

)())()((2

1))()((21])[][(21][re *DTFT jw jw jw jw jw ev e x e x e x e x e x n x n x n x =+=+??→?-+=-

所以][n x ev 的傅立叶变换就是原序列的实数部分的傅立叶变换。

八、实验结果分析与总结

本次实验结果出来却感觉需要得出的结论不够明显,主要原因是自己的对数字信号处理的知识还不够了解。

从结果中我们可以总结出离散时间傅立叶变换的各种性质,包括线性,时间反转特性,时移特性,频移特性,卷积性质和调至特性,具体形式见“实验原理”部分。

同时本次实验也深刻体会了离散时间傅立叶变换和离散傅立叶变换的不同,其关系为:n

N

j e F n F π

θθ2|

)()(==,其中,F (n )为离散傅立叶变换的结果,)(θj e F 为离散时

间傅立叶变换的结果,F (n )是对)(θj e F 离散化的结果,)(θj e F 是周期为2π的连续函数,F (n )是对)(θj e F 在2π的周期内进行N 次取样的样值。

最后一点就是关于圆周时移特性和圆周卷积特性的知识,从题目中我了解的这两个特性,具体的形式见“实验原理”。

总的来说,本次实验让我发现了自己在DSP 领域的知识的无限匮乏,可以说现在还处于懵懂的阶段,有的仿真结果无法自己解释出来,最后通过网上查阅的方式解决了问题。本次实验结束也让我明白,学习的深度还完全不够,以后的学习必须更加努力,在自习时也要拓宽自己的知识面,因为课堂上的知识是完全不够用的。

数字信号处理实验二报告

实验二 IIR数字滤波器设计及软件实现 1.实验目的 (1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法; (2)学会调用MATLAB信号处理工具箱中滤波器设计函数(或滤波器设计分析工具fdatool)设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。 (3)掌握IIR数字滤波器的MATLAB实现方法。 (3)通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。 2.实验原理 设计IIR数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用最广泛的是双线性变换法。基本设计过程是:①先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标;②设计过渡模拟滤波器;③将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。MATLAB信号处理工具箱中的各种IIR数字滤波器设计函数都是采用双线性变换法。第六章介绍的滤波器设计函数butter、cheby1 、cheby2 和ellip可以分别被调用来直接设计巴特沃斯、切比雪夫1、切比雪夫2和椭圆模拟和数字滤波器。本实验要求读者调用如上函数直接设计IIR数字滤波器。 本实验的数字滤波器的MATLAB实现是指调用MATLAB信号处理工具箱函数filter对给定的输入信号x(n)进行滤波,得到滤波后的输出信号y(n)。 3. 实验内容及步骤 (1)调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st,该函数还会自动绘图显示st的时域波形和幅频特性曲线,如图1所示。由图可见,三路信号时域混叠无法在时域分离。但频域是分离的,所以可以通过滤波的方法在频域分离,这就是本实验的目的。 图1 三路调幅信号st的时域波形和幅频特性曲线 (2)要求将st中三路调幅信号分离,通过观察st的幅频特性曲线,分别确定可以分离st中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率。要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为

数字信号处理实验五

实验五:FIR数字滤波器设计与软件实现 信息学院 10电本2班王楚炘 2010304224 10.5.1 实验指导 1.实验目的 (1)掌握用窗函数法设计FIR数字滤波器的原理和方法。 (2)掌握用等波纹最佳逼近法设计FIR数字滤波器的原理和方法。 (3)掌握FIR滤波器的快速卷积实现原理。 (4)学会调用MATLAB函数设计与实现FIR滤波器。 2.实验内容及步骤 (1)认真复习第七章中用窗函数法和等波纹最佳逼近法设计FIR数字滤波器的原理; (2)调用信号产生函数xtg产生具有加性噪声的信号xt,并自动显示xt及其频谱,如图10.5.1所示; 图10.5.1 具有加性噪声的信号x(t)及其频谱如图(3)请设计低通滤波器,从高频噪声中提取xt中的单频调幅信号,要求信号幅频失真小于0.1dB,将噪声频谱衰减60dB。先观察xt的频谱,确定滤波器指标参数。 (4)根据滤波器指标选择合适的窗函数,计算窗函数的长度N,

调用MATLAB函数fir1设计一个FIR低通滤波器。并编写程序,调用MATLAB快速卷积函数fftfilt实现对xt的滤波。绘图显示滤波器的频响特性曲线、滤波器输出信号的幅频特性图和时域波形图。 (4)重复(3),滤波器指标不变,但改用等波纹最佳逼近法,调用MATLAB函数remezord和remez设计FIR数字滤波器。并比较两种设计方法设计的滤波器阶数。 提示:MATLAB函数fir1和fftfilt的功能及其调用格式请查阅本书 第7章和第?章; 采样频率Fs=1000Hz,采样周期T=1/Fs; 根据图10.6.1(b)和实验要求,可选择滤波器指标参数:通带截止频率fp=120Hz,阻带截至频率fs=150Hz,换算成数字频率,通带截止频率,通带最大衰为0.1dB,阻带截至频率,阻带最小衰为60dB。]实验程序框图如图10.5.2所示,供读者参考。 Fs=1000,T=1/Fs xt=xtg 产生信号xt, 并显示xt及其频谱 用窗函数法或等波纹最佳逼近法 设计FIR滤波器hn 对信号xt滤波:yt=fftfilt(hn,xt) 1、计算并绘图显示滤波器损耗函数 2、绘图显示滤波器输出信号yt End 图10.5.2 实验程序框图 4.思考题 (1)如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器?请写出设计步骤. 答:用窗函数法设计线性相位低通滤波器的设计步骤: a.根据对阻带衰减及过渡带的指标要求,选择窗函数的类型,并估计窗口的长度N; b.构造希望逼近的频率响应函数; c.计算h d(n); d.加窗得到设计结果h(n)=h d(n)w(n)。 (2)如果要求用窗函数法设计带通滤波器,且给定通带上、下截止频率为和,阻带上、下截止频率为和,试求理想带通滤波器的截止频率。 答:希望逼近的理想带通滤波器的截止频率分别为:

数字信号处理实验一

实验一 离散时间信号分析 班级 信息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)完成实验报告。 五、实验结果 六、实验总结

数字信号处理实验

实验一: 系统及响应时域采样及频域采样 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 ωωω

数字信号处理实验程序2.

2.1 clc close all; n=0:15; p=8;q=2; x=exp(-(n-p.^2/q; figure(1; subplot(3,1,1; stem(n,x; title('exp(-(n-p^2/q,p=8,q=2'; xk1=fft(x,16; q=4; x=exp(-(n-p.^2/q; subplot(3,1,2; xk2=fft(x,16; stem(n,x; title('exp(-(n-p^2/q,p=8,q=4'; q=8; x=exp(-(n-p.^2/q;

xk3=fft(x,16; subplot(3,1,3; stem(n,x; title('exp(-(n-p^2/q,p=8,q=8';%时域特性figure(2; subplot(3,1,1; stem(n,abs(xk1; title('exp(-(n-p^2/q,p=8,q=2'; subplot(3,1,2; stem(n,abs(xk2; title('exp(-(n-p^2/q,p=8,q=4'; subplot(3,1,3; stem(n,abs(xk3; title('exp(-(n-p^2/q,p=8,q=8';%频域特性%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%% p=8;q=8; figure(3; subplot(3,1,1; stem(n,x; title('exp(-(n-p^2/q,p=8,q=8';

xk1=fft(x,16; p=13; x=exp(-(n-p.^2/q; subplot(3,1,2; xk2=fft(x,16; stem(n,x; title('exp(-(n-p^2/q,p=13,q=8'; p=14; x=exp(-(n-p.^2/q; xk3=fft(x,16; subplot(3,1,3; stem(n,x; title('exp(-(n-p^2/q,p=14,q=8';%时域特性figure(4; subplot(3,1,1; stem(n,abs(xk1; title('exp(-(n-p^2/q,p=8,q=8'; subplot(3,1,2; stem(n,abs(xk2; title('exp(-(n-p^2/q,p=13,q=8'; subplot(3,1,3;

数字信号处理实验及参考程序

数字信号处理实验实验一离散时间信号与系统及MA TLAB实现 1.单位冲激信号: n = -5:5; x = (n==0); subplot(122); stem(n, x); 2.单位阶跃信号: x=zeros(1,11); n0=0; n1=-5; n2=5; n = n1:n2; x(:,n+6) = ((n-n0)>=0); stem(n,x); 3.正弦序列: n = 0:1/3200:1/100; x=3*sin(200*pi*n+1.2); stem(n,x); 4.指数序列 n = 0:1/2:10; x1= 3*(0.7.^n); x2=3*exp((0.7+j*314)*n); subplot(221); stem(n,x1); subplot(222); stem(n,x2); 5.信号延迟 n=0:20; Y1=sin(100*n); Y2=sin(100*(n-3)); subplot(221); stem(n,Y1); subplot(222); stem(n,Y2);

6.信号相加 X1=[2 0.5 0.9 1 0 0 0 0]; X2=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7]; X=X1+X2; stem(X); 7.信号翻转 X1=[2 0.5 0.9 1]; n=1:4; X2=X1(5-n); subplot(221); stem(n,X1); subplot(222); stem(n,X2); 8.用MATLAB计算序列{-2 0 1 –1 3}和序列{1 2 0 -1}的离散卷积。a=[-2 0 1 -1 3]; b=[1 2 0 -1]; c=conv(a,b); M=length(c)-1; n=0:1:M; stem(n,c); xlabel('n'); ylabel('幅度'); 9.用MA TLAB计算差分方程 当输入序列为时的输出结果。 N=41; a=[0.8 -0.44 0.36 0.22]; b=[1 0.7 -0.45 -0.6]; x=[1 zeros(1,N-1)]; k=0:1:N-1; y=filter(a,b,x); stem(k,y) xlabel('n'); ylabel('幅度') 10.冲激响应impz N=64; a=[0.8 -0.44 0.36 0.22];

数字信号处理实验

实验一 离散傅里叶变换(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)

数字信号处理实验一

一、实验目的 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;

数字信号处理实验一 IIR数字滤波器设计及软件实现

实验一 IIR数字滤波器设计及软件实现 一、实验目的 (1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法; (2)学会调用MATLAB信号处理工具箱中滤波器设计函数(或滤波器设计分析工具fdatool)设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。 (3)掌握IIR数字滤波器的MATLAB实现方法。 (3)通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。 二、实验原理 设计IIR数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用最广泛的是双线性变换法。基本设计过程是:①先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标;②设计过渡模拟滤波器;③将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。MATLAB信号处理工具箱中的各种IIR数字滤波器设计函数都是采用双线性变换法。第六章介绍的滤波器设计函数butter、cheby1 、cheby2 和ellip可以分别被调用来直接设计巴特沃斯、切比雪夫1、切比雪夫2和椭圆模拟和数字滤波器。本实验要求同学调用如上函数直接设计IIR数字滤波器。 本实验的数字滤波器的MATLAB实现是指调用MATLAB信号处理工具箱函数filter对给定的输入信号x(n)进行滤波,得到滤波后的输出信号y(n)。 三、实验内容及步骤 (1)调用信号产生函数mstg,产生由三路抑制载波调幅信号相加构成的复合信号st,该函数还会自动绘图显示st的时域波形和幅频特性曲线,如图1-1所示。由图可见,三路信号时域混叠无法在时域分离。但频域是分离的,所以可以通过滤波的方法在频域分离,这就是本实验的目的。

图1-1 三路调幅信号st 的时域波形和幅频特性曲线 (2)要求将st 中三路调幅信号分离,通过观察st 的幅频特性曲线,分别确定可以分离st 中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通带截止频率和阻带截止频率。要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为60dB 。 提示:抑制载波单频调幅信号的数学表示式为 0001()cos(2)cos(2)[cos(2())cos(2())]2 c c c s t f t f t f f t f f t ππππ==-++ 其中,cos(2)c f t π称为载波,f c 为载波频率,0cos(2)f t π称为单频调制信号,f 0为调制正弦波信号频率,且满足0c f f >。由上式可见,所谓抑制载波单频调幅信号,就是2个正弦信号相乘,它有2个频率成分:和频0c f f +和差频0c f f -,这2个频率成分关于载波频率f c 对称。所以,1路抑制载波单频调幅信号的频谱图是关于载波频率f c 对称的2根谱线,其中没有载频成分,故取名为抑制载波单频调幅信号。容易看出,图1-1中三路调幅信号的载波频率分别为250Hz 、500Hz 、1000Hz 。如果调制信号m(t)具有带限连续频谱,无直流成分,则()()cos(2)c s t m t f t π=就是一般的抑制载波调幅信号。其频谱图是关于载波频率f c 对称的2个边带(上下边带),在专业课通信原理中称为双边带抑制载波 (DSB-SC) 调幅信号,简称双边带 (DSB) 信号。如果调制信号m(t)有直流成分,则()()cos(2)c s t m t f t π=就是一般的双边带调幅信号。其频谱图是关于载波频率f c 对称的2个边带(上下边带),并包含载频成分。

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

数字信号处理实验答案 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;

2015年北邮数字信号处理软件实验报告

数字信号处理软件实验 MATLAB 仿真 2015年12月16日

实验一:数字信号的 FFT 分析 ● 实验目的 通过本次实验,应该掌握: (a) 用傅立叶变换进行信号分析时基本参数的选择。 (b) 经过离散时间傅立叶变换(DTFT )和有限长度离散傅立叶变换(DFT )后信号频谱上的区别,前者 DTFT 时间域是离散信号,频率域还是连续的,而 DFT 在两个域中都是离散的。 (c) 离散傅立叶变换的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。 (d) 获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。 (e) 建立 DFT 从整体上可看成是由窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用是数字音频压缩中的分析滤波器,例如 DVD AC3 和MPEG Audio 。 ● 实验内容及要求 ? 离散信号的频谱分析 设信号 此信号的0.3pi 和 0.302pi 两根谱线相距很近,谱线 0.45pi 的幅度很小,请选择合适的序列长度 N 和窗函数,用 DFT 分析其频谱,要求得到清楚的三根谱线。 ? DTMF 信号频谱分析 用计算机声卡采用一段通信系统中电话双音多频(DTMF )拨号数字 0~9的数据,采用快速傅立叶变换(FFT )分析这10个号码DTMF 拨号时的频谱。 00010450303024().*cos(.)sin(.)cos(.)x n n n n ππππ=+--

●MATLAB代码及结果 ?离散信号的频谱分析 clf; close all; N=1000; n=1:1:N; x=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4); y=fft(x,N); mag=abs(y); w=2*pi/N*[0:1:N-1]; stem(w/pi,mag); axis([0.25 0.5 0 2]); xlabel('频率'); ylabel('X(k)'); grid on;

数字信号处理实验三

实验三:离散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

DSP运行实验报告

DSP运行实验报告 一、实验目的 熟悉CCS软件仿真下,DSP程序的下载和运行;熟悉借助单片机的DSP程序下载和运行; 熟悉借助仿真器的DSP程序下载和运行;熟悉与DSP程序下载运行相关的CCS编程环境。 二、实验原理 CCS软件仿真下,借用计算机的资源仿真DSP的内部结构,可以模拟DSP程序的下载和运行。 如果要让程序在实验板的DSP中运行、调试和仿真,可以用仿真器进行DSP程序下载和运行。初学者也可以不用仿真器来使用这款实验板,只是不能进行程序调试和仿真。 在本实验板的作用中,单片机既是串口下载程序的载体,又是充当DSP 的片外存储器(相对于FLASH),用于固化程序。 三、实验设备、仪器及材料 安装有WINDOWS XP操作系统和CCS3.3的计算机。 四、实验步骤(按照实际操作过程) 1、CCS软件仿真下,DSP程序的下载和运行。 第一步:安装CCS,如果不使用仿真器,CCS 的运行环境要设置成一个模拟仿真器(软仿真)。

第二步:运行CCS,进入CCS 开发环境。 第三步:打开一个工程。 将实验目录下的EXP01目录拷到D:\shiyan下(目录路径不能有中文),用[Project]\[Open]菜单打开工程,在“Project Open”对话框中选 EXP01\CPUtimer\CpuTimer.pjt,选“打开”, 第四步:编译工程。 在[Project]菜单中选“Rebuild All”,生成CpuTimer.out文件。 第五步:装载程序。 用[File]\[Load Program]菜单装载第四步生成CpuTimer.out文件,在当前工程目录中的Debug 文件夹中找到CpuTimer.out文件,选中,鼠标左键单击“打开”。

数字信号处理实验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实现数字信号处理的方法和实践,通过实验用所学理论来分析解释程序的运行结果,进一步验证、理解和巩固学到的理论知识,从而达到掌握数字信号处理的基本原理和方法的目的。

数字信号处理实验

子程序: function myplot(B,A) %myplot(B,A) %时域离散系统损耗函数绘图 %B为系统函数分子多项式系数向量 %A为系统函数分母多项式系数向量 [H,W]=freqz(B,A,1000); m=abs(H); plot(W/pi,20*log10(m/max(m)));grid on; xlabel('\omega/\pi');ylabel('幅度(dB)') axis([0,1,-80,5]);title('损耗函数曲线'); function tplot(xn,T,yn) %时域序列连续曲线绘图函数 % xn:信号数据序列,yn:绘图信号的纵坐标名称(字符串) % T为采样间隔 n=0:length(xn)-1;t=n*T; plot(t,xn); xlabel('t/s');ylabel(yn); axis([0,t(end),min(xn),1.2*max(xn)]) 程序: %实验4程序exp4.m % IIR数字滤波器设计及软件实现 clear all;close all Fs=10000;T=1/Fs; %采样频率 %调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st st=mstg; %低通滤波器设计与实现========================================= fp=280;fs=450; wp=2*fp/Fs;ws=2*fs/Fs;rp=0.1;rs=60; %DF指标(低通滤波器的通、阻带边界频)[N,wp]=ellipord(wp,ws,rp,rs); %调用ellipord计算椭圆DF阶数N和通带截止频率wp [B,A]=ellip(N,rp,rs,wp); %调用ellip计算椭圆带通DF系统函数系数向量B和A y1t=filter(B,A,st); %滤波器软件实现 % 低通滤波器设计与实现绘图部分 figure(2);subplot(3,1,1); myplot(B,A); %调用绘图函数myplot绘制损耗函数曲线 yt='y_1(t)'; subplot(3,1,2);tplot(y1t,T,yt); %调用绘图函数tplot绘制滤波器输出波形 %带通滤波器设计与实现==================================================== fpl=440;fpu=560;fsl=275;fsu=900; wp=[2*fpl/Fs,2*fpu/Fs];ws=[2*fsl/Fs,2*fsu/Fs];rp=0.1;rs=60;

数字信号处理上机实验代码

文件名:tstem.m(实验一、二需要) 程序: f unction tstem(xn,yn) %时域序列绘图函数 %xn:被绘图的信号数据序列,yn:绘图信号的纵坐标名称(字符串)n=0:length(xn)-1; stem(n,xn,'.'); xlabel('n');ylabel('yn'); axis([0,n(end),min(xn),1.2*max(xn)]); 文件名:tplot.m(实验一、四需要) 程序: function tplot(xn,T,yn) %时域序列连续曲线绘图函数 %xn:信号数据序列,yn:绘图信号的纵坐标名称(字符串) %T为采样间隔 n=0;length(xn)-1;t=n*T; plot(t,xn); xlabel('t/s');ylabel(yn); axis([0,t(end),min(xn),1.2*max(xn)]); 文件名:myplot.m(实验一、四需要)

%(1)myplot;计算时域离散系统损耗函数并绘制曲线图。function myplot(B,A) %B为系统函数分子多项式系数向量 %A为系统函数分母多项式系数向量 [H,W]=freqz(B,A,1000) m=abs(H); plot(W/pi,20*log10(m/max(m)));grid on; xlabel('\omega/\pi');ylabel('幅度(dB)') axis([0,1,-80,5]);title('损耗函数曲线'); 文件名:mstem.m(实验一、三需要) 程序: function mstem(Xk) %mstem(Xk)绘制频域采样序列向量Xk的幅频特性图 M=length(Xk); k=0:M-1;wk=2*k/M;%产生M点DFT对应的采样点频率(关于pi归一化值) stem(wk,abs(Xk),'.');box on;%绘制M点DFT的幅频特性图xlabel('w/\pi');ylabel('幅度'); axis([0,2,0,1.2*max(abs(Xk))]); 文件名:mpplot.m(实验一需要)

相关文档
最新文档