数字信号处理实验讲义(修订版) 下载本文

数字信号处理实验讲义

在MATLAB中用可通过下列语句实现:

n?0:N?1;

x?A*sin(2*pi*f*n*Ts?fai); 4、复正弦序列

x(n)?ej?n

在MATLAB中用可通过下列语句实现:

n?0:N?1;

x?exp(j*w*n);

5、指数序列

x(n)?an?0:N; 6、随机序列

n

在MATLAB中用可通过下列语句实现:

x?a.^n;

在MATLAB中用可通过下列语句实现: rand(1,N)产生[0,1]上均匀分布的随机序列;

randn(1,N)产生均值为0,方差为1的高斯随机序列,也就是白噪声序列。

(二) 时域离散信号的基本运算 1、信号的延迟

在MATLAB中给定离散信号x(n),若信号y(n)定义为: y(n)?x(n?k)

那么,y(n)是信号x(n)在时间轴上右移k个抽样周期得到的新序列。 2、信号相加

x(n)?x1(n)?x2(n)

那么,当序列x1(n)和x2(n)的长度不等或位置不对应时,首先应使两者位置对其,然

2

数字信号处理实验讲义

后通过zeros函数左右补零使其长度相等后再相加。 3、信号相乘

x(n)?x1(n)x2(n)

那么,当序列x1(n)和x2(n)的长度不等或位置不对应时,首先应使两者位置对其,然后通过zeros函数左右补零使其长度相等后,在MATLAB中用.*来实现相乘。 4、信号的标量相乘

y(n)?cx(n)

在MATLAB中用y?c*x来实现标量相乘。 6、信号的翻转

y(n)?cx(n)

在MATLAB中用y?c*x来实现标量相乘。 7、信号和

对于N点信号x(n),其和信号的定义为:y??x(n)

n?1N在MATLAB中用y?sum(x)来实现。 8、信号积

对于N点信号x(n),其积信号的定义为:

y??x(n)

n?1N在MATLAB中用y?prod(x)来实现。 9、信号的能量

有限长信号的能量定义为:EX??x(n)x(n)??x(n)*n?1n?1NN2

在MATLAB中有两种方法来实现:

3

数字信号处理实验讲义

EX?sum(x.*conj(x))或EX?sum(abs(x).*2) 三、实验内容及步骤

1、自己设定参数,分别表示并绘制单位抽样序列、单位阶跃序列、正弦序列、复正弦序列、指数序列、随机序列;

2、自己设定参数,分别表示并绘制信号延迟、信号相加、信号相乘、信号标量相乘、信号翻转、信号和、信号积、信号能量。

3、自己设定参数,表示并绘制离散信号的综合计算。

四、实验思考

1、定性地说明用离散信号和模拟信号有何区别?

2、说明离散信号区别有哪些区别于模拟信号的运算方式?

五、参考程序

1、理想采样信号序列

(1)首先产生信号x(n),0<=n<=50 n=0:50;%定义序列的长度是50 A=444.12; %设置信号有关的参数 a=50*sqrt(2.0)*pi; T=0.001; %采样率

w0=50*sqrt(2.0)*pi; %ω符号在MatLab 中不能输入,用w 代替

x=A*exp(-a*n*T).*sin(w0*n*T); %pi 是MATLAB 定义的π,信号乘可采用“.*” close all %清除已经绘制的x(n)图形 subplot(3,1,1);stem(x); %绘制x(n)的图形

title(‘理想采样信号序列’); %设置结果图形的标题 (2)绘制信号x(n)的幅度谱和相位谱 k=-25:25;

W=(pi/12.5)*k;

X=x*(exp(-j*pi/12.5)).^(n’*k);

magX=abs(X); %绘制x(n)的幅度谱

subplot(3,1,2);stem(magX);title(‘理想采样信号序列的幅度谱’); angX=angle(X); %绘制x(n)的相位谱

subplot(3,1,3);stem(angX) ; title (‘理想采样信号序列的相位谱’) (3)改变参数为:A=1, α=0.4, Ω0=2.0734, T=1

n=0:50; %定义序列的长度是50

A=1; a=0.4; w0=2.0734; T=1; %设置信号有关的参数和采样率T

x=A*exp(-a*n*T).*sin(w0*n*T); %pi 是MATLAB 定义的π,信号乘可采用“.*” close all %清除已经绘制的x(n)图形 subplot(3,1,1);stem(x); %绘制x(n)的图形 title(‘理想采样信号序列’); k=-25:25;

W=(pi/12.5)*k;

X=x*(exp(-j*pi/12.5)).^(n’*k);

4

数字信号处理实验讲义

magX=abs(X); %绘制x(n)的幅度谱

subplot(3,1,2);stem(magX);title(‘理想采样信号序列的幅度谱’); angX=angle(X); %绘制x(n)的相位谱

subplot(3,1,3);stem(angX) ; title (‘理想采样信号序列的相位谱’) 2、单位脉冲序列

在MatLab 中,这一函数可以用zeros 函数实现: n=1:50; %定义序列的长度是50

x=zeros(1,50); %注意:MATLAB 中数组下标从1 开始 x(1)=1;close all;

subplot(3,1,1);stem(x);title(‘单位冲击信号序列’); k=-25:25;

X=x*(exp(-j*pi/12.5)).^(n’*k);

magX=abs(X); %绘制x(n)的幅度谱

subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱’); angX=angle(X); %绘制x(n)的相位谱

subplot(3,1,3);stem(angX) ; title (‘单位冲击信号的相位谱’) 3、矩形序列

n=1:5; x=sign(sign(10-n)+1);

close all; subplot(3,1,1); stem(x);title(‘单位冲击信号序列’); k=-25:25; X=x*(exp(-j*pi/25)).^(n’*k); magX=abs(X); %绘制x(n)的幅度谱

subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱’); angX=angle(X); %绘制x(n)的相位谱

subplot(3,1,3);stem(angX) ; title (‘单位冲击信号的相位谱’) 4、特定冲击串

x(n) = ? (n) + 2.5? (n -1) + 2.5? (n - 2) +?(n - 3)

n=1:50; %定义序列的长度是50

x=zeros(1,50); %注意:MATLAB 中数组下标从1 开始 x(1)=1; x(2)=2.5; x(3)=2.5; x(4)=1;

close all; subplot(3,1,1);stem(x);title(‘单位冲击信号序列’); k=-25:25; X=x*(exp(-j*pi/12.5)).^(n’*k); magX=abs(X); %绘制x(n)的幅度谱

subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱’); angX=angle(X); %绘制x(n)的相位谱

subplot(3,1,3);stem(angX) ; title (‘单位冲击信号的相位谱’) 5、卷积计算

y(n)?x(n)?h(n)?m??????x(m)h(n?m)

在MATLAB 中。提供了卷积函数conv,即y=conv(x,h),调用十分方便。例如: 系统:hb(n)??(n)?2.5?(n?1)?2.5?(n?2)??(n?3) 信号:xa(t)?Ae

??nTsin(?0nT),0?n?50

5