关于fftshift的用法

关于fftshift的用法
%x=exp(-t)u(t)信号由DFT近似计算,求其幅度谱
%fsam=8HZ,N=32
clc;
clear all;
fs=8;%抽样频率
N=32;%
T=1/fs;%采样间隔
ws=2pifs;%模拟角频率
t=(0:N-1)T;%时间横轴
x=T
exp(-t);%纵轴
Xm=fftshift(fft(x));
%Xm=fft(x)
w=-ws/2+(0:N-1)*ws/N;
%w=(0:N-1)*ws/N;
wt=linspace(-ws/2,ws,1001);
Xw=1./sqrt(1+wt.*wt);
%1plot(Xw,‘r’);
plot(wt/pi,Xw,‘r’);
hold on ;
%1plot(abs(Xm),‘k’);
stem(w/pi,abs(Xm),‘k’);
legend(‘理论值’,‘近似值’);
%1.matlab只会计算,不会自动对应频域的幅值和频率,需要我么你人为添加
%没有shiftfft时在%1中两条线分别是从0到1000和32,取决于画图时的横坐标,可以在上面程序中找到
关于fftshift的用法_第1张图片
%2.但是给出坐标之后就会按照自己想要的区域显示如在没有shiftfft时程序的14,15行对dft处理的频域赋予不同的区域范围,出来的图形会进行平移
关于fftshift的用法_第2张图片
关于fftshift的用法_第3张图片
%3.关于fftshift,其作用是将频谱以自己的fs/2为中心左右对称互换,如使用嘀15行的w的得出的频谱范围为0-16,直接进行fftshift将会以8为中心对称互换的到图,但是使用14行的w之后相当于平移了8,就进行以0为中心对换,得到图
关于fftshift的用法_第4张图片
关于fftshift的用法_第5张图片
% 实际上在画频谱时候,应该是将fs/2-fs的频谱搬移到-fs/2-0的,但是可能不好实现,就用fft进行以图像的中心轴为中心左右互换,因此在利用fftshift
% 画图时候要先对dft得到的频谱减去fs/2,再进行fft,的到理想的结果。

你可能感兴趣的:(matalb)