一个拟合曲线趋势的算法

笔者有一个这样的需求

首先,有一套模板数据,横座标是时间,做座标是温度,用图形来看,大概是这个意思:

《一个拟合曲线趋势的算法》

然后,有两个入参,分别为最高温度和最低温度。

要求就是,根据这两个入参和模板数据,拟合出一条和模板数据曲线趋势相同的数据,且最大值就是最高温度,最小值就是最低温度。

好吧,不知道笔者有没有表达清楚,先展示结果图:

《一个拟合曲线趋势的算法》

图中的蓝色为模板曲线,然后给出两个值,最小值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中,都可以使用。

点赞