Matlab编程实现FFT变换.

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 恢复原始信号作矩形波的时域波形

进行对应的频率转换

相关文档
最新文档