sdf4940 发表于 2010-2-3 13:57

关于fft变换后的频率问题

clear all
t=
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的地方才有纵坐标数值,请问原因是什么

dsfire 发表于 2010-2-3 22:17

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('幅值');

sdf4940 发表于 2010-2-3 22:24

很感谢!大概看明白了
plot(F(1:N/2),out(1:N/2));
-----------------
关于这个地方还有个小小疑问,就是为什么是N/2而不是N

dsfire 发表于 2010-2-5 22:35

回复 板凳 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]
查看完整版本: 关于fft变换后的频率问题