Simulink下的频谱分析方法及matlab的FFT编程.pdf
实现功能:信号发生器一个信号输入,实时显示其频谱分析 调用模块:信号源(Signal Processing Blockset-Signal Processing Sources-Sine Wave)Tip 1:不能用连续的信号源 频谱观察窗(Signal Processing Blockset-Signal Processing Sources-Spectrum Scope)Tip 2:不能用普通的观察窗 Tip 3:必须构上设置中的 Buffer input.Buffer size 越大越精细。Tip 4:剩下的 tips 读帮助。连接关系:如下图所示 原理框图实验结果:输出示意图 实现功能:从 Workspace 读取一组数,进行频谱分析 调用模块:From Workspace Tip 1:采样时间不能用 0,即必须使用离散模式 Tip 2:从其他模型中 Scope 保存出来的“Structure with time”的数据可以直接用 频谱观察窗(同上一功能)实现功能:从 dSPACE 读取一组数,进行频谱分析 实现方法:1.从 dSPACE 读数保存成文件,数据导入 Workspace(过程略)2.采用从其他模型的 Scope 保存数据为“Structure with time”的方式构建一个结构变量ScopeData1 3.使用以下代码将 dSPACE 数据 dscapture 拷贝到结构变量 ScopeData1 中%=0:;%纯粹为占位,19157 为 dSPACE 保存数据长度 for i=1:19157 end%4.采用下图中的模型进行频谱分析 实验结果:通过以上方法对单轴压电加速度传感器进行灵敏度分析,下图分别为采用 dSPACE 和直接利用示波器分析的结果对比。结果分析:波形吻合,采用 dSPACE 测试时噪声的分贝减小了 25dB。在 310Hz、370Hz 和 410Hz 出现异常尖峰 Matlab 编程实现 FFT 实践及频谱分析 内容 1用 Matlab 产生正弦波,矩形波,以及白噪声信号,并显示各自时域波形图 2进行 FFT 变换,显示各自频谱图,其中采样率,频率、数据长度自选 3做出上述三种信号的均方根图谱,功率图谱,以及对数均方根图谱 4用 IFFT 傅立叶反变换恢复信号,并显示恢复的正弦信号时域波形图 源程序%*%FFT 实践及频谱分析%*%*%*1.正弦波*%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;%求功率谱 power=sq.2;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: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;%求功率谱 power=sq.2;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 恢复原始信号 xifft=ifft(y);magx=real(xifft);ti=0:length(xifft)-1/fs;figure(2);subplot(236);plot(ti,magx);xlabel(t);ylabel(y);title(通过 IFFT 转换的矩形波波形);grid;%*3.白噪声*%fs=10;%设定采样频率 t=-5:5;x=zeros(1,100);x(50)=100000;figure(3);subplot(231);plot(t(1:100),x);%作白噪声的时域波形 xlabel(t);ylabel(y);title(白噪声时域波形);grid;%进行 FFT 变换并做频谱图 y=fft(x);%进行 fft 变换 mag=abs(y);%求幅值 f=(0:length(y)-1)*fs/length(y);%进行对应的频率转换 figure(3);subplot(232);plot(f,mag);%做频谱图 xlabel(频率(Hz);ylabel(幅值);title(白噪声幅频谱图);grid;%求均方根谱 sq=abs(y);figure(3);subplot(233);plot(f,sq);xlabel(频率(Hz);ylabel(均方根谱);title(白噪声均方根谱);grid;%求功率谱 power=sq.2;figure(3);subplot(234);plot(f,power);xlabel(频率(Hz);ylabel(功率谱);title(白噪声功率谱);grid;%求对数谱 ln=log(sq);figure(3);subplot(235);plot(f,ln);xlabel(频率(Hz);ylabel(对数谱);title(白噪声对数谱);grid;%用 IFFT 恢复原始信号 xifft=ifft(y);magx=real(xifft);ti=0:length(xifft)-1/fs;figure(3);subplot(236);plot(ti,magx);xlabel(t);ylabel(y);title(通过 IFFT 转换的白噪声波形);grid;