我有火车的位置,时间,纬度,长度,速度和高度数据。 我的问题是我想删除列车停止的数据点,这包括减速和加速度测量。这个想法是比较在最佳条件下行驶相同路径的多列火车,即不停车。测量结果显示列车在不同的时间和地点停靠。我目前检查先前的位置是否相同,然后检查速度是否小于之前3个值的50%。问题是如果超过之前的3个值是o或小于先前保持速度的50%,那么我不会删除所有需要的数据,例如列车加速回到速度,例如U60以下。
这是eqn是U60
=IF(P60=P59,"removed",IF(S60<(0.5*S59),"removed",IF(U59="removed",IF(S60<(0.5*S58),"removed",IF(S60<(0.5*S57),"removed",P60)),P60)))
我能想到的唯一方法就是拥有多个嵌套条件(最多20个)以捕获所有点。对于某些火车来说,这可能还不够。
有没有办法去除减速和加速点(可能是2或3点),而不必有~20个嵌套条件?
答案 0 :(得分:1)
OR
功能是您正在寻找的功能。如果其任一参数为true,则输出TRUE
。您的结束函数将如下所示:
=IF(OR(P60=P59,S60<(0.5*S59),S60<(0.5*S58)),"removed",P60) 'there are more arguments in your actual nested function that you will add
答案 1 :(得分:0)
使用@ user3819867的解决方案一段时间之后,我们已经确定这还不够,因为我们无法在没有手动查找的情况下捕获减速或加速的真实点。
但是,我们已经提出了一个应该证明充足的解决方案。解决方案是在速度的连续峰值之间进行线性插值。这应该只在火车(车辆)停止时才会发生。为了做到这一点,我需要计算每个点的斜率,确定该点是否是局部峰值,确定前一个和下一个峰值的位置,然后确定这些峰值的X和Y坐标以执行插值。
以下是eqns的简要概述以及电子表格的外观。
Slope of velocity line
=IFERROR(SLOPE(AH2:AH3,AD2:AD3),"")
local peak
=IF(AND(AM4>0,AM3<0),"peak","")
REPLACE
=IFERROR(MATCH(0,INDIRECT("AH"&AP3):INDIRECT("AH"&AQ3),0),"")
previous peak
=SUMPRODUCT(MAX(($AN$3:AN3="peak")*(ROW($AN$3:AN3))))
next peak
=MATCH("peak",AN4:$AN$453,0)+ROW(AN3)
new Y1
=IFERROR(INDIRECT("AH"&AP3),"")
new Y2
=INDIRECT("AH"&AQ3)
X1
=IFERROR(INDIRECT("AD"&AP3),"")
X2
=IFERROR(INDIRECT("AD"&AQ3),"")
new velocity (Y)
=IF(AO3<>"",IFERROR(AR3+(AD3-AT3)*(AS3-AR3)/(AU3-AT3),AH3),AH3)
希望这有助于他人。