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
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ń
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ń
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ń
Plik z chomika:
mariuszlew
Inne pliki z tego folderu:
algorytmy_grupowania(1).pdf
(54 KB)
au.rar
(1479 KB)
ETI30z.zip
(5 KB)
grupowanie_danych.pdf
(40 KB)
grupowanie_danych.ppt
(367 KB)
Inne foldery tego chomika:
3D Album
Adobe
angielski
Boris Blu
I rok
Zgłoś jeśli
naruszono regulamin