您好,欢迎来到百家汽车网。
搜索
您的当前位置:首页Simulink下的频谱分析方法及matlab的FFT编程

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

来源:百家汽车网



Simulink下的频谱分析方法实现功能:

信号发生器一个信号输入,实时显示其频谱分析

调用模块:

信号源(SignalProcessing Blockset -> Signal Processing Sources -> Sine Wave

Tip1:不能用连续的信号源

频谱观察窗(SignalProcessing Blockset -> Signal Processing Sources -> SpectrumScope

Tip2: 不能用普通的观察窗

Tip3:必须构上设置中的Bufferinput. Buffer size 越大越精细。

Tip4: 剩下的tips读帮助。

连接关系:

如下图所示

原理框图实验结果:

输出示意图

------------------------------

------------------------------

实现功能:



Workspace读取一组数,进行频谱分析

调用模块:

FromWorkspace

Tip1: 采样时间不能用0,即必须使用离散模式

Tip2: 从其他模型中Scope保存出来的“Structurewith time”的数据可以直接用

频谱观察窗(同上一功能)

------------------------------

------------------------------

实现功能:

dSPACE读取一组数,进行频谱分析

实现方法:

1.dSPACE读数保存成文件,数据导入Workspace(过程略)

2.采用从其他模型的Scope保存数据为“Structurewith time”的方式构建一个结构变量ScopeData1

3.使用以下代码将dSPACE数据dscapture拷贝到结构变量ScopeData1

%%

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

fori=1:19157

ScopeData1.signals.values(:,:,i)=dscapture.Y.Data(i);

end

%%

4.采用下图中的模型进行频谱分析

实验结果:

通过以上方法对单轴压电加速度传感器进行灵敏度分析,下图分别为采用dSPACE和直接利用示波器分析

的结果对比。



结果分析:

波形吻合,采用dSPACE测试时噪声的分贝减小了25dB

310Hz370Hz410Hz出现异常尖峰

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);%作正弦信号的时域波形
ylabel('y');
grid; xlabel('t');

%进行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[xminxmax 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);
figure(1); subplot(236); plot(ti,magx); ti=[0:length(xifft)-1]/fs;

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)');
title('矩形波功率谱'); grid; %求对数谱 ylabel('功率谱');

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;





因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baijiahaobaidu.com 版权所有 湘ICP备2023023988号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务