Materiały do Laboratorium Informatyki Rok akademicki: 2007/08
Semestr: letni
MATLAB cz. 4.2 Interpolacja
Interpolacja to estymacja wartości leżących pomiędzy znanymi punktami. Przykład:
y
4
3
3
2
1
0 1 2 3 4 x
?
y(1,5) =
Znając wartości funkcji y=f(x) tylko w określonych punktach chcemy estymować wartości tej
funkcji pomiędzy tymi punktami, np. jaka jest wartość tej funkcji dla x=1,5? Cechą
interpolacji jest to, że funkcja interpolująca zawsze posiada takie same wartości jak funkcja
interpolowana w węzłach interpolacji (czyli w miejscach w których znamy wartości funkcji
interpolowanej w naszym przypadku, węzłami interpolacji są x=0,1,2,3,4).
Środowisko MATLAB a udostępnia szereg funkcji realizujących interpolację.
Interpolacja jednowymiarowa
Przestawiony powyżej przykład dotyczy interpolacji jednowymiarowej (funkcja którą chcemy
interpolować jest funkcją jednej zmiennej). Funkcją realizującą interpolację jednowymiarową
jest interp1. Funkcja ta ma następującą postać:
yi = interp1(x,y,xi,method)
gdzie:
y wektor znanych wartości funkcji interpolowanej,
x wektor o tej samej długości co wektor y, zawierający punkty dla których wektor y
podaje wartości funkcji,
xi wektor z punktami, dla których chcemy wyznaczyć wartości funkcji interpolującej
method metoda interpolacji:
nearest ta metoda ustala wartość interpolowaną jako wartość najbliższego
punktu funkcji interpolowanej.
linear ta metoda ustala wartość interpolowaną za pomocą funkcji liniowej
pomiędzy węzłami interpolacji (ta metoda jest metoda domyślną)
Opracował: dr inż. Witold Nocoń
Materiały do Laboratorium Informatyki Rok akademicki: 2007/08
Semestr: letni
spline - ta metoda ustala wartość interpolowaną za pomocą funkcji kwadratowej
pomiędzy węzłami interpolacji,
pchip lub cubic metoda podobna do powyższej, jednak zachowuje
monotoniczność i kształt danych.
Przykład:
Funkcja którą należy interpolować dana jest następującymi wektorami.
x=[0 1.1 2.1 3.2 3.9 5.0 6.1 6.9 8.1 9 10];
y=[1.1 2.2 2.9 0.5 -0.4 -2 0 1 1.3 1.8 1.4];
Co po wykonaniu następujących poleceń:
plot(x,y,'*');
grid;
title( Funkcja interpolowana );
title('Funkcja interpolowana');
xlabel('x');
ylabel('y');
hold on
powoduje wyświetlenie następującego wykresu:
Funkcja interpolowana
3
2.5
2
1.5
1
0.5
0
-0.5
-1
-1.5
-2
0 1 2 3 4 5 6 7 8 9 10
x
Chcemy teraz wyznaczyć wartości tej funkcji dla zmiennej:
x " 0,10 z krokiem dx=0.05
Aby znalezć funkcję interpolującą metodą nearest należy wykonać następujące polecenia:
xi=[0:.05:10];
yi=interp1(x,y,xi,'nearest');
plot(xi,yi,'r');
Wynik przedstawiony jest na poniższym wykresie:
Opracował: dr inż. Witold Nocoń
y
Materiały do Laboratorium Informatyki Rok akademicki: 2007/08
Semestr: letni
Funkcja interpolowana
3
2.5
2
1.5
1
0.5
0
-0.5
-1
-1.5
-2
0 1 2 3 4 5 6 7 8 9 10
x
Widzimy, że wartości funkcji pomiędzy węzłami interpolacji przyjmują wyłącznie wartości
tych węzłów. Przyjmowana jest zawsze wartość funkcji interpolowanej w węzle leżącym
najbliżej punktu w którym szukamy wartości interpolowanej. Nie trudno zauważyć, że ta
metoda interpolacji nie będzie zbyt często wykorzystywana w praktyce.
Analogicznie można dokonać interpolacji metodą linear :
yi_lin=interp1(x,y,xi,'nearest');
plot(xi,yi_lin,'g');
Wynik przedstawiony jest na poniższym wykresie:
Funkcja interpolowana
3
2.5
2
1.5
1
0.5
0
-0.5
-1
-1.5
-2
0 1 2 3 4 5 6 7 8 9 10
x
W tym przypadku, sens interpolacji jest oczywiście większy. Interpolacja na za pomocą
dwóch pozostałych metod daje następujące wyniki:
Metoda spline : Metoda: cubic :
Funkcja interpolowana Funkcja interpolowana
4 4
3 3
2 2
1 1
0 0
-1 -1
-2 -2
-3 -3
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
x x
Opracował: dr inż. Witold Nocoń
y
y
y
y
Materiały do Laboratorium Informatyki Rok akademicki: 2007/08
Semestr: letni
Widać, że niewielkie różnice da się zaobserwować w pobliżu węzłów interpolacji. W
metodzie spline może się zdarzyć, że wartości funkcji interpolującej przyjmują wartości z
poza przedziału określonego przez dwa sąsiednie węzły interpolacji (np. pomiędzy węzłami
x=9 a x=10).
Opracował: dr inż. Witold Nocoń
Wyszukiwarka
Podobne podstrony:
Tutorial MATLAB 3Tutorial MATLABTutorial MATLABTutorial MATLAB 1Tutorial MATLABTutorial MATLABTutorial MATLABTutorial MATLABTutorial MATLABTutorial MATLABArtificial Neural Networks The Tutorial With MATLABmatlab tutorium1Matlab Polski tutorialmatlab tutorium2Matlab tutorial GUIMATLAB cw SkryptySIMULINK MATLAB to VHDL Routewięcej podobnych podstron