声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1148|回复: 4

[FFT] 还是FFT频谱图的问题

[复制链接]
发表于 2008-3-15 21:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
MATLAB程序
clear
fs=1000 ;
k=1;
t=0:1/fs:0.6;
f1=300;

x=10*sin(2*pi*f1*t)
for n=64:64:2048
      n1(k)=n;
y=fft(x,n);
n=0:length(y)-1;
f=fs*n/length(y);
plot(f,abs(y))
[a,b]=max(abs(y));
z=f(b)-300
P3(k)=abs(z)
k=k+1;
end
plot(n1,P3)
我想问两个问题:
1.为什么刚开始64~200左右误差非常的大
2.为什么会出现振荡现象
谢谢了~
频率误差点图.JPG
回复
分享到:

使用道具 举报

发表于 2008-3-16 09:06 | 显示全部楼层
在程序中有一个较大的错误:
for n=64:64:2048
说明n是一个循环变量,从64变到2048,步长为64。但在循环之中又设
n=0:length(y)-1;
说明n是一个数组,所以循环变量已偏离了原有的设置了。
发表于 2008-3-16 09:36 | 显示全部楼层
我把程序修改一下如下
fs=1000 ;
k=1;
t=0:1/fs:0.6;
f1=300;
x=10*sin(2*pi*f1*t);
for n=64:64:2048
n1(k)=n;
y=fft(x,n);
m=0:length(y)-1;
f=fs*m/length(y);
plot(f,abs(y))
[a,b]=max(abs(y));
z=f(b)-300;
P3(k)=z;
k=k+1;
end
stem(n1,P3); grid;
作出的图看出,在不同的n下求出的最大值位置不在300Hz,这一点实际上是很明显的。当FFT后300Hz没有对应的谱线,最大值就会出现在300Hz的左边或右边。出现在左边相对应于图中的负值,右边为正值。如果学习一下有关频谱修正的知识,就不难理解,而且能计算出偏差值。
lj2a.jpg
发表于 2008-3-19 21:54 | 显示全部楼层
我个人认为用origin画图更好一些
发表于 2008-3-19 22:15 | 显示全部楼层
高啊,真是高啊
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-19 23:39 , Processed in 0.056697 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表