您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > matlab > matlab的FFT函数介绍
matlab的FFT函数2010-04-2622:16相关语法:Y=fft(X)Y=fft(X,n)Y=fft(X,[],dim)Y=fft(X,n,dim)定义如下:相关的一个例子:Fs=1000;%采样频率T=1/Fs;%采样时间L=1000;%总的采样点数t=(0:L-1)*T;%时间序列(时间轴)%产生一个幅值为0.7频率为50HZ正弦+另外一个信号的幅值为1频率为120Hz的正弦信号x=0.7*sin(2*pi*50*t)+sin(2*pi*120*t);y=x+2*randn(size(t));%混入噪声信号plot(Fs*t(1:50),y(1:50))%画出前50个点title('SignalCorruptedwithZero-MeanRandomNoise')xlabel('time(milliseconds)')NFFT=2^nextpow2(L);%求得最接近总采样点的2^n,这里应该是2^10=1024Y=fft(y,NFFT)/L;%进行fft变换(除以总采样点数,是为了后面精确看出原始信号幅值)f=Fs/2*linspace(0,1,NFFT/2+1);%频率轴(只画到Fs/2即可,由于y为实数,后面一半是对称的)%画出频率幅度图形,可以看出50Hz幅值大概0.7,120Hz幅值大概为1.plot(f,2*abs(Y(1:NFFT/2+1)))title('Single-SidedAmplitudeSpectrumofy(t)')xlabel('Frequency(Hz)')ylabel('|Y(f)|')PS:前段时间,只是为了自己看明白,没有管太多,刚才上空间发现几位的留言,感觉惭愧。其实要掌握matlab中fft的用法,主要有两点注意的地方:1、从公式上看,matlab的fft序号是从1到N,但是绝大多数教材上是从0到N-1。2、Y=fft(x)之后,这个Y是一个复数,它的模值应该除以(length(x)2),才能得到各个频率信号实际幅值。
本文标题:matlab的FFT函数介绍
链接地址:https://www.777doc.com/doc-7027671 .html