Ukázka možností interpolace dat v softwaru Matla Ing. Stanislav Olivík Anotace: V následujícím tetu ude čtenář seznámen s několika základními funkcemi softwaru Matla, pomocí nichž může interpolovat data mezi zadanými (naměřenými) hodnotami. Na výěr je interpolace funkcí po částech konstantní, lineární interpolace, interpolace kuickou křivkou a také spline křivkou.. Úvod Software Matla (zde ve verzi 7..) naízí v základním alíčku funkcí také několik funkcí umožňující interpolaci (a také etrapolaci) dat. Pro interpolaci funkčních hodnot v závislosti na ( = f () ) je k dispozici funkce interp. Pro interpolaci funkčních hodnot z v závislosti na, ( z = f (, ) ) je k dispozici funkce interp. Volumetrická data ( v = f (,, z) ) mohou ýt interpolována funkcí interp. Pro vícedimenzionální data je zde funkce interpn. V tomto příspěvku udou přilížen pouze možnosti interpolace v rovině (D) a prostoru (D).. Interpolace v rovině Pro interpolaci hodnot = f () se používá funkce interp. Základní sntae je YI = INTERP(X,Y,XI), kde X je vektor odů na ose, vektor Y osahuje hodnot v odech vektoru X, XI je nové dělení intervalu vmezeném vektorem X (jiné než X) a YI je vektor interpolovaných hodnot. Hodnot z vektorů X a Y se použijí jako opěrné od, jimiž se proloží požadovaná křivka. Hodnot vektoru YI se následně počítají jako funkční hodnot křivk v odech vektoru XI. Dělení intervalu XI může ýt jakkoliv jemné či hrué a nemusí osahovat původní od z vektoru X. Přednastaveným tpem interpolace je interpolace lineární. Dalšími možnými tp interpolace jsou: o 'nearest' - nejližší soused (po částech konstantní funkce) o 'linear' - lineární interpolace o 'spline' - po částech kuická spline interpolace (SPLINE) o 'pchip' - po částech kuická interpolace zachovávající tvar (shape-preserving) o 'cuic' - stejná metoda jako 'pchip' o 'v5cuic' - kuická interpolace z verze 5, která neumožňuje etrapolaci a používá 'spline' pro neuniformní dělení X. Tto metod se zadávají pomocí sntae YI = INTERP(X,Y,XI,'method'). Katedra matematik, Fakulta stavení, České vsoké učení technické v Praze email: olivik@mat.fsv.cvut.cz
Or. : Rozdíl mezi jednotlivými tp interpolací. Funkce =cos. Etrapolace dat se zadává pomocí stejné funkce jako interpolace, pouze se přidá parametr etrap : YI = INTERP(X,Y,XI,'method','etrap'). Etrapolace je možná pouze pro metod cuic, pchip a spline. Or. : Ukázka etrapolace spline křivkou a pchip polnomem. Or. : Ukázka etrapolace stejné funkce stejnými metodami jako u Or.. Menší počet opěrných odů.
Jak je patrno z Or. a Or., etrapolované části křivk pokračují podle předpisu poslední interpolované části křivk (mezi posledními dvěma opěrnými od). Pro interpolaci pomocí spline křivk volá funkce interp funkci s názvem spline. Základní nastavení této funkce je takové, že vtváří přirozený spline (první i druhé derivace v koncových odech křivk jsou rovn nule). Je zde však i možnost zadat velikosti krajních derivací, ted tečný vektor křivk v krajních odech. V tom případě se zadá vektor Y o dvě hodnot delší než vektor X. První a poslední hodnota je v tomto případě rána jako velikost první derivace v krajních odech (Or. ). Funkce spline umožňuje interpolovat a etrapolovat při uniformním i neuniformním dělení X. Or. : Rozdíl mezi spline křivkou ez zadaných krajních derivací a se zadanými krajními derivacemi. Funkce spline také rozlišuje počet zadaných odů. Pokud nejsou zadán krajní derivace a jsou zadán dva od, použije se lineární interpolace. Jsou-li zadán tři od ez krajních derivací, pak se těmito od proloží paraola. V ostatních případech se jednotlivé olouk spline křivk počítají jako Hermitův interpolační polnom třetího stupně []. Pro výpočet koeficientů interpolačního polnomu je zapotřeí znát souřadnice opěrných odů a též tečné vektor ke křivce v těchto odech. Jelikož nejsou hodnot prvních derivací znám (kromě krajních odů), je nutno je dopočítat. Vpočítají se ze soustav lineárních rovnic s třídiagonální maticí. Pro čtři zadané od, nezadané krajní derivace, uniformní parametrizaci a krok X rovný jedné, má tato matice podou. () Pravá strana se počítá podle vztahů ( ) ( ) ( )( )( ) ( ) ( ) [ ] ( ) ( )( ) ( )( ) ( )( ) ( )( ) ( ) ( ) ( ) ( ) ( )( )( ) [ ] ( ) = = = =. ()
Vpočítané hodnot prvních derivací spolu s vektor X, Y a diferencemi mezi sousedními hodnotami X a Y vstupují do výpočtu koeficientů kuického polnomu. Pokud jsou zadán derivace v krajních odech, liší se jak matice, tak vektor pravých stran. Při zachování ostatních podmínek jako v předchozím případě pak má matice podou a vektor pravých stran se počítá ze vztahů = = = = ( ) ( )( ) ( )( ) ( )( ) ( )( ) ( ) (). () Při interpolaci metodami pchip a cuic se použije též Hermitův interpolační polnom třetího stupně. Na rozdíl od spline však není zajištěna spojitost druhých derivací a výsledná křivka respektuje monotónnost dat a méně osciluje kolem zadaných odů. Viz Or. 5. Or. 5: Příklad rozdílu mezi spline a pchip interpolací. Upravený příklad z [] Hermitův interpolační polnom třetího stupně ( pchip Piecewise Cuic Hermite Interpolating Polnomial) lépe interpoluje po částech monotónní data. To je dáno tím, že při výpočtu prvních derivací dává větší váhu odům, v jejichž oou sousedních odech se funkční hodnota uď mění výrazně, neo naopak velmi málo, tj. v jejichž okolí jsou funkční hodnot monotónní. Následující dva orázk (Or. 6 a Or. 7) jasně ukazují, jak moc záleží na počtu a rozmístění opěrných odů. Oa znázorňují interpolaci spline křivkou a kuickým π 5π polnomem mezi od funkce = cos. Na Or. 6 je použit interval <, > a krok π π 7π π generování původní sítě opěrných odů. Or. 7 je pro interval <, > a krok.
Or. 6: Část funkce = cos. Interpolace spline křivkou a kuickým polnomem. Or. 7: Část funkce = cos. Interpolace spline křivkou a kuickým polnomem.. Interpolace v prostoru V prostoru přichází do hr interpolace ve dvou směrech. Naízené metod zde jsou: o 'nearest' - nejližší soused (po částech konstantní plocha) o 'linear' - ilineární interpolace o 'spline' - spline interpolace o 'cuic' - ikuická interpolace Nejjednodušší a nejméně přesnou je zde opět interpolace metodou nejližšího souseda, ted po částech konstantní plochou. Další metodou je ilineární interpolace. Ani tato metoda nedosahuje u složitějších ploch doré výsledk, jak dokládá Or. 8, který ukazuje lineární interpolaci mezi uzlovými od hrué sítě, ve srovnání s Or., na němž je zorazena původní funkce, z níž la vgenerována tato hruá síť odů. Spline interpolace vtvoří plochu tenzorového součinu. Vžaduje uniformní dělení X a a data vektoru X la monotónně rostoucí. V okrajových odech původní sítě se určí první derivace, a to proložením přirozené spline křivk. Postupným interpolováním parametrických křivek kuickými spline křivkami se dopočítají oě parciální derivace ve všech uzlových odech sítě. Na okrajových křivkách se určí druhé smíšené parciální derivace kuickou spline interpolací vektorů prvních derivací. Další interpolací se dopočítají hodnot druhé smíšené derivace ve všech odech sítě.
Výpočet mezilehlých odů ploch při ikuické interpolaci je odvozen z kuické konvoluce, která se používá pro interpolaci digitálního orazu při změně jeho velikosti. Algoritmus kuické konvoluce počítá hodnotu nového odu jako vážený průměr z 6 nejližších okolních odů. Největší váha se přiřazuje nejližším odům a nejmenší naopak odům nejvzdálenějším. Or. 8: Bilineární interpolace. Upravený příklad z [] Or. 9: Bikuická interpolace. Upravený příklad z []
Or. : Spline interpolace. Upravený příklad z [] Or. : Původní funkce na jemnější síti. Upravený příklad z []
. Závěr Jako vžd, i při interpolaci dat záleží na datech vstupních. Pokud jsou vstupní data rozmístěna v hrué síti, je vola tpu interpolace zásadním rozhodnutím, které výrazně ovlivní výsledné hodnot. Naopak, při dalším zjemňování jemné sítě se udou hodnot interpolované různými způso lišit jen málo. Ted kromě interpolace funkcí po částech konstantní. Literatura [] Matla help [] Ježek, F.: Geometrické a počítačové modelování, Pomocný učení tet, ZČU Plzeň, [] Weisstein, E.W.: Hermite Polnomial. From MathWorld [online], URL: http://mathworld.wolfram.com/hermitepolnomial.html [] Mathews, J.H.: La for Hermite Polnomial Interpolation [online], URL: http://math.fullerton.edu/mathews/ Tento příspěvek vznikl v rámci výzkumu pro grant FRVŠ G 9