python中惩罚的代码_python或matlab中的惩罚插值

我有一个损失函数L和2个信号f(t),g(t)。

我想找到最小化的函数s:L(f(t)-g(t+s(t)))+lambda*integral(s''(t))

理想情况下,s应该是多项式或样条曲线。在

下面是我编写的启动问题的代码:import numpy as np

from numpy import *

from numpy.linalg import *

import sklearn as sk

import scipy as sp

import scipy.io

from matplotlib.pyplot import *

from scipy.interpolate import *

#mat = scipy.io.loadmat('/home/luca/Documents/phd_python_code/peak_aligment/john_example.mat')

mat = scipy.io.loadmat('../peak_aligment/john_example.mat')

t1=mat["t1"].squeeze()

t2=mat["t2"].squeeze()

t3=mat["t3"].squeeze()

t=sort(unique(concatenate((t1,t2,t3),axis=0)))

t_min=max(min(t1),min(t2),min(t3))

t_max=min(max(t1),max(t2),max(t3))

t=[val for val in t if t_min<=val<=t_max]

sig1=mat["sig_1"].squeeze()

sig2=mat["sig_2"].squeeze()

sig3=mat["sig_3"].squeeze()

s1=interp1d(t1,sig1,kind="cubic")

s2=interp1d(t2,sig2,kind="cubic")

s3=interp1d(t3,sig3,kind="cubic")

编辑:

我离解决方案更近了,但我仍然有问题。在

我定义了一个成本函数:

^{pr2}$

我试着用scipy.optimize.minize.

主要问题是pt经常超出t的范围值。所以当我调用s2(pt) i时,会收到一个错误。怎样才能插值函数也在t的范围之外?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值