clc;clear;close all N = input('N= '); T = 0.05; n = 1:N; %原始数据输入 D = 2*pi/(N*T); %计算分辨率 xa=cos(10*n*T); %有限长余弦序列 Xa=T*fftshift(fft(xa,N)); %Xa(1) %求x(n)的DFT,移动到对称位置 k=floor(-(N-1)/2:(N-1)/2); %对于w=0对称的奈奎斯特频率下标向量 TITLE=sprintf('N=%i,L=%i',N,N*T); %变数值为格式控制下的字符串 plot(k*D,abs(Xa)); axis([-20,20,0,max(abs(Xa))+2]); xlabel('\Omega');ylabel('|X(j\Omega)|') title(TITLE); grid;
关于 fftshift函数:用于将数组进行循环移位,以达到对fft结果的负分量进行移位,方便结果的绘制;
https://ww2.mathworks.cn/help/matlab/ref/fftshift.html