曲线拟合正弦函数的python幂

发布于 2025-01-11 17:02:51 字数 647 浏览 0 评论 0原文

我想将信号拟合到余弦或正弦函数中:

参考信号:

sample_rate =1000
start_time = 0
end_time = 12

t = np.arange(start_time, end_time, 1/sample_rate)
amplitude = 12 #peak to peak
period = 60/15
n= 4

func =-amplitude* np.cos( np.pi *  t/period)**(2*n) +  amplitude

并且该信号必须拟合到模型中:

def fit(t, a, b, n):
    return -a * np.cos(np.pi* t/(b))**(2*int(n)) + a 

通过这样做:

params, pcov = scipy.optimize.curve_fit(fit, t, func, )
a, b, n = params

我得到:

params a = 11.9; b = 0.97 且 n=1

这根本不匹配...

在此处输入图像描述

I want to fit a signal into a cos or sine function:

reference signal:

sample_rate =1000
start_time = 0
end_time = 12

t = np.arange(start_time, end_time, 1/sample_rate)
amplitude = 12 #peak to peak
period = 60/15
n= 4

func =-amplitude* np.cos( np.pi *  t/period)**(2*n) +  amplitude

And this signal must fit into model:

def fit(t, a, b, n):
    return -a * np.cos(np.pi* t/(b))**(2*int(n)) + a 

By doing:

params, pcov = scipy.optimize.curve_fit(fit, t, func, )
a, b, n = params

I am getting:

params a = 11.9; b = 0.97 and n=1

This doesn't match at all...

enter image description here

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

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

发布评论

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

评论(1

霞映澄塘 2025-01-18 17:02:51

将这些建议放在一起给出以下结果:

def fit(t, a, b, n):
    return -a * np.abs(np.cos(np.pi * t / b))**(2*n) + a 

params, pcov = scipy.optimize.curve_fit(
    fit, t, func, bounds=(0, np.inf), p0=(1, 3.5, 1))

print(*params)

plt.plot(t, func)
plt.plot(t, fit(t, *params), '--');

它将恢复您的参数。 bounds 强制执行积极性,而 p0 为起点提供合理的建议,但拟合对此选择非常敏感。

putting these suggestions together gives the following:

def fit(t, a, b, n):
    return -a * np.abs(np.cos(np.pi * t / b))**(2*n) + a 

params, pcov = scipy.optimize.curve_fit(
    fit, t, func, bounds=(0, np.inf), p0=(1, 3.5, 1))

print(*params)

plt.plot(t, func)
plt.plot(t, fit(t, *params), '--');

which recovers your parameters. the bounds enforces positivity, while the p0 gives a reasonable suggestion for a starting point, but fitting is very sensitive to this choice.

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