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

发布于 2022-09-11 19:02:13 字数 315 浏览 24 评论 0

需求示意

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

实际需求是这样的

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

这个不重要啦

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

温柔一刀 2022-09-18 19:02:13

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

平定天下 2022-09-18 19:02:13

使用合适的正态和余弦函数就可以。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()

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文