我有一个包含数字 ASK 类型开关键控正弦波变化的信号,其中会出现一些随机不相关的谐波,如图所示:
在目前的形式中,每个脉冲持续时间都是相同的,但情况并非总是如此。
我想计算每个脉冲持续时间。为此,我正在考虑将此信号转换为如下所示的方波信号:
我不确定此转换所需的不同步骤,但我有一些线索:
- 去除噪音 => 我认为的低通滤波器?
- 为了使信号介于 0 和幅度之间,我将信号与自身相乘
- 我应用魔法滤波器将信号转换为方波信号。
所以我的问题是:
- 我需要一个低通滤波器来消除噪音吗?
- 我需要什么样的滤波器才能将信号转换为方波信号?是否可以?
有关信息,我正在使用 Python 和 Numpy。
如果有任何其他方法可以计算序列中每个脉冲的持续时间,我愿意接受所有想法。
谢谢!
编辑:这是我的信号:
freq = 1000000
fs = int(2*freq) # sample rate
x = np.linspace(0, 10, fs)
noise1 = 0.01*np.sin(2*np.pi * 1*x) + 0.05*np.sin(2*np.pi * 1.5*x) + 0.04*np.sin(2*np.pi * 0.2*x)
noise2 = 0.1*np.sin(2*np.pi * 0.1*x) + 0.2*np.sin(2*np.pi * 1.8*x) + 0.1*np.sin(2*np.pi * 0.4*x)
realSignal = 2*np.sin(2*np.pi * freq*x)
sig = noise1
sig = np.append(sig, [realSignal, noise2, realSignal, noise1*noise2])