关于fft变换后的频率问题
clear allt=
y=sin(t)
z=fft(y)
plot(abs(z))
以上是问题的完整源码.如果abs(z)是表示y=sin(t)的频谱的话,显然w=1,则f=2*pi/w=2*pi,因此最后abs(z)应该只在横坐标1对应的坐标上才有纵坐标数值才对,但实际是横坐标为17.0000的地方才有纵坐标数值,请问原因是什么 w=1=2*pi*f f=1/(2*pi)
你的fs=1/0.01=100Hz N=10001
频率分辨率为ff=fs/N=0.009999
那么fft之后应该在第f/ff=1/(2*pi)/ff=15.917 也就是16处
若out=abs(z),那么就应该在out(17)处,也就是17处。因为矩阵out是从1开始的。
程序:
clc;
clear all;
t=;
y=sin(t);
z=fft(y);
N=length(t);
Fs=100;
f0=1/(2*pi);
F=(-1)*Fs/N;
out=abs(z);
figure(2)
plot(F(1:N/2),out(1:N/2));
title('幅频特性');
xlabel('频率');
ylabel('幅值'); 很感谢!大概看明白了
plot(F(1:N/2),out(1:N/2));
-----------------
关于这个地方还有个小小疑问,就是为什么是N/2而不是N
回复 板凳 sdf4940 的帖子
我觉得首先可以这样理解,由奈奎斯特定理可知道,信号的采样频率至少是最高频率的2倍,因此,所采样的信号也就是采样频率的二分之一,上面Fs=100,所能分辨的最高信号频率为50,那么F取1:N/2才具有实际意义。
也有下面的解释:
傅里叶变换后的幅值-频率图是以N/2为对称轴的,横坐标实际上为0:N-1,但为了让横坐标有物理意义,一般的将其频率0:Fs-1映射到0:N-1,Fs/2对应于N/2,因此就出现了FFT变换后的频谱图是关于奈奎斯特频率Fs/2对称的。
这个网址上有一些介绍:
http://hi.baidu.com/liuzhiliangl ... 88f2829e51469d.html
应该对你有帮助的!
页:
[1]