Tutorial_MATLAB_04_2.pdf

(221 KB) Pobierz
Laboratorium POK
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
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ń
3
77078814.009.png
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 znaleźć 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ń
77078814.010.png 77078814.011.png
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
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ęźle 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.
x
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
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”:
x
Metoda: „cubic”:
Funkcja interpolowana
Funkcja interpolowana
4
4
3
3
2
2
1
1
0
0
-1
-1
-2
-2
-3
0
1
2
3
4
5
6
7
8
9
10
-3
0
1
2
3
4
5
6
7
8
9
10
x
x
Opracował: dr inż. Witold Nocoń
77078814.012.png 77078814.001.png 77078814.002.png 77078814.003.png 77078814.004.png 77078814.005.png 77078814.006.png 77078814.007.png 77078814.008.png
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ń
Zgłoś jeśli naruszono regulamin