目录
x(n)=cos(0.48πn)+cos(0.52πn)
(1)求它的有限样本的频谱。取0≤n≤10,确定并画出DFT[x(n)]。
(2)取0≤n≤10,确定并画出DFT[x(n)],对序列补90个零后,确定并画出DFT[x(n)]。
(3)求它的有限样本的频谱。取0≤n≤100,确定并画出DFT[x(n)]。
(4)拓展部分
clc;
clear all;
N=11; %序列长度
n=[0:1:N-1];
k=[0:1:N-1];
xn=cos(0.48*pi*n)+cos(0.52*pi*n); %原始序列x(n)
WN=exp(-j*2*pi/N); %DFT公式的具体实现
nk=n'*k;
WNnk=WN.^nk;
Xk=xn*WNnk;
magXk=abs(Xk);
angXk=angle(Xk);
plot(k,magXk);grid %作图
xlabel('k');title('幅频特性曲线');ylabel('X(k)');
从示意图中我们可以很明显看出来栅栏效应,图像显得很尖锐,在频率上抽样丢掉了很多重要信息。
栅栏效应:描述的是信号采样时只能得到采样点的信息,而忽略了采样间隔中数据信息的现象。不管是时域采样还是频域采样,都有相应的栅栏效应,只是当时域采样满足采样定理时,栅栏效应不会有什么影响。而频域采样的栅栏效应则影响很大,“挡住”或丢失的频率成分有可能是重要的或具有特征的成分,使信号处理失去意义。
clc;clear all;
N=101; %序列长度
n=[0:1:N-1];
k=[0:1:N-1];
n1=[0:1:10];
xn=cos(0.48*pi*n1)+cos(0.52*pi*n1); %前11个点为原始序列x(n)
xn=[xn,zeros(1,N-length(n1))]; %将序列补90个0至所需长度
WN=exp(-j*2*pi/N); %DFT公式的具体实现
nk=n'*k;
WNnk=WN.^nk;
Xk=xn*WNnk;
plot(k,abs(Xk));grid %作图
xlabel('k');title('幅频特性曲线');ylabel('|X(k)|');
如图所示,栅栏效应明显降低,但是本质上频率分辨率并没有提高,理论上两个余弦序列求和应该是两个很尖锐的锋。
%求它的有限样本的频谱。取0≤n≤100,确定并画出DFT[x(n)]。
clear all;
clc;
N=101; %序列长度
n=[0:1:N-1];
k=[0:1:N-1];
xn=cos(0.48*pi*n)+cos(0.52*pi*n); %原始序列x(n)
WN=exp(-j*2*pi/N); %DFT公式的具体实现
nk=n'*k;
WNnk=WN.^nk;
Xk=xn*WNnk;
plot(k,abs(Xk));grid %作图
xlabel('k');title('幅频特性曲线');ylabel('|X(k)|');
思考一:如果我继续拓展样本的有效长度会怎么样?
图像更加清晰,从而逼近真实无限长序列的DFT
思考二:如果我提高时域抽样的精度对DFT有什么影响?
clear all;
clc;
N=101;
n=[0:0.1:N-1];
xn=cos(0.48*pi*n)+cos(0.52*pi*n);
k=[0:1:10*(N-1)];
n=[0:1:10*(N-1)];
%原始序列x(n)
WN=exp(-j*2*pi/(10*N)); %DFT公式的具体实现
nk=n'*k;
WNnk=WN.^nk;
Xk=xn*WNnk;
plot(k,abs(Xk));grid %作图
xlabel('k');title('幅频特性曲线');ylabel('|X(k)|');
实际上,只提高信号的采样频率,但是不提高有效数据长度是无法提高频率分辨率的。
, 其中
为有效数据长度;
,
为抽样间隔。DTFT中,频率分辨率
只与有效数据长度有关,成反比关系。
本篇为了深入理解DFT,采用的是用矩阵运算求解。MATLAB提供了DFT工具箱。