Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2008-04-20
年龄: 38
帖子: 16
声望力: 18 ![]() |
![]()
A common use of Fourier transforms is to find the frequency components
of a signal buried in a noisy time domain signal. Consider data sampled at 1000 Hz. Form a signal containing a 50 Hz sinusoid of amplitude 0.7 and 120 Hz sinusoid of amplitude 1 and corrupt it with some zero-mean random noise: 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)') It is difficult to identify the frequency components by looking at the original signal. Converting to the frequency domain, the discrete Fourier transform of the noisy signal y is found by taking the fast Fourier transform (FFT): 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)|') |
![]() |
![]() |
![]() |
#2 |
普通会员
注册日期: 2008-04-05
年龄: 83
帖子: 37
声望力: 18 ![]() |
![]()
数组y的长度为L(L=1000),并不是2的幂次,通过函数计算出L的最接近的2的幂次,这时求出nfft=1024,这满足对长为2的幂次的FFT要求。所以在FFT时把y补0使长为nfft,作nfft的FFT。
|
![]() |
![]() |
![]() |
|
|
![]() |
||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
[求助]simulink系统仿真后转化为c代码问题 | gekay | MATLAB论坛 | 3 | 2008-06-19 19:47 |
[求助]用什么模块观察和测量EVM?谢谢了 | chenxin_19344834 | MATLAB论坛 | 0 | 2008-05-23 15:13 |
[求助]插值数据不对!!! | ilikehere | MATLAB论坛 | 2 | 2008-05-06 19:41 |
【求助】Simulink问题 | liuxm0203 | MATLAB论坛 | 2 | 2008-03-22 10:31 |
Cleve's Corner: Professor SVD | TechnicalArticles | MATLAB技术文章 | 0 | 2008-01-06 16:32 |