24小时热门版块排行榜    

Znn3bq.jpeg
查看: 2305  |  回复: 18
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

xunking

银虫 (初入文坛)

[求助] FFT算法的一个问题请教

以下是matlab 的help fft 文档中的实例,有一个问题不太明白,望不吝指教:
Fs = 1000;                    % Sampling frequency
T = 1/Fs;                     % Sample time
L = 1000;                     % Length of signal
t = (0:L-1)*T;                % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
y = x + 2*randn(size(t));     % Sinusoids plus noise
plot(Fs*t(1:50),y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')

NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2);

% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2)))
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')

请问这里"Y = fft(y,NFFT)/L;”
为什么是除以L,而不是除以NFFT。
L点x序列补零后使之成为长NFFT点的序列,由IFFT的定义应该是除以NFFT才对啊?但是实验情况确实除以L,不知道是不是MATLAB里补零后FFT的定义不一样了。

我实验中验证了,确实应该除以L而不应该是NFFT。
(NFFT=2^15长度的FFT变换,fft除以长度L,幅值才大概是对的大概,除以NFFT反而不对,实验如下:
n=1:1024;
LL=1024;
Vs=sin(2*pi*100*n/1000);
y=fft(Vs,2^15)/LL;%y=fft(Vs,2^15)/2^15
figure;plot((1:2^15)/2^15*1000,2*abs(y))
)
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

noreason2

新虫 (著名写手)

引用回帖:
5楼: Originally posted by xunking at 2012-04-23 16:10:03:
DFT变换后频谱有正负分量,他们的幅值恰好共轭对称,全部折算为正频分量才具有实际意义!
关于这个问题的理解欢迎继续讨论交流!

不是吧,DFT的X(k),k取0~(N-1)啊,这可不是普通的FT啊
9楼2012-04-23 22:19:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 19 个回答

noreason2

新虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
xunking: 金币+5, 有帮助, 谢谢 2012-04-23 16:04:23
xunking: 金币+8, ★★★很有帮助 2012-04-25 18:58:08
虽然用FFT算出的点由于填0的原因数量多了,但是只有前L点有效,所以应该除以L。看看这篇论文:
2楼2012-04-23 13:11:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

afu2007

铁杆木虫 (职业作家)

请教:
plot((1:2^15)/2^15*1000,2*abs(y))
这条语句里面为什么是2*abs(y),而不是abs(y)
3楼2012-04-23 13:20:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xunking

银虫 (初入文坛)

引用回帖:
2楼: Originally posted by noreason2 at 2012-04-23 13:11:54:
虽然用FFT算出的点由于填0的原因数量多了,但是只有前L点有效,所以应该除以L。看看这篇论文:
<FFT补零充位问题的补充>

谢谢你的回复。
我大概理解了,这确实是一个好问题,可能很多人在学习中忽略了。我觉得应该如下理解:
从帕斯瓦尔定理,即sum(Vs(n)^2)=sum(|y(k)|^2)/NFFT,当补充零点后每个转换的“幅值”确实应该下降的。因为补零后频域更密集的采样,如果原来对应的幅值仍然不变的话,能量就不守恒了。所以补零后由y(k)计算的信号幅值不是原始信号幅值,其中需要一个比例的变换。
所以正确的理解过程应该如下:
n=1:1024;
LL=1024;
Vs=sin(2*pi*100*n/1000);
y=fft(Vs,2^15)/2^15
y_real=y*2^15/LL %增加一个比例变换
figure;plot((1:2^15)/2^15*1000,2*abs(y_real))
4楼2012-04-23 16:00:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 已调剂 +18 柴郡猫_ 2026-04-09 19/950 2026-04-09 22:10 by 柴郡猫_
[考研] 301求调剂 +3 XYPLR 2026-04-05 5/250 2026-04-09 20:55 by lbsjt
[考研] 材料化工总分334求调剂 +16 Riot2025 2026-04-08 17/850 2026-04-09 20:19 by maddjdld
[考研] 287求调剂 +12 Fnhc 2026-04-07 18/900 2026-04-09 19:46 by vgtyfty
[考研] 348求调剂 +3 candyyyi 2026-04-09 3/150 2026-04-09 17:20 by 段伟艳
[考研] 291求调剂 +7 关忆北. 2026-04-09 8/400 2026-04-09 15:17 by 探123
[考研] 调剂 +12 月@163.com 2026-04-08 12/600 2026-04-09 14:27 by rl1980
[考研] 283电子信息求调剂 +4 三石WL 2026-04-08 4/200 2026-04-09 10:21 by wp06
[考研] 一志愿鲁东大学071000生物学学硕初试分数276求调剂 +3 慕绝cc 2026-04-09 3/150 2026-04-09 09:57 by liuhuiying09
[考研] 085404,334分,求调剂 +5 sunjie8888 2026-04-08 8/400 2026-04-09 07:26 by sunjie8888
[考研] 285求调剂 +12 AZMK 2026-04-05 18/900 2026-04-08 20:43 by 逆水乘风
[考研] 一志愿郑州大学085600求调剂 +21 吃的不少 2026-04-05 24/1200 2026-04-08 16:47 by sunhuadong
[考研] 307分材料专业求调剂 +12 Hll胡 2026-04-05 12/600 2026-04-08 16:33 by luoyongfeng
[考研] 312求调剂 +4 Say Never 2026-04-04 4/200 2026-04-08 08:41 by barlinike
[考研] 301求调剂 +18 121. 2026-04-04 18/900 2026-04-07 17:49 by 蓝云思雨
[考研] 一志愿西电085401求调剂 +4 sunw1306 2026-04-07 4/200 2026-04-07 16:40 by 啵啵啵0119
[考研] 一志愿华中农业大学0710(A)初试329分 求调剂 +5 一名26考研生 2026-04-04 5/250 2026-04-07 08:54 by 18828373951
[考研] 一志愿华北电力大学(北京),材料科学与工程学硕265,求调剂 +11 yelck 2026-04-03 12/600 2026-04-04 19:52 by dongzh2009
[考研] 305求调剂 +3 77Qi 2026-04-03 3/150 2026-04-03 23:01 by qzxyhcsy
[考研] 考研调剂 +3 Draa 2026-04-03 3/150 2026-04-03 17:37 by hgwz7468
信息提示
请填处理意见