| 查看: 2086 | 回复: 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人回复
小论文投稿
已经有3人回复
Bioresource Technology期刊,第一次返修的时候被退回好几次了
已经有9人回复
心脉受损
已经有3人回复
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有8人回复
申请2026年博士
已经有6人回复
请问哪里可以有青B申请的本子可以借鉴一下。
已经有5人回复
2025冷门绝学什么时候出结果
已经有7人回复
xunking
银虫 (初入文坛)
- 应助: 3 (幼儿园)
- 金币: 701
- 帖子: 25
- 在线: 77.2小时
- 虫号: 1069384
- 注册: 2010-08-04
- 性别: GG
- 专业: 信号理论与信号处理
15楼2012-04-24 12:51:04
noreason2
新虫 (著名写手)
- 应助: 3 (幼儿园)
- 金币: 3516.6
- 散金: 2784
- 红花: 3
- 帖子: 1138
- 在线: 301.1小时
- 虫号: 1372328
- 注册: 2011-08-19
- 性别: GG
- 专业: 模式识别
2楼2012-04-23 13:11:54
afu2007
铁杆木虫 (职业作家)
- 应助: 19 (小学生)
- 金币: 11217.7
- 散金: 32
- 红花: 1
- 帖子: 3560
- 在线: 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













回复此楼