首页 > 解决方案 > 如何使用 Python 将正弦波转换为方波(0 或 1)?

问题描述

我看到了这张图,想知道如何使用 Python 将正弦波转换为方波。哪个图书馆会帮助我?如何实现“adaptiveThreshold”和“filterSignal”?请告诉我在哪里寻找?

在此处输入图像描述

标签: python

解决方案


我在 python 中实现了一个简单的例子:

import numpy as np
import matplotlib.pylab as plt

num_cyc, n_samples = 10, 401
x = np.linspace(-np.pi, np.pi * num_cyc, n_samples)
y = np.sin(x)
y_ = np.convolve(y, np.ones(num_cyc*20)/(num_cyc*20), mode='same')

thres = 0.01
y_sq = [1 if n >= thres else -1 for n in y_]

plt.figure(figsize=(10,5))
plt.plot(x, y, "-k")
plt.plot(x, y_, "--b")
plt.plot(x, y_sq, "-r")

plt.savefig("sine2step.jpg", dpi=300)

该代码首先使用 numpy 生成一个正弦波,然后使用 matplotlib 绘制它。自适应阈值需要一个宽滑动窗口,以便生成的“自适应阈值”在多个周期 ( y_) 上取平均值。

然后使用该自适应阈值(通常与阈值组合thres)来检查您的原始信号y是低于还是高于y_并相应地为生成的阶跃函数分配一个值y_sq

在此处输入图像描述


推荐阅读