Python 信号处理——包络分析

Python 信号处理——包络分析


前言

设备在正常状态下,其输出的信号主要为工频或者噪声。当设备出现故障时,设备正常状态下的信号会被故障调制,输出复合信号。由于故障信号大多相对为低频信号,因此在设备信号分析中,包络分析常用于故障特征的提取,即包络分析可提取复合信号中的低频调制部分。
包络分析的方法有多种,其中基于希尔伯特(hilbert)的方法最为常用,本篇主要基于hilbert变换来提取信号的包络谱


二、使用步骤

1.主函数

代码如下(示例):

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt


def Envelop(x, fs):
    xh = signal.hilbert(x)
    xe = np.abs(xh)
    xe = xe - np.mean(xe)
    xh3 = np.fft.rfft(xe) / len(xe)
    mag = abs(xh3) * 2
    fre = np.linspace(0, fs / 2, int(len(xe) / 2 + 1))
    return mag, fre

2.demo

代码如下(示例):

	w = 5
	z = 30
	fs = 1024
	fsw = 5
	time = 1	
	f = w * z
	t = np.linspace(0, time - 1 / fs, int(time * fs))
	x = (1 + 1 * np.sin(2 * np.pi * 20 * t)) * \
		np.sin(2 * np.pi * f * t)
	amp, fre = Envelop(x, fs)
	plt.subplot(2, 1, 1)
	plt.plot(t, x)
	plt.ylabel('Amplitude')
	plt.xlabel('time')
	plt.subplot(2, 1, 2)
	plt.plot(fre, amp)
	plt.ylabel('Amplitude')
	plt.xlabel('Frequency')
	plt.show()

总结

如果信号是由低频加高频线性叠加组成,那么包络分析有可能会产生错误的分析结果,这点在实际使用过程中需要注意。欢迎各位同行交流,后续有啥想实现的信号处理功能,请在下方评论区留言,或者关注公众号(PS提现更新):不说话上代码
在这里插入图片描述

  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不说话上代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值