高分求快速傅里叶变换注释!

来源:百度知道 编辑:UC知道 时间:2024/05/24 05:22:05
%%信号f(t)
t=-2:0.0001:2
y1=sinc(t*200)
figure(1)
plot(t,y1) %画出原始信号
title('已知信号')
xlabel('时间:s')
ylabel('幅度')
grid
xlim([-0.1,0.1])
%%信号频谱
fs=3000 %采样频率
t1=-2:0.0001:2
y11=sinc(t1*200)
yk=fft(y11,50000)
yw=2*pi/40000*abs(fftshift(yk)) %频谱搬移
fw=[-25000:24999]/50000*fs
figure(2)
plot(fw,yw)
title('已知信号的频谱')
xlabel('频率:hz')
ylabel('幅度')
grid
xlim([-50,50])
重点是fw=[-25000:24999]/50000*fs 这句的作用越详细越好!谢谢了!!

fw=[-25000:24999]/50000*fs;
目的是 横坐标 从-0.5fs到0.5fs的范围上取 50000个点;

由于是 采样,根据时域采样定理,被采样信号的 最高频率 顶多=0.5fs。

这是利用 离散信号 做fft,来做模拟信号的谱分析。
FFT是从0到50000-1共50000点离散,对应0~2pi,对应模拟频率0~fs;
但是模拟信号频谱从 0~0.5fs;0~-0.5fs与之偶对称的,所以用到fftshift

另外,这段程序虽然运行通过,但是有2个问题:
Fs 与 采样间隔0.0001与 yw=2*pi/40000*abs(fftshift(yk))中的40000[应该是Fs才对。2*pi/40000应该是采样间隔] 与 fft的点数50000 矛盾。另外你实际采样的点数为40001点;

自己算一下 sinc(t*200) 理论上的频谱及带限范围,与你的图形不同的。帮你改一下

t=-2:0.0001:2;
y1=sinc(t*200);
figure(1)
plot(t,y1) %画出原始信号
title('已知信号')
xlabel('时间:s')
ylabel('幅度')
grid
xlim([-0.1,0.1])
%%信号频谱
T=0.0001; %采样间隔
t1=-2:T:2;
y11=sinc(t1*200);
yk=fft(y11);%做FFT的点数同y11的长度
yw=T*abs(fftshift(yk)); %频谱搬移
fs=1/T;fw=[-20000:20000]/40001*fs;%或fw=linspace(-0.5*fs,0.5*fs,length(y11));
figure(2)
plot(fw,yw)
title('已知信号的频谱')
xlabel('频率:hz')
ylabel(