24小时热门版块排行榜    

Znn3bq.jpeg
查看: 2320  |  回复: 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的回帖

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的回帖
查看全部 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的回帖

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的回帖

xunking

银虫 (初入文坛)

引用回帖:
3楼: Originally posted by afu2007 at 2012-04-23 13:20:35:
请教:
plot((1:2^15)/2^15*1000,2*abs(y))
这条语句里面为什么是2*abs(y),而不是abs(y)

DFT变换后频谱有正负分量,他们的幅值恰好共轭对称,全部折算为正频分量才具有实际意义!
关于这个问题的理解欢迎继续讨论交流!
5楼2012-04-23 16:10:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 271求调剂 +37 2261744733 2026-04-11 39/1950 2026-04-17 10:11 by 黑科技矿业
[考研] 22408 312求调剂 +23 门路摸摸 2026-04-14 25/1250 2026-04-16 21:21 by Art1977
[考研] 307中医考研调剂 +6 于以采蘩 2026-04-14 6/300 2026-04-16 16:20 by qingfeng258
[考研] 求调剂推荐 +8 小聂爱学习 2026-04-14 8/400 2026-04-16 07:22 by 学员JpLReM
[考研] 085801电气专硕272求调剂 +19 电气李 2026-04-13 21/1050 2026-04-15 13:37 by 黑科技矿业
[考研] 271求调剂 +35 2261744733 2026-04-11 41/2050 2026-04-14 15:36 by zs92450
[考研] 考研调剂 +13 长弓傲 2026-04-13 14/700 2026-04-14 14:44 by zs92450
[考研] 245求调剂 +6 冰糖橘?汽水 2026-04-13 10/500 2026-04-14 10:49 by jyl0317
[考研] 考研求调剂 +12 子木呐 2026-04-12 13/650 2026-04-14 01:19 by 王珺璞
[考研] 一志愿中南大学 0855 机械 286 求调剂 +11 不会吃肉 2026-04-12 11/550 2026-04-13 21:59 by bljnqdcc
[考研] 0854调剂 +10 长弓傲 2026-04-11 11/550 2026-04-13 10:38 by wp06
[考研] 0831一轮调剂失败求助 +10 小熊睿睿_s 2026-04-11 10/500 2026-04-12 22:43 by 长弓傲
[考研] 346分,工科0854求调剂,专硕 +6 moser233 2026-04-12 7/350 2026-04-12 22:11 by fqwang
[考研] 求调剂 +16 张番茄不炒蛋 2026-04-10 17/850 2026-04-12 13:58 by 熬夜成!
[考研] 291求调剂 +8 关忆北. 2026-04-11 8/400 2026-04-12 09:32 by 逆水乘风
[考研] 求调剂 +3 胃痉挛累了 2026-04-11 5/250 2026-04-11 14:13 by luhong1990
[考研] 农学0904 312求调剂 +6 Say Never 2026-04-10 6/300 2026-04-11 10:33 by wwj2530616
[考研] 一志愿985机械学硕380求调剂 +5 关关雎鸠10 2026-04-11 5/250 2026-04-11 10:10 by 知念。A
[考研] 263能源动力专硕求调剂 +4 加大号饭盒袋 2026-04-10 4/200 2026-04-10 20:52 by gong120082
[考研] 368求调剂 +3 17385968172 2026-04-10 3/150 2026-04-10 20:12 by 电子奥德彪
信息提示
请填处理意见