如何使用Python统计方波信号的上升沿数量
Python统计方波信号上升沿数量的实现方法
你生成的是5Hz理想方波,1秒时长内理论上有5个上升沿,可通过以下方法实现统计:
注:你的代码存在小笔误,导入matplotlib时命名和后续使用不一致,将
import matplotlib.pyplot as plot改为import matplotlib.pyplot as plt即可正常运行。
方法1:直接差分法(最适合理想方波)
原理:上升沿的本质是信号从低电平跳变到高电平,相邻采样点的差值会出现明显正值,统计这类正值的数量即可得到上升沿总数。
from scipy import signal import numpy as np import matplotlib.pyplot as plt t = np.linspace(0, 1, 1000, endpoint=True) # 生成方波信号 sq_signal = signal.square(2 * np.pi * 5 * t) # 统计上升沿 diff_signal = np.diff(sq_signal) # 理想方波跳变差值为2,设置阈值>1可过滤微小噪声干扰 rise_count = np.sum(diff_signal > 1) print(f"上升沿数量:{rise_count}") # 绘图 plt.plot(t, sq_signal) plt.show()
运行后输出结果为上升沿数量:5,和5Hz方波的理论上升沿数量一致。
方法2:过零检测法(兼容带偏置的方波)
如果你的方波不是±1输出(比如是0到1的方波),可以用正方向过阈值的逻辑统计,阈值设置为方波高低电平的中间值即可:
# ±1方波的高低电平中间值为0 cross_pos = np.where((sq_signal[:-1] < 0) & (sq_signal[1:] >= 0))[0] rise_count = len(cross_pos)
你生成的方波波形如下:
内容的提问来源于stack exchange,提问作者AnonymousScientificUser
相关产品推荐
相关产品推荐

