MATLAB一維插值和二維插值 比較

披風踏湧發表於2018-09-12

插值問題描述:已知一個函式上的若干點,但函式具體表示式未知,現在要利用已知的若干點求在其他點處的函式值,這個過程就是插值的過程.

 

1.一維插值

一維插值就是給出y=f(x)上的點(x1,y1),(x2,y2),…,(xn,yn),由此求出y=f(x)在點xa處的值ya的值.

實現一維插值使用interp1命令,使用引數為interp1(x,y,xa,’method’) ,其中x和y是已知點對應橫縱座標,xa為代求值的橫座標,method引數代表插值型別,引數可以選擇的選項如下表,若預設則為linear.

method                含義                     特   點

linear               線性插值             快,精度不高

cubic           三次多項式插值      較慢,精度高,平滑

spline          三次樣條插值          最慢,精度高,最平滑

 

例如,求y=xln(x)的插值問題,程式碼如下

    %為了說明插值問題,根據已知函式構造一組插值點

    %而實際問題中,只有這些點,函式是未知的

    x = 0.2:0.4:2;

    y = x.*log(x);%構造一組插值點

    plot(x,y,'o');

    xa =0.2:0.1:2;%d代求y值得x值點

    ya = interp1(x,y,xa,'cubic');

    hold on;

    plot(xa,ya,'b-');

    box on;

    hold on;

    fplot(@(x)x*log(x),[0.2,2]);

    legend('插值點','三次多項式插值','原圖');%圖例

 

2.二維插值

    二維插值就是給出z=f(x,y)上的點(x1,y1,z1),…,(xn,yn,zn),由此求出在(xa,ya)處求出za的值.實現一維插值使用interp2命令,使用引數為interp1(x,y,z,xa,ya,’method’),引數含義與interp1類似.

    例如,求z = exp(-x^2-y^2)的空間插值問題,程式碼如下

    x = linspace(-2,2,10);

    y = linspace(-2,2,10);

    [X,Y] = meshgrid(x,y);

    Z = exp(-X.^2 - Y.^2);

    subplot(1,2,1);

    surf(X,Y,Z);

    title('插值點曲圖');

    hold on;

    xa = linspace(-2,2,50);

    ya = linspace(-2,2,50);

    [Xa,Ya] = meshgrid(xa,ya);

    Za = interp2(X,Y,Z,Xa,Ya,'cubic');

    subplot(1,2,2);

    surf(Xa,Ya,Za);

    title('三次插值曲面');

 

轉載自 https://blog.csdn.net/ten_sory/article/details/54429482

相關文章