基于matlab的FFT分析


离散傅里叶变换DFT的计算公式如下,FFT为DFT的一种快速算法。
在这里插入图片描述

matlab代码

%===============
%   N = 64时
%===============
fs = 100;   %采样频率
N = 64;    %数据点数
n = 0 : N-1;
% 抽样间隔Ts=1/fs,所以t=n*Ts=n/fs为时间序列
t = n / fs; %时间序列
x = 0.5*sin(2*pi*15*t) + 2*sin(2*pi*40*t);
y = fft(x, N);  %对信号进行64点快速傅里叶变换
mag1 = abs(y);   %求傅里叶变换后的振幅
% 在fs(100Hz)内做N(64)点FFT,频率分辨率为fs/N=1.5625
f = n * fs / N; %频率序列
subplot(2,2,1);
plot(f, mag1,'LineWidth',1);   %绘制随频率变化的振幅
xlabel('频率/Hz');
ylabel('振幅');
title('N=64');
subplot(2,2,2);
plot(f(1:N/2), mag1(1:N/2)); %绘制奈奎斯特频率之间随频率变化的振幅
xlabel('频率/Hz');
ylabel('振幅');
title('N=64');

%===============
%   N = 1024时
%===============
fs = 100;   %采样频率
N = 1024;    %数据点数
n = 0 : N-1;
% 抽样间隔Ts=1/fs,所以t=n*Ts=n/fs为时间序列
t = n / fs; %时间序列
x = 0.5*sin(2*pi*15*t) + 2*sin(2*pi*40*t);
y = fft(x, N);  %对信号进行1024点快速傅里叶变换
mag2 = abs(y);   %求傅里叶变换后的振幅
% 在fs(100Hz)内做N(1024)点FFT,频率分辨率为fs/N=0.097656
f = n * fs / N; %频率序列
subplot(2,2,3);
plot(f, mag2,'LineWidth',1);   %绘制随频率变化的振幅
xlabel('频率/Hz');
ylabel('振幅');
title('N=1024');
subplot(2,2,4);
plot(f(1:N/2), mag2(1:N/2)); %绘制奈奎斯特频率之前随频率变化的振幅
xlabel('频率/Hz');
ylabel('振幅');
title('N=1024');

在这里插入图片描述
FFT结果具有对称性,通常我们只用前半部分的结果,也就是小于采样频率一半的结果。同时,只有在采样频率一半以内、具有一定幅值的信号频率才是真正的信号频率。
在这里插入图片描述
原信号为
0.5 s i n ( 2 ∗ p i ∗ 15 ∗ t ) + 2 s i n ( 2 ∗ p i ∗ 40 ∗ t ) 0.5sin(2*pi*15*t) + 2sin(2*pi*40*t) 0.5sin(2pi15t)+2sin(2pi40t)
f1=15Hz,f2=40Hz,最高频率fm为40Hz,根据奈奎斯特抽样定理,抽样频率fs必须大于等于原信号最高频率的2倍,即 fs>=2fm。本例中,fs取100Hz。

说明(一)

由上图可以看出,N越大,频谱就越逼真。且只有在f1=15Hz,f2=40Hz时,其模值才会出现峰值,而其他频率点上模值接近于0。
我们分别来查看N=64和N=128时15Hz和40Hz处的模值。频率f = n * fs / N,所以n = f * N / fs。
N = 64,f1 = 15Hz时n = 15 * 64 /100 =9.6,向上取整加1为11
在这里插入图片描述
N = 64,f2 = 40Hz时n = 40 * 64 /100 =25.6,向上取整加1为27
在这里插入图片描述
N = 1024,f1 = 15Hz时n = 15 * 1024 /100 =153.6,向上取整加1为155
在这里插入图片描述
N = 1024,f2 = 40Hz时n = 40 * 1024 /100 =409.6,向上取整加1为411
在这里插入图片描述

说明(二)

另外,细心的读者会发现(图中有标注)N=1024时频率比N=64时更接近50Hz。这是由于N=64时的频率分辨率为fs / N = 100 / 64 = 1.5625,而N = 1024时的频率分辨率为fs / N = 100 / 1024 = 0.097656,N = 1024时的频率分辨率明显高于N = 64时的频率分辨率。

  • 7
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在轴承故障诊断中,基于MatlabFFT(快速傅里叶变换)方法可以用于获取轴承的包络谱。该方法能够帮助我们识别并分析轴承故障的特征频率。 首先,我们需要获取轴承的振动信号数据。这些数据可以通过加速度传感器等装置获得。然后,利用Matlab进行数据导入和预处理,确保数据的准确性和完整性。 接下来,通过FFT算法将时域信号转换为频域信号。这样可以将振动信号转化为频谱图。其中,包络谱表示了振动信号的幅值与频率之间的关系。 为了进行轴承故障诊断,我们需要从包络谱中提取出故障特征频率。这些特征频率通常与轴承的故障类型和严重程度有关。例如,滚珠轴承可能出现内圈和外圈的故障频率,而滚针轴承一般会有滚珠极点频率。 在Matlab中,我们可以使用峰值检测算法来寻找包络谱中的主要频率峰值。这些峰值对应着故障特征频率,可以用于诊断轴承的故障类型。 最后,根据故障特征频率的分析结果,我们可以判断轴承是否存在故障,并确定其严重程度。这些分析结果可以帮助我们制定维修计划,避免发生更严重的故障并提高轴承的寿命。 总而言之,基于MatlabFFT轴承故障诊断方法利用了快速傅里叶变换和包络谱分析技术,能够有效地分析轴承振动信号,提取特征频率并判断轴承的故障类型和严重程度,从而有助于轴承的维修和保养工作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值