Skip to content

Commit e16ec3c

Browse files
committed
Fix and improve linear_extra_interpolation()
1 parent 8d38b4c commit e16ec3c

File tree

1 file changed

+10
-22
lines changed

1 file changed

+10
-22
lines changed

windpowerlib/tools.py

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
55
"""
66

7-
import numpy as np
8-
97

108
__copyright__ = "Copyright oemof developer group"
119
__license__ = "GPLv3"
@@ -86,29 +84,19 @@ def linear_extra_interpolation(data_frame, requested_height, column_name):
8684
(height_{requested} - height_1) + value_1
8785
8886
with:
89-
:math:`height_2`: largest/smallest value in data frame,
90-
:math:`height_1`: second largest/smallest value in data frame,
87+
:math:`height_2`: largest/smallest index of data frame,
88+
:math:`height_1`: second largest/smallest index of data frame,
9189
:math:`value_2`: corresponding value to `height_2`,
9290
:math:`value_1`: correponding value to `height_1`,
93-
:math:`height_{requested}` : Height for which the interpolation takes
91+
:math:`height_{requested}` : height for which the interpolation takes
9492
place
9593
9694
"""
97-
if requested_height > max(data_frame.index):
98-
height_2 = max(data_frame.index)
99-
value_2 = data_frame[column_name][height_2]
100-
height_1 = sorted(data_frame.index)[-2] # Second largest number
101-
value_1 = data_frame[column_name][height_1]
102-
interpolant = ((value_2 - value_1) / (height_2 - height_1) *
103-
(requested_height - height_1) + value_1)
104-
elif requested_height < min(data_frame.index):
105-
height_2 = min(data_frame.index)
106-
value_2 = data_frame[column_name][height_2]
107-
height_1 = sorted(data_frame.index)[1] # Second smallest number
108-
value_1 = data_frame[column_name][height_1]
109-
interpolant = ((value_2 - value_1) / (height_2 - height_1) *
110-
(requested_height - height_1) + value_1)
111-
else:
112-
interpolant = np.interp(requested_height, data_frame.index,
113-
data_frame[column_name])
95+
height_2, value_2 = smallest_difference(data_frame, requested_height,
96+
column_name)
97+
data_frame_2 = data_frame.drop(height_2)
98+
height_1, value_1 = smallest_difference(data_frame_2, requested_height,
99+
column_name)
100+
interpolant = ((value_2 - value_1) / (height_2 - height_1) *
101+
(requested_height - height_1) + value_1)
114102
return interpolant

0 commit comments

Comments
 (0)