笔者有一个这样的需求
首先,有一套模板数据,横坐标是时间,做坐标是温度,用图形来看,大概是这个意思:
然后,有两个入参,分别为最高温度和最低温度。
要求就是,根据这两个入参和模板数据,拟合出一条和模板数据曲线趋势相同的数据,且最大值就是最高温度,最小值就是最低温度。
好吧,不知道笔者有没有表达清楚,先展示结果图:
图中的蓝色为模板曲线,然后给出两个值,最小值18,最大值24
笔者在同事的帮助下,用matlab来实现了一下这个算法
[num,txt,raw] = xlsread('C:\Users\robin\Desktop\tes.xls')
inputMax=24;
inputMin=18;
temp1=max(num);
temp2=min(num);
a1=(m1+m2)/2;
a2=(m1-m2);
b1=(inputMax+inputMin)/2;
b2=(inputMax-inputMin);
dist=(num-a1)*(b2/a2)+b1;
ok,这是matlab的源码,第一行是读取excel文件,
将数据读入到num中,num即为模板曲线
然后inputMax和inputMin分别为模拟的两个入参
最后,dist就是得到的结果。
来解释一下思路:
1.模板归0:通过取中值,减去中值,将模板曲线移动到y=0
2.乘以缩放系数,即代码中的b2/a2
3.去inputMax和inputMin的中值,将步骤2中的到的曲线加上这个中值,将曲线y轴还原
个人觉得,这种算法挺好的,不仅仅在此案例中,很多需要等比例缩放的case中,都可以使用。