首页 > 解决方案 > 在 Python 中的两个对数方程之间插值和平滑数据

问题描述

我有几个方程如下:

windGust8 = -53.3 + (28.3 * log(windSpeed))
windGust7to8 = -70.0 + (30.8 * log(windSpeed))
windGust6to7 = -29.2 + (17.7 * log(windSpeed))
windGust6 = -32.3 + (16.7 * log(windSpeed))

哪里windSpeed是 850mb 模型的风速。

然后,我使用模型中的失效率来确定要使用哪个方程:

windGustTemp = where(greater(lapseRate,8.00),windGust8,windGustTemp)
windGustTemp = where(logical_and(less_equal(lapseRate,8.00),greater(lapseRate,7.00)),windGust7to8,windGustTemp)
windGustTemp = where(logical_and(less_equal(lapseRate,7.00),greater(lapseRate,6.00)),windGust6to7,windGustTemp)
windGustTemp = where(less_equal(lapseRate,6.00),windGust6,windGustTemp)

return windGustTemp

当我将这些方程绘制为地图上的填充轮廓时,正如您所期望的那样,会有明显的渐变。我想做的是在这些方程之间进行插值,并可能稍微平滑一点,以使图形看起来更干净。我假设我会使用 scipy.interpolate.interp1d,但我不确定如何将其应用于这种情况。任何帮助将非常感激!谢谢!

编辑以添加输出图像示例

这是当前生成的输出图像的示例。你可以看到边缘有多突然。我想对这些数据进行插值和平滑处理。

输出示例

模型数据每 1 公里有一个数据点。对于每个点,首先要确定失效率是多少……比如说 7.4。然后根据上面的逻辑方程,它知道使用与 7 到 8 之间的递减率相关的方程。然后它找到该点的模型风速,将其代入方程并得到一个数字,它会在地图上绘制. 这是针对所有模型数据点完成的,并生成上面的图像。

标签: pythoninterpolation

解决方案


推荐阅读