subplot(3,1,1);stem(n,x,'filled');title('矩形序列');
k=-25:
25;
X=x*(exp(-j*pi/20)).^((n)'*k);
magX=abs(X);
subplot(3,1,2);stem(magX);title('矩形序列的幅度谱');
angX=angle(X);
subplot(3,1,3);stem(angX);title('矩形序列的相位谱');
图4
四、三种典型序列的时移
4.1时移原理
在序列运算中,x[n]的每一个样本都移动(即延迟)k个采样周期,设移位后的序列为y(n)。
当k>0时每一个样本向右移动,称为x(n)的延时序列;当k<0时,每一个样本向左移动,称为x(n)的超前序列:
y(n)=x(n-k)
在MATLAB中,如果原始的序列用x和nx表示,移位后的序列用y和yn表示,移位运算并不影响向量x的值,因此y=x。
移位体现为位置向量的改变。
ny的每个元素都比nx加了一个k,即ny=nx+k。
y和ny就是移位后的向量的表述,说明y取k拍前的x值。
向左移位可令k取负号,意味着y取k拍后的x值。
在系统框图中用
进行标注,它被称为迟延算子,表示把输入序列右移一位;用z进行标注,它是左移运算是右移算子的逆运算。
实际上迟延算子取的是序列过去的值,具有物理可实现性;而左移算子是提前算子,它要知道序列未来的值,物理上无法实现。
所以数字信号处理中通常都用
算子。
4.2单位采样信号的时移及时移后的频谱图
程序
n=1:
100;
x=zeros(1,100);
t=30;
x(t)=1;
figure
subplot(3,1,1);stem(x);title('单位采样序列的时移');
k=-50:
50;
X=x*(exp(-j*pi/25)).^(n'*k);
magX=abs(X);
subplot(3,1,2);stem(magX);title('单位采样序列时移的幅度谱');
angX=angle(X);
subplot(3,1,3);stem(angX);title('单位采样序列时移的相位谱');
图5
4.3实指数序列的时移及时移后的频谱图
程序
n=0:
40;
a=1.2;
t=45;
x=power(a,(n-t));
figure
subplot(3,1,1);stem((n+t),x,'fill');title('实指数序列的时移');
k=-20:
20;
X=x*(exp(-j*pi/10)).^((n-t)'*k);
magX=abs(X);
subplot(3,1,2);stem(magX,'fill');title('实指数序列时移的幅度谱');
angX=angle(X);
subplot(3,1,3);stem(angX,'fill');title('实指数序列时移的相位谱');
图6
4.4矩形序列的时移及时移后的频谱图
程序
n1=-10;n2=10;n3=20;n0=0;
n=n1:
n3;
n4=10;
x=[(n>=n0+n4)&(nsubplot(3,1,1);stem(n,x,'filled');title('时移的矩形序列');
k=-25:
25;
X=x*(exp(-j*pi/20)).^((n+n4)'*k);
magX=abs(X);
subplot(3,1,2);stem(magX);title('时移矩形序列的幅度谱');
angX=angle(X);
subplot(3,1,3);stem(angX);title('时移矩形序列的相位谱');
图7
五、三种典型序列的频移
5.1频移的原理
若
,则
结论:
将信号
乘以因子
,对应于将频谱函数沿轴
右移
;将信号
乘以因子
,对应于将频谱函数沿轴
右移
。
5.2单位采样信号的频移及频移后的特性图
程序
n=1:
100;
x=zeros(1,100);
x
(1)=1;
l=5;
y=exp(-j*pi/25*l).^n;
z=x.*y;
figure
subplot(3,1,1);stem(z);title('频移后单位采样序列');
k=-50:
50;
X=z*(exp(-j*pi/25)).^(n'*k);
magX=abs(X);
subplot(3,1,2);stem(magX);title('频移后单位采样序幅度谱');
angX=angle(X);
subplot(3,1,3);stem(angX);title('频移后单位采样序列的相位谱');
图8
5.3实指数序列的频移及频移后的特性图
程序
n=0:
40;
a=1.2;
x=power(a,n);
l=5;
y=exp(-j*pi/10*l).^n;
z=x.*y;
figure
subplot(3,1,1);stem(z,'fill');title('频移后实指数序列');
k=-20:
20;
X=z*(exp(-j*pi/10)).^(n'*k);
magX=abs(X);
subplot(3,1,2);stem(magX,'fill');title('频移后实指数序列幅度谱');
angX=angle(X);
subplot(3,1,3);stem(angX,'fill');title('频移后实指数序列的相位谱');
图9
5.4矩形序列的频移及频移后的特性图
程序
n1=-10;n2=10;n3=20;n0=0;
n=n1:
n3;
x=[(n>=n0+n4)&(nl=5;
y=exp(-j*pi/20*l).^n;
z=x.*y;
subplot(3,1,1);stem(n,z,'filled');title('频移后的矩形序列');
k=-25:
25;
X=z*(exp(-j*pi/20)).^((n)'*k);
magX=abs(X);
subplot(3,1,2);stem(magX);title('频移后的矩形序列的幅度谱');
angX=angle(X);
subplot(3,1,3);stem(angX);title('频移后的矩形序列的相位谱');
图10
六、结果分析
6.1单位采样序列分析
从图1的第一个波形和图5的第一个图中我们可以明显看出,单位采样序列在时域上向右移动10位,即的图形,在时移的过程中,通过图2与图5的第二个图形,我们可以看出,时移时,傅里叶变换的幅度谱没有什么变化,与原先一样;但从图2与图5中第三个图形中可以看出其相位谱有很大的变化,相位沿X轴旋转。
从图1第一个波形和图8的第一个图中我们可以明显看出频移图是原图的上下翻转;从图2与图8中的第二个图形中可以看出原图与频移图形没有什么变化;从图2与图8中的第三个图形中可以看出,频移图的相位是原图相位的时移,即向右移动5位。
6.2实指数序列分析
从图1和图6的第一个图中我们可以明显看出,实指数序列在时域上向右移动5位,在时移的过程中,通过图1与图6的第二个图形,我们可以看出,时移时,傅里叶变换的幅度谱没有什么变化,与原先一样;但从图1与图6中第三个图形中可以看出其相位谱有很大的变化,相位沿X轴旋转。
从图1和图9的第一个图中我们可以明显看出频移图是原图的上下翻转;从图3与图9中的第二个图形中可以看出相较与原图,频移图形向左移动5位;从图3与图9中的第三个图形中可以看出,频移图的相位与原图相位相反,且图形有移动。
6.3矩形序列分析
从图1和图10的第一个图中我们可以明显看出,矩形序列在时域上向右移动10位,在时移的过程中,通过图4与图10的第二个图形,我们可以看出,时移时,傅里叶变换的幅度谱没有什么变化,与原先一样;但从图4与图10中第三个图形中可以看出其相位谱有很大的变化,相位沿X轴旋转。
从图1和图10的第一个图中我们可以明显看出频移图与原图相比,沿着X轴翻转,在不为0的区域里;从图4与图10中的第二个图形中可以看出相较与原图,频移图形向左移动5位;从图4与图10中的第三个图形中可以看出,频移图的相位与原图相位相反,且图形有移动。
七、周期序列的设计
7.1周期序列时域波形
程序
fs=25;%设定采样频率
N=256;
n=0:
N-1;
t=n/fs;%设定正弦信号频率
%生成正弦信号
x=sin(pi*t);
figure
(1);
subplot(231);
plot(t,x);%作正弦信号的时域波形
xlabel('t');
ylabel('y');
title('正弦信号y=2*pi*10t时域波形');
图11
7.2周期序列的FT
程序
fs=25;%设定采样频率
N=256;
n=0:
N-1;
t=n/fs;%设定正弦信号频率
%生成正弦信号
x=sin(pi*t);
figure
(1);
subplot(231);
plot(t,x);%作正弦信号的时域波形
xlabel('t');
ylabel('y');
title('正弦信号y=2*pi*10t时域波形');
grid;
%进行FFT变换并做频谱图
y=fft(x,N);%进行fft变换
mag=abs(y);%求幅值
f=(0:
length(y)-1)'*fs/length(y);%进行对应的频率转换
figure
(1);
subplot(232);
plot(f,mag);%做频谱图
axis([0,100,0,80]);
xlabel('频率(Hz)');
ylabel('幅值');
title('正弦信号y=2*pi*10t傅里叶变换图N=256');
图12
7.3周期序列的DFS
在MTALAB中,DFS通过建立周期延拓函数语句实现:
functionXk=DFS(n,x,N)
ifN>length(x)
n=0:
N-1;
x=[xzeros(1,N-length(x))];
end
k=0:
N-1;
WN=exp(-j*2*pi/N);
nk=n'*k;
WNnk=WN.^nk;
Xk=x*WNnk;
End
利用DFS计算实现代码如下:
fs=25;%设定采样频率
N=256;
n=0:
N-1;
t=n/fs;
f0=10;%设定正弦信号频率
%生成正弦信号
x=sin(2*pi*f0*t);
figure
(1);
subplot(231);
plot(t,x);%作正弦信号的时域波形
xlabel('t');
ylabel('y');
title('正弦信号y=2*pi*10t时域波形');
X=fft(t,1024);
Xk=DFS(n,t,8);
figure
(2);
plot((-1023:
2048)/2048*16,[abs(X)abs(X)abs(X)],'--');holdon;
stem(-8:
15,[abs(Xk2)abs(Xk2)abs(Xk2)],'LineWidth',2);grid;
set(gcf,'color','w');
图13
7.4周期序列DFS与FT比较分析
FT是傅立叶变换,它主要用于分析连续非周期信号,由于信号是非周期的,它必包含了各种频率的信号,所以具有时域连续非周期对应频域连续非周期的特点。
离散的信号为周期序列时,严格的讲,傅立叶变换是不存在的,因为它不满足信号序列绝对级数和收敛(绝对可和)这一傅立叶变换的充要条件,但是采用DFS(离散傅立叶级数)这一分析工具仍然可以对其进行傅立叶分析。
采用类似DFS的分析方法可以把有限长非周期序列假设为一无限长周期序列的一个主直周期,即对有限长非周期序列进行周期延拓,延拓后的序列完全可以采用DFS进行处理,即采用复指数基频序列和此有限长时间序列取相关,得出每个主值在各频率上的频谱分量以表示出这个“主值周期”的频谱信息。
心得体会
本次课程设计是关于三种典型序列的谱分析及特性,要求学生掌握典型序列的特性,能熟练使用MATLAB软件,学会运用MATLAB编写一些简单的程序,用图形表示出来,能把数字信号处理的知识学以至用,运用理论对典型序列的频谱加以分析,达到理论知识实践化。
MATLAB主要用于数值运算,可利用为数众多的附加工具箱,它也适合不同领域的应用,例如控制系统设计与分析、图像处理、信号处理与通讯、金融建模和分析等。
它还是一个包含大量计算算法的集合。
其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。
在通常情况下,可以用它来代替底层编程语言。
在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。
MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。
函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。
通过这次的课程设计,使我对数字信号中的三种典型序列的谱分析及相关特性更加理解,从实验结果的分析中,对信号时移与频移的特性有了进一步的认识;另外,在这次课程设计中还加深了我对MATLAB软件的使用,能编一些简单的程序。
但是在课程设计过程中也遇到一些问题,如因为对知识的理解不够深,编程过程中有种凑结果的节奏,但最后经老师的讲解与同学的帮助,我完全明白了谱分析的那些特性。
参考文献
[1]数字信号处理基础(第三版)北京邮电大学出版社周利清、苏菲编
[2]MATLAB及在电子信息课程中的应用(第4版)电子工业出版社陈怀琛编