数字信号处理翻转课堂笔记4
The Flipped Classroom4 of DSP
一、要点
1、离散信号傅里叶变换的性质:周期性、时移特性、频移特性、对称性、时域卷积定理、频域卷积定理、Parseval定理等等;
2、周期序列的傅里叶级数(DFS)和傅里叶变换。
二、问题与解答
1、结合采样定理以及模拟频率与数字频率的对应关系,讨论为什么数字(离散)信号的最高角频率是π?若在采样之前,模拟信号中存在一个频率分量,其频率是数字频率π所对应模拟频率的2倍,这个分量在数字信号中的频率会是多少?
2、分别任取一个有限长的实序列和一个有限长的复序列,利用MATLAB软件,求它们各自的傅里叶变换并绘图。根据结果,分别讨论实序列和复序列的幅度频谱和相位频谱的周期性和奇偶对称性。
3、任取一有限长复序列,利用MATLAB软件,分别求其实部和虚部的傅里叶变换;然后再将该序列分解为共轭对称和共轭反对称两个部分,分别求其傅里叶变换。根据所得到的结果,讨论并总结序列傅里叶变换的对称性质。
4、
5、离散信号的时域卷积定理,可以把序列在时域的卷积运算转换为频域的乘法运算。也就是说,利用一个LTI离散系统h(n)对信号x(n)进行处理,即求x(n)* h(n),可以用频域相乘来取代这种卷积运算,这对于工程实际中降低数字信号处理的计算复杂度有何意义(暂不考虑求傅里叶变换和反变换的计算量问题)? 请查阅相关资料,自行总结分析。(需要分析离散卷积的计算量问题)
6、
7、 举例说明周期序列的傅里叶变换与其DFS之间的联系。
1、模拟频率与数字频率问题
结合采样定理以及模拟频率与数字频率的对应关系,讨论为什么数字(离散)信号的最高角频率是π?若在采样之前,模拟信号中存在一个频率分量,其频率是数字频率π所对应模拟频率的2倍,这个分量在数字信号中的频率会是多少?
对于时域离散信号,w=0指的是信号的直流分量,由于以2π为周期,那么w=0和2π的整数倍处都表示信号的直流分量,也就是说信号的直流和低频分量集中在w=0和w=2π整数倍附近。离w=0和2π最远的地方应该是最高频率,因此最高频率应该是π,也就是说信号最高频率应该集中在π附近。数字频率与模拟频率相互转化:w=2pif/fs
2、利用matlab画有限长实序列复序列及其频谱
分别任取一个有限长的实序列和一个有限长的复序列,利用MATLAB软件,求它们各自的傅里叶变换并绘图。根据结果,分别讨论实序列和复序列的幅度频谱和相位频谱的周期性和奇偶对称性。
代码:
%% 代码:
%% 实序列
n=0:10; %有限长
x=2.^n; %构造有限长实序列
N=500;
k=0:N;
w1=2*pi;
w=w1*k/N;
F=x*exp(-j*n'*w);
magX=abs(F); %右边的幅度谱
angX=angle(F); %右边的相位谱
w=[-fliplr(w),w(2:N+1)]; %翻转原频谱(右边到左边)然后与原频谱拼接
magX=[fliplr(magX),magX(2:N+1)]; %之前没有翻转幅度谱,这次要翻转一下
angX=[-fliplr(angX),angX(2:N+1)]; %之前没有翻转相位谱,这次要翻转一下
figure(1); %开始绘图
subplot(3,1,1)
stem(n,x)
title('x=2^n')
subplot(3,1,2)
plot(w/pi,magX) %绘制幅度谱,为什么是w/pi?除以pi的意义?为了方便计算
xlabel('rad')
title('幅度频谱')
subplot(3,1,3)
plot(w/pi,angX) %绘制相位谱,同问?为了方便计算
xlabel('rad')
title('相位频谱')
%% 复序列
x1=exp(j*0.5*n); %构造有限长复序列
F1=x1*exp(-j*n'*w);
magX1=abs(F1); %右边的幅度谱
angX1=angle(F1); %右边的相位谱
figure(2); %开始绘图
subplot(3,1,1)
stem(n,x1);
title('x=exp(j0.5n)')
subplot(3,1,2)
plot(w/pi,magX1)
xlabel('rad')
title('幅度频谱')
subplot(3,1,3)
plot(w/pi,angX1)
xlabel('rad')
title('相位频谱')
运行结果:
实序列傅里叶变换幅度频谱和相位频谱周期为2π,幅度频谱为偶函数,相位频谱周期为奇函数。
复序列的周期也为2π,但复序列的幅度频谱和相位频谱均不对称。
3、用matlab求复序列实部和虚部的傅里叶变换
任取一有限长复序列,利用MATLAB软件,分别求其实部和虚部的傅里叶变换;然后再将该序列分解为共轭对称和共轭反对称两个部分,分别求其傅里叶变换。根据所得到的结果,讨论并总结序列傅里叶变换的对称性质。
代码:
%% 代码:
clear;clc;
n=-10:10;
xn=cos(2.*n)+j*2*cos(2.*n);
%xn=sin(2.*n)+j*2*cos(2.*n);
K=500;
k=-K:1:K;
w=pi*k/K; %w为数字频率
xr=real(xn);
Xr=xr*exp(-j*n'*w); %计算实部离散时间傅立叶变换(序列的傅立叶变换)
subplot(3,2,1);
%plot(w/pi,Xr); %(这是错的,如果对了是因为xn是偶函数,碰巧等于abs(Xr))
plot(w/pi,abs(Xr)); %画出离散时间傅立叶变换
ylabel('x1(jw)');
title('信号实部的幅度频谱');
xlabel('f');
xi=imag(xn);
Xi=xi*exp(-j*n'*w); %计算离散时间傅立叶变换(序列的傅立叶变换)
subplot(3,2,3);
plot(w/pi,abs(Xi)); %画出离散时间傅立叶变换
xlabel('f'); %横坐标为频率
ylabel('x1(jw)');
title('信号虚部的幅度频谱');
XN=2.*xn*exp(-j*n'*w); %计算离散时间傅立叶变换(序列的傅立叶变换)
subplot(3,2,5);
plot(w/pi,abs(XN)); %画出离散时间傅立叶变换
xlabel('f'); %横坐标为频率
ylabel('x1(jw)');
title('实部+虚部');
xy=cos(2.*n)+j*2*cos(2.*n)+conj(cos(2.*-n)+j*cos(2.*-n)); %对称共轭
K=700;
k=-K:1:K;
w=2*pi*k/K; %w为数字频率
Xy=xy*exp(-j*n'*w); %计算离散时间傅立叶变换(序列的傅立叶变换),
subplot(3,2,2);
plot(w/pi,Xy); %画出离散时间傅立叶变换
xlabel('f'); %横坐标为弧度
ylabel('x2(jw)');
title('共轭对称分量的幅度频谱');
xm=cos(2.*n)+j*2*cos(2.*n)-conj(cos(2.*-n)+j*cos(2.*-n));
Xm=xm*exp(-j*n'*w); %计算离散时间傅立叶变换(序列的傅立叶变换),
subplot(3,2,4);
plot(w/pi,abs(Xm)); %画出离散时间傅立叶变换
xlabel('f');
ylabel('x2(jw)');
title('共轭反对称分量的幅度频谱');
xx=xy+xm;
XX=xx*exp(-j*n'*w); %计算离散时间傅立叶变换(序列的傅立叶变换),
subplot(3,2,6);
plot(w/pi,abs(XX)); %画出离散时间傅立叶变换
xlabel('f');
ylabel('x2(jw)');
title('共轭对称分量+共轭反对称分量');
运行结果:
分析:
- 任意序列可以表示为一个共轭对称序列和一个共轭反对称序列之和
- 任意函数可以表示为一个共轭对称函数和一个共轭反对称函数之和
- DTFT的共轭对称部分对应序列实部,DTFT的共轭反对称部分对应序列虚部(含j)
4、序列的实虚部傅里叶变换
5、利用时域卷积定理减小计算量
离散信号的时域卷积定理,可以把序列在时域的卷积运算转换为频域的乘法运算。也就是说,利用一个LTI离散系统h(n)对信号x(n)进行处理,即求x(n)* h(n),可以用频域相乘来取代这种卷积运算,这对于工程实际中降低数字信号处理的计算复杂度有何意义(暂不考虑求傅里叶变换和反变换的计算量问题)? 请查阅相关资料,自行总结分析。(需要分析离散卷积的计算量问题)
离散卷积是两个离散序列x(n)和h(n)之间按照一定的规则将它们的有关序列值分别两两相乘再相加的一种特殊的运算。具体可用公式表示为:
利用卷积定理可以简化卷积的运算量。对于长度为n的序列,按照卷积的定义进行计算,需要做2n- 1组对位乘法,计算复杂;而利用傅里叶变换将序列变换到频域上后,只需要一组对位乘法,利用傅里叶变换的快速算法之后,总的计算复杂度降低。并且在频域上把信号展开,工程师能更容易看到电路器件或是数字算法对信号的影响,以便于调节系统参数。
6、x(n)的FT及x(n)的周期延拓的DFS之间的关系
代码:
%% 代码:
M=0:3;
xn=[1,1,1,1];
subplot(4,1,1)
stem(M,xn)
w=[-800:1:800]*4*pi/800;
X=xn*exp(-j*(M'*w));
subplot(4,1,2)
plot(w,abs(X));
title('变换幅度谱')
k=-20:20;
Y1=sin(pi/2*k).*exp(-j*3/8*pi*k)./sin(pi/8*k);
subplot(4,1,3)
stem(k,abs(Y1));
title('周期8 幅度谱')
k=-20:20;
Y1=sin(pi/4*k).*exp(-j*3/16*pi*k)./sin(pi/16*k);
subplot(4,1,4)
stem(k,abs(Y1));
title('周期16 幅度谱')
运行结果:
X(k)是由对x(n)的主值序列作DTFT,然后将DTFT结果X(exp(jw))在一个周期内进行N点等间隔采样,再将所得的N点序列以N为周期延拓而成。
N越大,x(n)的傅里叶级数表示的采样点越多。相当于在一个周期内对傅里叶变换进行N等分取样。
7、周期序列的FT与其DFS之间的联系
举例说明周期序列的傅里叶变换与其DFS之间的联系。
三、反思总结
1、matlab的应用
(1)求傅里叶变换exp函数
(2)翻转filter函数
(3)幅度谱abs函数、相位谱angle函数