Simulink下的频谱分析方法及matlab的FFT编程

2025-04-27

Simulink下的频谱分析方法

实现功能:

信号发生器一个信号输入,实时显示其频谱分析 调用模块:

信号源(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中 %%

ScopeData1.time=[0:0.0001:1.9156]; %纯粹为占位,19157为dSPACE保存数据长度 for i=1:19157

ScopeData1.signals.values(:,:,i)=dscapture.Y.Data(i); 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]);%控制矩阵横轴纵轴范围,axis[xmin xmax ymin ymax] 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: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; %求功率谱 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:0.1: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;


Simulink下的频谱分析方法及matlab的FFT编程.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:古诗运用复习题[1]

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219