《Matlab实现FFT变换.doc》由会员分享,可在线阅读,更多相关《Matlab实现FFT变换.doc(6页珍藏版)》请在三一文库上搜索。
1、Matlab实现FFT变换Matlab实现FFT变换(单边谱及双边谱)以前对于Fourier Transform从来没有细究,不管在 LabVIEW还是Matlab里都有现成的FFT(快速Fourier Transform)函数,输入相应的参数就可以了。在Matlab下y=fft(x, nfft);x为输入nfft为快速傅立叶变换的点数LabVIEW下,同样输入x及变换的点数,还有一个布尔控制,是否shift?下面的例子,先进行fourier transform,即双边谱程序代码fs=100;%设定采样频率N=128;n=0:N-1;t二n/fs;f0=10;%设定正弦信号频率%生成正弦信号x
2、=si n(2*pi*f0*t);figure(1);subplot(231);plot(t,x);%作正弦信号的时域波形xlabel('t');ylabel('y');title('正弦信号y=2*pi*10t时域波形');grid;%进行FFT变换并做频谱图y二fft(x,N);% 进行 fft 变换mag二abs(y);% 求幅值f=(0:le ngth(y)-1)'*fs/le ngth(y);% 进行对应的频率转换 figure(1);subplot(232);plot(f,mag);% 做频谱图axis(0,100,0,80)
3、;xlabel('频率(Hz)');ylabel('幅值');title('正弦信号 y=2*pi*10t 幅频谱图 N=128');grid;%求均方根谱sq=abs(y);figure(1);subplot(233);plot(f,sq);xlabel('频率(Hz)');ylabel('均方根谱');title('正弦信号y=2*pi*10t均方根谱');grid;%求功率谱power=sq.A2;figure(1);subplot(234);plot(f,power);xlabel('
4、;频率(Hz)');ylabel('功率谱');title('正弦信号y=2*pi*10t功率谱');grid;%求对数谱ln=log(sq);figure(1);subplot(235);plot(f,ln);xlabel('频率(Hz)');ylabel('对数谱');title('正弦信号y=2*pi*10t对数谱');grid;%用IFFT恢复原始信号xifft二ifft(y);magx二real(xifft);ti=0:le ngth(xifft)-1/fs;figure(1);subplot(2
5、36);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的正弦信号波形'); grid;下面进行单边谱计算:程序代码fs=100;%设定采样频率N=128;n=0:N-1;t二n/fs;fO=1O;%设定正弦信号频率%生成正弦信号x=si n(2*pi*f0*t);figure(1);subplot(231);plot(t,x);%作正弦信号的时域波形xlabel('t');ylabel('y');title('正弦信号y=2*pi*10t时域波形&
6、#39;);grid;%进行FFT变换并做频谱图y=fft(x,N);% 进行 fft 变换mag=abs(y);% 求幅值m=le ngth(y);f=(0:m/2-1)'*fs/m;%进行对应的频率转换figure(1);subplot(232);plot(f,mag(1:m/2);% 做频谱图axis(0,100,0,80);xlabel('频率(Hz)');ylabel('幅值');title('正弦信号 y=2*pi*10t 幅频谱图 N=128');grid;%求均方根谱sq=abs(y);figure(1);subplot(
7、233);plot(f,sq(1:m/2);xlabel('频率(Hz)');ylabel('均方根谱');title('正弦信号y=2*pi*10t均方根谱');grid;%求功率谱 power二sq42;figure(1);subplot(234);plot(f,power(1:m/2);xlabel('频率(Hz)');ylabel('功率谱');title('正弦信号y=2*pi*10t功率谱');grid;%求对数谱ln=log(sq);figure(1);subplot(235);plot(f,l n(1:m/2);xlabel('频率(Hz)');ylabel('对数谱');title('正弦信号y=2*pi*10t对数谱');grid;%用IFFT恢复原始信号xifft二ifft(y);magx二real(xifft);ti=0:le ngth(xifft)-1/fs;figure(1);subplot(236);plot(ti,magx);xlabel('t');ylabel('y');title('通过IFFT转换的正弦信号波形');grid;