python - 使用 python 使用正弦波和 PWM 信号生成脉冲幅度调制
问题描述
我正在使用以下代码,以便通过使用正弦波和脉冲宽度调制(PWM)信号之间的布尔运算来生成脉冲幅度调制信号。我正在使用矢量化方法来获得 PWM 信号低的零值(零或假)和正弦波,其中 PWM 值很高(真或一)。请参阅下面的屏幕截图以获取所需的输出。除此之外,当我面临 x 值间距的问题时,您如何自动生成 PAM 波?
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
percent=50.0
TimePeriod=10.0 #Frozen Value Do not change
Cycles=10 #Frozen Value Do not change
dt=0.01 #Frozen Value Do not change
t=np.arange(0,Cycles*TimePeriod,dt);
pwm= t%TimePeriod<TimePeriod*percent/100
x=np.linspace(-10,10,10000) #Frozen Value Do not change
y=(np.sin(x))
y[(pwm =='False')] = 0 #Vectorisation for zero values
y[(pwm =='True')] = (y-pwm) # #Vectorisation for sine wave
plt.plot(t,y)
plt.ylim([-3,3])
plt.grid()
plt.show()
解决方案
当删除线y[(pwm =='True')] = (y-pwm)
(我不明白)并且不与字符串进行比较时,您会得到以下内容,这看起来很像所需的情节。
import numpy as np
import matplotlib.pyplot as plt
percent=40.0
TimePeriod=10.0
Cycles=30
dt=0.01
t=np.arange(0,Cycles*TimePeriod,dt);
pwm= (t%TimePeriod) < (TimePeriod*percent/100)
x=np.linspace(-10,10,len(pwm))
y=(np.sin(x))
y[pwm == 0] = 0
plt.plot(t,y)
plt.ylim([-3,3])
plt.grid()
plt.show()
推荐阅读
- node.js - MongoDB单个查询中的多个组
- java - 如何根据提供的值删除 CSV 文件中的内容?
- game-maker - 游戏制作者 lengthdir 内部实现
- javascript - 如何在 Angular 7 项目中使用外部 js 库函数?
- c++ - 为 Qt5 指定 OpenGL 桌面而不是 ES
- python - 试图比较两个列表,找到相等的值并将它们替换为另一个列表的索引,但它不起作用
- python - 平均几个时间序列和置信区间(带有测试代码)
- xcode - 带有嵌入式 StackView 问题的 ScrollView
- mysql - 左连接中的 MySQL 查询总和
- java - Java接口静态字段延迟初始化