【问题标题】:Generating Pulse Amplitude Modulation using sine wave and PWM signal using python使用 python 使用正弦波和 PWM 信号生成脉冲幅度调制
【发布时间】:2018-12-04 01:41:12
【问题描述】:

我正在使用以下代码来生成脉冲幅度 通过使用正弦波和之间的布尔运算调制信号 脉冲宽度调制(PWM)信号。我正在使用矢量化方法 以便在 PWM 信号低(零或假)的情况下获得零值,并且 正弦波,其中 PWM 值很高(真或一)。请参考 下面是所需输出的屏幕截图。除此之外怎么做 当我遇到问题时,您可以自动生成 PAM 波 x 值的间距?

        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() 

【问题讨论】:

    标签: python numpy matplotlib pwm


    【解决方案1】:

    当删除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() 
    

    【讨论】:

    • 认真的重要性:很好的答案,1+ 投票赞成。
    猜你喜欢
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 2021-09-08
    • 2018-06-11
    • 2017-10-26
    相关资源
    最近更新 更多