如何绘制递减波形曲线?或者说递减sin图形

需求示意

如图,我想要的是一个能递减的波形图,有没有对应的数学公式或者算法思路?

实际需求是这样的

希望实现音频可视化为波形图,当有音频输入的时候,根据音量大小,从中间往两边递减

这个不重要啦

重要的是,想求知如何用数学公式计算这样的图形,搜索过很多关键词都没找到答案 (弹性、spring、bounce、频谱、振动 )请知道的朋友给点建议哈,感谢

阅读 1.1k
评论
    2 个回答

    使用合适的正态和余弦函数就可以。matplotlib代码如下:

    import numpy as np
    import matplotlib.pyplot as plt
    
    
    def normfun(x, mu, sigma):
        pdf = np.exp(-((x - mu) ** 2) / (2 * sigma ** 2)) / (sigma * np.sqrt(2 * np.pi))
        return pdf
    
    
    plt.xlim((-10, 10))
    plt.ylim((-2, 2))
    
    x = np.linspace(-10, 10, 200) 
    y = 10 * np.cos(x / (0.2 * np.pi)) * normfun(x, 0, 5)
    plt.plot(x, y, color='r', linewidth=2, alpha=0.5)
    
    ax = plt.gca()
    ax.spines['right'].set_color('none')
    ax.spines['top'].set_color('none')
    ax.spines['bottom'].set_position(('data', 0))
    ax.spines['left'].set_position(('data', 0))
    
    plt.show()
    

    效果如图,不知道是不是你想要的?
    图片描述

      • 2.8k

      看起来。。。正态分布 * sin(x) 就是你要的。。。

        撰写回答

        登录后参与交流、获取后续更新提醒

        相似问题
        推荐文章