python或matlab中的惩罚插值

2024-04-26 11:36:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个损失函数L和2个信号f(t),g(t)。 我想找到最小化的函数sL(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的范围之外?在


Tags: 函数fromioimportnumpyasvalscipy