python - 如何使用 Python 将正弦波转换为方波(0 或 1)?
解决方案
我在 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
。
推荐阅读
- python - 如何使用python从图像中提取文本或数字
- java - 当我在我的 Java Paint 程序中更改颜色时,整个颜色都会改变
- c# - 使用 Entity Framework Core 对属性允许的值添加约束
- javascript - 如何将任务添加到当前方法?
- c# - 基础数学程序抛出系统空异常
- reactjs - React 编写的应用程序中的状态信息通常存储在哪个库中?
- php - 在 laravel 的 AppServiceProvider 中使用身份验证
- html - 如何并排显示div元素
- ruby-on-rails - ActionController::Parameters 将整数转换为字符串
- python - Python concurrent.futures:ProcessPoolExecutor 无法工作