Matlab编程实现FFT变换.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab 编程实现 FFT 变换及频谱分析的程序代码 内容
1 .用 Matlab 产生正弦波 ,矩形波 ,以及白噪声信号,并显示各自时域波形图
2 .进行 FFT 变换,显示各自频谱图,其中采样率,频率、数据长度自选
3 .做出上述三种信号的均方根图谱 , 功率图谱 , 以及对数均方根图谱
4 .用 IFFT 傅立叶反变换恢复信号,并显示恢复的正弦信号时域波形图 源程序
%*************************************************************** **********%
FFT 实践及频谱分析
%***************************************************************
**********% %*************************************************************** **********% 正弦波 ****************% fs=100;% 设定采样频率 N=128;
n=0:N-1;
t=n/fs;
f0=10;% 设定正弦信号频率
% 生成正弦信号
x=sin(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:length(y)-1)'*fs/length(y);% figure(1); subplot(232); plot(f,mag);% 做频谱图 axis([0,100,0,80]); 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;
% 求功率谱均方根谱');
po wer=sq.A2; figure(1);
subplot(234);
plot(f,power); xlabel(' 频率(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:length(xifft)-1]/fs; figure(1);
subplot(236); plot(ti,magx); xlabel('t');
ylabel('y');
title(' 通过IFFT 转换的正弦信号波形');
grid;
%****************2. fs=10;% 设定采样频率
矩形波****************%
t=-5:0.1:5;
x=rectpuls(t,2);
x=x(1:99);
figure(2);
subplot(231);
plot(t(1:99),x);% xlabel('t'); ylabel('y'); title(' 矩形波时域波形 '); grid;
% 进行 FFT 变换并做频谱图 y=fft(x);% 进行 fft 变换 mag=abs(y);% 求幅值 f=(0:length(y)-1)'*fs/length(y);% figure(2);
subplot(232);
plot(f,mag);% 做频谱图 xlabel(' 频率 (Hz)');
ylabel(' 幅值 ');
title(' 矩形波幅频谱图 '); grid;
% 求均方根谱
sq=abs(y);
figure(2);
subplot(233);
plot(f,sq);
xlabel(' 频率 (Hz)'); ylabel(' 均方根谱 '); title(' 矩形波均方根谱 '); grid; % 求功率谱
po wer=sqA2;
figure(2); subplot(234);
plot(f,power);
xlabel(' 频率 (Hz)'); ylabel(' 功率谱 '); title(' 矩形波功率谱 ');
grid;
% 求对数谱
ln=log(sq);
figure(2); subplot(235);
plot(f,ln);
xlabel(' 频率 (Hz)'); ylabel(' 对数谱 '); title(' 矩形波对数谱 '); grid; %用 IFFT 恢复原始信号作矩形波的时域波形
进行对应的频率转换