如何修改锯齿波函数,使其取值范围从0.15到0.18而非-1到1
调整锯齿波的取值范围到0.15-0.18
原signal.sawtooth()函数的输出范围默认是**[-1, 1],要将其映射到[0.15, 0.18],可以通过线性变换**实现:
- 先把原输出从[-1,1]归一化到[0,1]区间:
(sawtooth_value + 1) / 2 - 再将归一化后的值缩放并平移到目标区间:乘以区间长度(0.18-0.15=0.03),再加上最小值0.15
最终变换公式为:0.15 + (signal.sawtooth(np.pi * 4 * t) + 1) * 0.015
修改后的完整代码:
from scipy import signal import numpy as np import matplotlib.pyplot as plt t = np.linspace(0, 3, 500) # 应用线性变换,将锯齿波映射到0.15-0.18范围 sawtooth_scaled = 0.15 + (signal.sawtooth(np.pi * 4 * t) + 1) * 0.015 plt.plot(t, sawtooth_scaled) # 可选:手动设置y轴范围,确保显示完整 plt.ylim(0.14, 0.19) plt.show()
这样生成的锯齿波就会从0.15开始上升,峰值达到0.18,完全符合需求。
内容的提问来源于stack exchange,提问作者wosker4yan
相关产品推荐
相关产品推荐

