声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1058|回复: 2

[FFT] 为什么这段校正的程序的结果不是想要的?

[复制链接]
发表于 2008-1-14 10:33 | 显示全部楼层 |阅读模式

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

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

x
这是从论坛里面下载的一段程序,自己改了改,不过结果却不对,不知道是什么原因
fs=100;
N=1024;
PHI=pi/3;
Ampl=1;
Freq=11.9;                                        %cycles in record
TV=(0:N-1)/fs;                                    %时间矢量
DatVec=Ampl*cos(Freq*TV*2*pi+PHI);                %被分析信号
FV=fft(DatVec)/N*2;                               %傅立叶变换,矩形窗
df=fs/length(FV);                                 %频率分辨率
w=(0:N-1)*df;                                     %频率横坐标
figure
subplot(221);plot(TV,DatVec);
subplot(222);plot(w(1:N/2),abs(FV(1:N/2)));       %
grid on
[MV,MI]=max(abs(FV));                             %找到最高的那个谱线
%加矩形窗的解析校正--1
FreqShift1=SpecCorr(FV,MI,N,1)

计算结果:
FreqShift1 =
   -0.1440
0114.JPG
从图中看,FreqShift1 =-0.01才对啊,这个是什么原因?

SpecCorr.m

4.19 KB, 下载次数: 10

回复
分享到:

使用道具 举报

发表于 2008-1-14 14:08 | 显示全部楼层
程序中没有看出有什么错,而是楼主对于VibrationMaster的原程序还没有了解。VibrationMaster给出的函数SpecCorr,返还时为变量PeakShift,该PeakShift不是频率值,而是最大值位置的位移值。在楼主的程序中,最大值的位置在MI中,所以修正后最大值的位置在
MI+FreqShift1
该位置对应的频率为
(MI-1+FreqShift1)*df=11.9
与程序设置值完全一致。

[ 本帖最后由 songzy41 于 2008-1-14 14:14 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2008-1-15 09:44 | 显示全部楼层
:@) ,我也知道是自己的理解出现了点偏差,谢谢宋老师的指点。

VibrationMaster在那个文章里面说FreqShift的单位是FFT的分辨率,我把这个给忽略了,以为直接就是偏差呢,就直接用11.9141-0.144,
可以用11.9141-0.144/1024*100=11.9000
非常感谢您:victory:
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-5 14:59 , Processed in 0.071554 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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