数字信号处理实验讲义
在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