信号基本分析方法——频域分析

 二、频域分析

随机信号的时域分析只能提供有限的时域故障特征信息,故障发生时往往会引起信号频率结构的变化,而故障频率可以计算和预知,通过检测频率的幅值变换规律,就可以监控故障的发展过程。

频谱分析的理论基础是傅里叶变换,傅里叶变换包括傅里叶级数和傅里叶积分。

2.1 傅里叶级数

满足Dirichlet条件的周期信号X(t)可以分解为很多谐波分量之和:

x(t)=\frac{a_{0}}{2}+\sum_{n=1 }^{\infty }(a_{n}cosn\omega _{0}t+b_{n}sinn\omega _{0}t)

其中

傅里叶级数的概念是任何一个周期函数都可以采用无限个三角函数去拟合和描述。

时域分析和频域分析只是从不同侧面反映信号。

2.2 傅里叶变换

傅里叶变换对

为了计算机上实现信号的频谱分析,需要时域信号是离散的,且是有限长。

离散傅里叶变换公式为:

傅里叶分析的不足

变换之后的信号完全失去了时间信息,无法反映频率随时间的变化

傅里叶变换命令

y=fft(x)

y=fft(x,n)  n表示执行n点fft

若x的长度是2的整数次幂,函数fft运行速度最佳

傅里叶逆变换命令

y=ifft(x)

y=ifft(x,n)

例3. 对信号y=2sin(2\pi *30t)+sin(2\pi *80t)分别64点,256点进行fourier变换,并画出幅频图,采样频率256Hz。

clc
clear
close all
fs=256;
f1=30;
f2=80;
t=0:1/fs:1-1/fs;
p=length(t);
y=2*sin(2*pi*f1.*t)+sin(2*pi*f2.*t);
nfft1=64;
nfft2=256;
rfft1=fft(y,nfft1);
ys1=abs(rfft1);
fz1=(1:nfft1/2)*fs/nfft1;
figure(1)
subplot(211)
plot(fz1,ys1(1:nfft1/2)*2/p)
xlabel('频率/Hz')
ylabel('幅值')
title('64点fft')
rfft2=fft(y,nfft2);
ys2=abs(rfft2);
fz2=(1:nfft2/2)*fs/nfft2;
subplot(212)
plot(fz2,ys2(1:nfft2/2)*2/p);
xlabel('频率/Hz')
ylabel('幅值')
title('256点fft')

从上图可以看出,采样频率越多,频谱图效果越好

例4.对例3的信号进行fft逆变换,与原信号对比。

clc
clear
close all
fs=256;
f1=30;
f2=80;
t=0:1/fs:1-1/fs;
p=length(t);
y=2*sin(2*pi*f1.*t)+sin(2*pi*f2.*t);
nfft=256;
rfft=fft(y,nfft);
ys=abs(rfft);
fz=(1:nfft/2)*fs/nfft;
xifft=ifft(rfft);
realx=real(xifft);
ti=[0:length(xifft)-1]/fs;
yfft=fft(xifft,nfft);
myfft=abs(yfft);
p1=length(xifft);
figure(1)
subplot(221)
plot(t,y)
xlabel('时间/s')
ylabel('幅值')
title('原始信号')
subplot(222)
plot(fz,ys(1:nfft/2)*2/p);
xlabel('频率/Hz')
ylabel('幅值')
title('原始信号的fft')
subplot(223)
plot(ti,realx);
xlabel('时间/s')
ylabel('幅值')
title('逆变换后的信号')
subplot(224)
plot(fz,myfft(1:nfft/2)*2/p1);
xlabel('频率/Hz')
ylabel('幅值')
title('逆变换后得到的信号的fft')

例5 对西储大学的数据进行傅里叶变换

clc,
clear,
close all;

load 130.mat
x = X130_DE_time;
fs = 12000;
N=length(x);   %采样频率和数据点数
t = 0:1/fs:(N-1)/fs;
y = fft(x,N);
y1 = abs(y);
ayy = y1/(N/2);
ayy(1) = ayy(1)/2;
f = ((1:N)-1)*fs/N;
subplot(211)
tt=1000:1500;
plot(tt,x(tt),'color',[0/255,0/255,255/255],'LineWidth',0.8);
title('时域分析')
xlabel('时间(t)')
ylabel('m/s^2')
subplot(212)
plot(f(1:(N-1)/2),ayy(1:(N-1)/2),'color',[0/255,0/255,255/255],'LineWidth',0.8);
grid on
%xlim([0 500])
xlabel('频率[f]');
ylabel('Amplitude(m/s^2)')
title('频域分析')

参考资料:

[1] 时献江 《机械故障诊断及典型案例解析》

[2]张玲玲 《基于matlab的机械故障诊断技术案例教程》

[3]傅里叶分析之掐死教程(完整版)更新于2014.06.06 - 知乎 (zhihu.com)

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值