| 查看: 2149 | 回复: 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)) ) |
» 猜你喜欢
上海工程技术大学【激光智能制造】课题组招收硕士
已经有6人回复
带资进组求博导收留
已经有11人回复
自荐读博
已经有5人回复
求个博导看看
已经有16人回复
上海工程技术大学张培磊教授团队招收博士生
已经有4人回复
求助院士们,这个如何合成呀
已经有4人回复
临港实验室与上科大联培博士招生1名
已经有9人回复
写了一篇“相变储能技术在冷库中应用”的论文,论文内容以实验为主,投什么期刊合适?
已经有6人回复
最近几年招的学生写论文不引自己组发的文章
已经有11人回复
中科院杭州医学所招收博士生一名(生物分析化学、药物递送)
已经有3人回复
xunking
银虫 (初入文坛)
- 应助: 3 (幼儿园)
- 金币: 701
- 帖子: 25
- 在线: 77.2小时
- 虫号: 1069384
- 注册: 2010-08-04
- 性别: GG
- 专业: 信号理论与信号处理
11楼2012-04-24 07:12:09
noreason2
新虫 (著名写手)
- 应助: 3 (幼儿园)
- 金币: 3516.6
- 散金: 2784
- 红花: 3
- 帖子: 1138
- 在线: 301.1小时
- 虫号: 1372328
- 注册: 2011-08-19
- 性别: GG
- 专业: 模式识别
2楼2012-04-23 13:11:54
afu2007
铁杆木虫 (职业作家)
- 应助: 19 (小学生)
- 金币: 11222.7
- 散金: 32
- 红花: 1
- 帖子: 3561
- 在线: 729.8小时
- 虫号: 801526
- 注册: 2009-06-30
- 性别: GG
- 专业: 导航、制导与传感技术
3楼2012-04-23 13:20:35
xunking
银虫 (初入文坛)
- 应助: 3 (幼儿园)
- 金币: 701
- 帖子: 25
- 在线: 77.2小时
- 虫号: 1069384
- 注册: 2010-08-04
- 性别: GG
- 专业: 信号理论与信号处理
|
谢谢你的回复。 我大概理解了,这确实是一个好问题,可能很多人在学习中忽略了。我觉得应该如下理解: 从帕斯瓦尔定理,即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







回复此楼