利用interpolate模块做插值,练习最近邻插值算法、阶梯插值、线性插值、B样条曲线插值算法的应用。
时间: 2023-11-19 20:56:10 浏览: 60
最近邻、双三次、双线性插值,最近邻插值法和双线性插值法,matlab
5星 · 资源好评率100%
最近邻插值算法:
```python
import numpy as np
from scipy import interpolate
# 创建原始数据
x = np.arange(0, 10, 1)
y = np.sin(x)
# 定义插值函数
f = interpolate.interp1d(x, y, kind='nearest')
# 生成插值数据
x_new = np.arange(0, 9, 0.1)
y_new = f(x_new)
# 绘制原始数据和插值数据
import matplotlib.pyplot as plt
plt.plot(x, y, 'o', label='原始数据')
plt.plot(x_new, y_new, '-', label='最近邻插值')
plt.legend()
plt.show()
```
阶梯插值算法:
```python
import numpy as np
from scipy import interpolate
# 创建原始数据
x = np.arange(0, 10, 1)
y = np.sin(x)
# 定义插值函数
f = interpolate.interp1d(x, y, kind='zero')
# 生成插值数据
x_new = np.arange(0, 9, 0.1)
y_new = f(x_new)
# 绘制原始数据和插值数据
import matplotlib.pyplot as plt
plt.plot(x, y, 'o', label='原始数据')
plt.plot(x_new, y_new, '-', label='阶梯插值')
plt.legend()
plt.show()
```
线性插值算法:
```python
import numpy as np
from scipy import interpolate
# 创建原始数据
x = np.arange(0, 10, 1)
y = np.sin(x)
# 定义插值函数
f = interpolate.interp1d(x, y, kind='linear')
# 生成插值数据
x_new = np.arange(0, 9, 0.1)
y_new = f(x_new)
# 绘制原始数据和插值数据
import matplotlib.pyplot as plt
plt.plot(x, y, 'o', label='原始数据')
plt.plot(x_new, y_new, '-', label='线性插值')
plt.legend()
plt.show()
```
B样条曲线插值算法:
```python
import numpy as np
from scipy import interpolate
# 创建原始数据
x = np.arange(0, 10, 1)
y = np.sin(x)
# 定义插值函数
f = interpolate.interp1d(x, y, kind='cubic')
# 生成插值数据
x_new = np.arange(0, 9, 0.1)
y_new = f(x_new)
# 绘制原始数据和插值数据
import matplotlib.pyplot as plt
plt.plot(x, y, 'o', label='原始数据')
plt.plot(x_new, y_new, '-', label='B样条曲线插值')
plt.legend()
plt.show()
```
阅读全文