波比较函数
使用了局部贪心算法加横向损失. 目前我认为是最好的时序比较函数.
# 目前最先进的时序比较算法.
#算法保证 jisuan_diff(自己, 自己)=0, jisuan_diff(自己, 自己部分曲线水平偏移)= 0.5偏移的倍数. jisuan_diff(自己, 其他)= 对应点都能找到最接近自己高度的对应点相减,并且水平也足够近.
#=====对于波的比较函数的优化
muban999=[0,1,1,0,-1,-1,-1,-1,-1,-1,-1,10]
beipipei999=[0,1,1,0,-1,0,1,1,1,1]
# beipipei999=[0,1,1,0,-1,-1,-1,-1,-1,-1,-1,1]
def jisuan_diff(b,m):
print(1)
changdu=0 # 横坐标的偏移 产生的diff
gaodu=0 # 纵坐标的偏移 产生的diff
kaishi=1
saving=0
jilu=0 # 记录上一个匹配成功的位置.
for i in range(1,len(m)): # 模板第0个,跟被查数组0个假设已经对齐, 从索引1开始对齐.
chagndu=3 #搜索范围. 总共有多长. 越小越局部贪婪, 越大越全局.#========这个需要自己根据曲线的形状来定义的超参数.
tmpjuli=float('inf')
for j in range(kaishi,kaishi+chagndu+1):
if j<len(b):
gaodu=abs(m[i]-b[j])
if i!=1:
changdu=(abs(abs(j-kaishi)-1))*0.5
diff=gaodu+changdu
if diff<tmpjuli:
tmpjuli=diff
jilu=j
# 加上横坐标偏移惩罚: 移动一个格作为0惩罚.
# tmpjuli+=abs(jilu-kaishi-1)
kaishi=jilu
print('模板索引点',i,'折线索引点',jilu,'两点diff',tmpjuli,'搜索起点',kaishi)
saving+=tmpjuli
return (saving+abs(b[0]-m[0]))/len(m)
sadfasdfadsfasd=jisuan_diff(beipipei999,muban999)
print(sadfasdfadsfasd)
import matplotlib.pyplot as plt
plt.plot(muban999,c='r')
plt.plot(beipipei999,c='g')
plt.savefig('sdfaasd.png')
模板索引点 1 折线索引点 1 两点diff 0 搜索起点 1
模板索引点 2 折线索引点 2 两点diff 0.0 搜索起点 2
模板索引点 3 折线索引点 3 两点diff 0.0 搜索起点 3
模板索引点 4 折线索引点 4 两点diff 0.0 搜索起点 4
模板索引点 5 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 6 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 7 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 8 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 9 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 10 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 11 折线索引点 6 两点diff 9.5 搜索起点 6
1.0416666666666667
PS D:\钞票安全线转码\RMB> & d:/Users/admin/miniconda3/python.exe d:/钞票安全
线转码/RMB/999.py
1
模板索引点 1 折线索引点 1 两点diff 0 搜索起点 1
模板索引点 2 折线索引点 2 两点diff 0.0 搜索起点 2
模板索引点 3 折线索引点 3 两点diff 0.0 搜索起点 3
模板索引点 4 折线索引点 4 两点diff 0.0 搜索起点 4
模板索引点 5 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 6 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 7 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 8 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 9 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 10 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 11 折线索引点 5 两点diff 10.0 搜索起点 5
1.0833333333333333
PS D:\钞票安全线转码\RMB> & d:/Users/admin/miniconda3/python.exe d:/钞票安全
线转码/RMB/999.py
1
模板索引点 1 折线索引点 1 两点diff 0 搜索起点 1
模板索引点 2 折线索引点 2 两点diff 0.0 搜索起点 2
模板索引点 3 折线索引点 3 两点diff 0.0 搜索起点 3
模板索引点 4 折线索引点 4 两点diff 0.0 搜索起点 4
模板索引点 5 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 6 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 7 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 8 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 9 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 10 折线索引点 4 两点diff 0.5 搜索起点 4
模板索引点 11 折线索引点 6 两点diff 9.5 搜索起点 6
