首先,科普一下插值的含義:在離散數據的基礎上補插連續函數,使得這條連續曲線通過全部給定的離散數據點。
插值是離散函數逼近的重要方法,利用它可通過函數在有限個點處的取值狀況,估算出函數在其他點處的近似值。
插值的方法有很多:拉格朗日插值法,牛頓插值法,分段線性插值,樣條插值等,每種插值方法都有自己的優缺點。
今天,我們介紹的是比較簡單的分段線性插值方法,分段線性將每兩個相鄰的節點用直線連起來,如此形成的一條折線就是分段線性插值函數。計算點的插值時,只用到左右的兩個節點,計算量與節點個數n無關。
假設兩個節點為(x1,y1)和(x2,y2),則該區間上的一次線性方程為:

下面講解一下證明過程(證明過程很簡答,大家在初中就學過了):


以上就是分段線性插值的原理,可以看出原理十分簡單。分段線性插值運算量較小,插值誤差較小,插值函數具有連續性,但是由於在已知點的斜率是不變的,所以導致插值結果不光滑,存在角點。
下面給出分段線性插值的MATLAB實現函數:
function y_output = piecewiselinearinterp(x,y,x_input) %該函數實現分段線性插值 %x為已知的數據點 %y為已知的數據點 %x_input為待插值的橫坐標 %y_output為插值后的到的結果 %The Author:等等登登-Ande %The Email:18356768364@163.com %The Blog:qq_35166974 n = length(x); nn = length(x_input); for j=1:nn for i=1:n-1 if (x_input(j)>x(i) && x_input(j)<=x(i+1)) y_output(j) = ((x_input(j)-x(i+1))/(x(i)-x(i+1)))*y(i)+(((x_input(j)-x(i))/(x(i+1)-x(i)))*y(i+1)); end end end
函數運行結果是:

從運行結果可以看出,插值總體趨勢是正確的,但是存在着很多角點,當節點越多時,插值效果會越好。
————————————————
版權聲明:本文為CSDN博主「等等登登-Ande」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_35166974/article/details/90115563
