Programovanie geofyzikálnych úloh v prostredí MATLAB

Slides:



Advertisements
Similar presentations
Ma.
Advertisements

Click on each of us to hear our sounds.
Statistical Data Analysis Daniel Svozil Laboratory of Informatics and Chemistry Faculty of Chemical.
ma mu mi mo me pe pi pa pu po si sa so.
MA. ME MI MO MU MÁ MÉ MÍ MÓ MŮ LA LE LI.
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Hľadanie motívov v reťazcoch DNA
Slovak HEROINE Comenius project
MOŽNOSTI VYUŽITIA MAGNETOTELURIKY PRI GEOLOGICKOM PRIESKUME
Požiadavky na hardvér a možnosti použitia jednotlivých OS Windows
Vznik a vývoj žánrov počítačových hier
Example Bullet Point Slide
Fyzika a chemie společně CZ/FMP/17B/0456
VOĽNE DOSTUPNÝ REFERENČNÝ MANAŽÉR
Renesancia a humanizmus
Present by Leon & Andy Art Technical Gallery © 2014 Ultimate - All rights reserved 1. Letné stretnutie pracovníkov v NDT LT Piešťany, Rybársky dvor,
Prečo šimpanzy nevedia rozprávať?
Zálohovanie a archivácia
Operačné systémy Čo robí operačný systém ?
Geografický informačný systém
Domény a DNS.
RIZIKÁ PRI REALIZOVANÍ PROJEKTU
MATLAB (1) - úvod do programovania vedeckých problémov
Programovanie geofyzikálnych úloh v prostredí MATLAB
Vývoj a druhy počítačov
DATABÁZOVÉ JAZYKY.
Databázový systém pre malý a veľký podnik
Yulia Šurinová "There is always a better way; it should be found."
Makrá v PowerPointe Joshua Lajčiak.
Barbora Ondíková VII.D 2014/2015
Modelom riadený vývoj Peter Grec
Človek vo sfére peňazí ročník.
Autorský zákon v znení následných noviel je bez ich súhlasu zakázané.
aktivácia Vladimír Hricka License Sales Specialist Microsoft Slovakia
7. prednáška 3. november 2003.
Dizertačná práca Polohový servopohon s asynchrónnym motorom
Protokoly HTTP a FTP.
Mgr. Valentína Gunišová
Využitie IKT na hodinách anglického jazyka
Skrutkovica na rotačnej ploche
Akademická iniciatíva
Vlastnosti kvantitatívnych dát
3D videnie a geometria Sonka, Hlavac, Boyle: Image Processing, Analysis and Machine vision, kapitola: 3D vision, geometry.
Ing. Róbert Chovanculiak, Ph.D. INESS
Šifrovanie Dešifrovanie
Ako manažovať smartfóny z cloudu TechDays East 2014
Metóda Konečných Prvkov vo výrobných technológiach
SPŠ elektrotechnická Košice Stredoškolská odborná činnosť
CSS - Cascading Style Sheets
Dvojrozmerné polia Kód ITMS projektu:
Lokálne príznaky vo farebných obrazoch
22. – OTVORENÝ PRÍSTUP
PRACOVNÉ PROSTREDIE PRI PRÁCI S POČÍTAČMI Z HĽADISKA ERGONÓMIE
Heuristické optimalizačné procesy
Heuristické optimalizačné procesy
REACH 2018 Nájdite svojich spoluregistrujúcich a pripravte sa na spoločnú registráciu.
Ing. Anita Sáreníková/ Cvičenia z aplikovanej informatiky
komercia vs. dokonalosť
INFORMATION AND COMMUNICATION TECHNOLOGY IN SECONDARY EDUCATION
4. Užívateľské prostredie UNIXu
Veľkosť trhu agentúrnych zamestnancov
Seminár č. 9 - osnova Metódy sieťového plánovania a riadenia:
Ponúkame: poradenstvo technickú podporu - help desk školenia
Interaktívna kniha a e-learningový systém pre deti - Opera nehryzie
Termonukleárna fúzia a Studená fúzia.
8. prednáška 10. november 2003.
Kde je Sever a nie len Sever
Využitie biomasy v environmentálnych biotechnológiách
...bzučanie miliónov plastických koliesok
Podpora adaptívneho WEB-u prostriedkami strojového učenia
Presentation transcript:

Programovanie geofyzikálnych úloh v prostredí MATLAB LS 2015, 5.stretnutie

Programovanie geofyzikálnych úloh v prostredí MATLAB Program predmetu: 1. týždeň: organizačné pokyny, inštalácia softvéru, úvod, voľba riešeného problému, základné info o Matlabe, pracovné prostredie Matlabu týždeň: základné operácie s maticami, import a export dát, základné grafické zobrazovanie (grafy a mapy) týždeň: pokročilejšie grafické zobrazovanie (popis grafov a máp, 3D grafy) 4. týždeň: príkazy, stavba programov 5. týždeň: stavba programov, tvorba M-súborov 6. týždeň: funkcie – zabudované v Matlabe, tvorba vlastných funkcií 7. týždeň: príklady programovania geofyzikálnych (geologických) úloh 8. týždeň: príklady programovania geofyzikálnych (geologických) úloh týždeň: tvorba vlastných aplikácií, práca s GUI (Graphical User Interface) 10. týždeň: tvorba vlastných aplikácií, nástroj GUIDE pozn.: zmeny vyhradené

Programovanie geofyzikálnych úloh v prostredí MATLAB ďalšie dôležité príkazy: fitovanie polynómu cez skupinu dvojíc hodnôt (metódou LSQ): p = polyfit(x, y, n); výsledkom je matica p s koeficientami poynómu stupňa n matica p má n+1 prvkov (posledný prvok je konštantný člen – pozor, toto sa líši od často používanej aproximácie a0 + a1x + a2x2+ a3x3+ ...)

Programovanie geofyzikálnych úloh v prostredí MATLAB ďalšie dôležité príkazy – fitovanie polynómu: príklad: clear all; close all; clc; x = (0: 0.1: 2.5)'; %vygenerovanie matice x y = erf(x); %chybova funkcia (error function) p = polyfit(x,y,5); %samotne nafitovanie polynomom 5.stupna m= numel(x) for j = 1:m % do matice fit(j) sa vygenerujú hodnoty polynomickej aproximácie fit(j) = p(1)*x(j)^5+ p(2)*x(j)^4+ p(3)*x(j)^3 + p(4)*x(j)^2 + p(5)*x(j) + p(6); end; plot(x,y, x,fit); xlabel('x[]','FontSize',10); ylabel('functions []','FontSize',10); legend(' error function ' ,'polynomial fit');

Programovanie geofyzikálnych úloh v prostredí MATLAB ďalšie dôležité príkazy: Konvolúcia: príkaz: conv(x,y) príklad: filtrácia náhodnej vygenerovanej funkcie pomocou jednoduchého 3-prvkového car-box filtra (kĺzajúci priemer) close all; clear all; clc; x1 = randn(100,1); % generuje maticu nahodnych cisel s rozmermi 100x1 plot(x1); hold; %nakresli graf funkcie x1 a pocka na dalsie kreslenie xlabel('porad. cislo []','FontSize',10); ylabel('funkcie []','FontSize',10); b1 = [1; 1; 1]/3; %definovanie 3-prvkoveho car-box filtra ako maticu 3x1 y1 = conv(b1,x1); %konvolucia dvoch signalov (matic) n1 = length(y1) %dlzka vystupu konvolucie je n+m-1, kde m je dlzka filtra plot(y1,'--r') ; %dokresli graf vyhladenej funkcie y1 cervenou prerusovanou legend('vygenerovane','filtrovane'); % vykreslenie nie je uplne korektne… preco?

Programovanie geofyzikálnych úloh v prostredí MATLAB ďalšie dôležité príkazy: riešenie systému lineárnych rovníc: Ax = b kde A je tzv. matica systému (m-riadkov  n-stĺpcov) , x je vektor hľadaných neznámych – jednostĺpcová matica (n-riadkov  1-stĺpec) a b tzv. pravá strana systému - jednostĺpcová matica (m-riadkov  1-stĺpec) systém je riešiteľný, keď m = n (počet neznámych = počet rovníc), prípadne keď m > n, kde ide o tzv. preurčený systém (rieši sa metódou LSQ)

Programovanie geofyzikálnych úloh v prostredí MATLAB ďalšie dôležité príkazy: riešenie systému lineárnych rovníc: Ax = b kde A je tzv. matica systému (m-riadkov  n-stĺpcov) , x je vektor hľadaných neznámych – jednostĺpcová matica (n-riadkov  1-stĺpec) a b tzv. pravá strana systému - jednostĺpcová matica (m-riadkov  1-stĺpec) - poznáme veľké množstvo metód – Matlab ich poskytuje v značnom množstve - hlavný príkaz v Matlabe: x = A\b; (\-‘backslash‘ na rozdiel od /-‘slash‘) (x=A/b by riešil prípad xA = b) (tento je však „čiernou skrinkou = black box“ – nevieme, že pre akú metódu sa Matlab pri konečnej realizácii rozhodne) príklad: clear all; close all; clc; A=magic(3) b=[3; 1; 4] x = A\b % použitie „black-box“ metódy

Programovanie geofyzikálnych úloh v prostredí MATLAB riešenie systému lineárnych rovníc: Ax = b - hlavný príkaz v Matlabe: x = A\b; - ďalšie možnosti: - LU-rozklad (LU-decomposition), - Choleského-rozklad (Cholesky-decomposition), - SVD-rozklad (SVD-decomposition), - QR-rozklad (QR-factorization), - použitie pseudo-inverznej matice (v prípade, že matica systému A je singulárna)

Programovanie geofyzikálnych úloh v prostredí MATLAB riešenie systému lineárnych rovníc: Ax = b príklady: clear all; A=magic(3) b=[3; 1; 4] [L,U] = lu(A) % použitie LU-rozkladu y = L\b % rieši spodný trojuholníkový systém x = U\y % rieši horný trojuholníkový systém R = chol(A) % použitie Choleského-rozkladu; pozor matica A musí spĺňať y = R’\b % určité podmienky (tzv. pozitívne definitná, t.j. xTAx > 0) x = R\y x = pinv(A)*b %použitie pseudo-inverznej matice

Programovanie geofyzikálnych úloh v prostredí MATLAB riešenie systému lin. rovníc: príklady: clear all; A=magic(3) b=[3; 1; 4] x1 = A\b [U,S,V] = svd(A) % použitie SVD-rozkladu (Singular Value Decomposition) for i=1: sqrt(numel(A)) % preklopenie diagonálnych prvkov matice S SD(i,i) = 1/S(i,i); end; x = V*SD*(U'*b) c = cond(A) % tzv. condition number (hovorí o miere nestability systému) [Q,R] = qr(A) % použitie QR-rozkladu y = Q\b x = R\y

Programovanie geofyzikálnych úloh v prostredí MATLAB riešenie systému lineárnych rovníc: príklady použitia z geofyziky: LSQ; v metóde najmenších štvorcov sa vždy rieši systém tzv. normálnych rovníc, ktoré majú toľko neznámych, koľko je rovníc (získaných deriváciou sumy štvorcov odchyliek podľa hľadaných neznámych koeficientov) riešenie obrátenej úlohy pre mnohé metódy (mnohé gravimetrické a magnetometrické riešenia; ERT – „Locke“) väčšinou systém rovníc popisuje vzťah medzi jednou bunkou modelu a bodov merania, v ktorom sa dané pole modeluje riešenia pre tzv. semi-automatické interpretačné metódy (Wernerova a Eulerova dekonvolúcia) - atď., atď, atď., ...

Programovanie geofyzikálnych úloh v prostredí MATLAB riešenie systému lineárnych rovníc: príklad použitia z geofyziky – Wernerova dekonvolúcia v magnetometrii: Werner (1953) postavil základnú myšlienku svojej interpretačnej techniky na „vyhľadávaní“, „rozpoznávaní“ účinku 2D-dajky (dosky) v profilových hodnotách DT. Táto idea je založená na využití základného vzťahu pre účinok DT(x) 2D-dajky (ako racionálnej funkcie) (napr. Grant-West, 1965, s. 325): (1) kde x je súradnica bodu pozdĺž profilu (profil sa uvažuje na úrovni z=0), x0 a z0 sú súradnice stredu horného okraju dajky, hodnoty A a B sú funkcie magnetizácie a geometrie dajky

Programovanie geofyzikálnych úloh v prostredí MATLAB riešenie systému lineárnych rovníc: príklad použitia z geofyziky – Wernerova dekonvolúcia v magnetometrii: rovnica (1) je upravená na tvar: x2DT = a0 + a1x + b0DT + b1xDT, (2) kde Werner (1953) zaviedol nové konštanty a0, a1, b0 a b1: a0= -Ax0 + Bz0 , a1 = A, (3) b0 = - x02 - z02 , b1 = 2x0 . a ich vzťah ku hľadaným neznámym x0, z0, A a B je daný: x0 = b1/2 , (4) (5) A = a1 , (6) B = (a0 + 0.5 a1b1)/z0 , (7)

Programovanie geofyzikálnych úloh v prostredí MATLAB riešenie systému lineárnych rovníc: príklad použitia z geofyziky – Wernerova dekonvolúcia v magnetometrii: rovnicu (2), ktorá obsahuje 4 neznáme a0, a1, b0 a b1 (ktoré majú jednoznačne definovaný vzťah k hľadaným x0, z0, A a B): x2DT = a0 + a1x + b0DT + b1xDT, (2) vieme napísať pre štyri rôzne polohy okna na profile x1=x(1), x2=x(2), x3=x(3), x4=x(4) štyri krát: a0 + a1x(1) + b0DT(x1) + b1x(1)DT(x1) = x(1)2DT(x1) , a0 + a1x(2) + b0DT(x2) + b1x(2)DT(x2) = x(2)2DT(x2) , a0 + a1x(3) + b0DT(x3) + b1x(3)DT(x3) = x(3)2DT(x3) , a0 + a1x(4) + b0DT(x4) + b1x(4)DT(x4) = x(4)2DT(x4) . čo predstavuje systém 4 rovníc o 4 neznámych typu Ax = b a vieme ho riešiť pre každú polohu posúvajúceho sa okna pozdĺž interpretovaného profilu

Werner deconvolution – algorithm (MatLab script) clear all, close all; % INPUT OF PROFILE DATA - from 2 columns file (into matrix inpXdT) inpXdT = dlmread('mod2.dat',' '); % columns are separated into vectors X and dT X=inpXdT(:,1); dT=inpXdT(:,2); % number of readed data-rows is determined - put into m m = numel(X); % plotting the graph of input data plot(dT); xlabel('x [m]','FontSize',10); ylabel('dT[nT]','FontSize',10); % operator (window) length operl = 4;

Werner deconvolution – algorithm (MatLab script), continuation % MAIN ALGORITHM OF WERNER DECONVOLUTION % main cycle along the profile data, sol_i - order number of obtained solutions sol_i=0; for i=1:m-operl-1 % creation of the matrix for 4 stages of the interpr. equation for k=0:operl-1 A(k+1,1)=1; A(k+1,2)=X(i+k); A(k+1,3)=dT(i+k); A(k+1,4)=X(i+k)*dT(i+k); end; % creation of the right-hand side vector b b(k+1,1) = X(i+k)*X(i+k)*dT(i+k); % solution of the Ax = b system x = pinv(A)*b; c = cond(A); % number of solutions will be increased sol_i = sol_i + 1; % calculation of dike parameters x0 and z0

Werner deconvolution – algorithm (MatLab script), continuation % calculation of dike parameters x0 and z0 x_sol0(sol_i,1) = x(4)/2; z_sol0(sol_i,1) = -sqrt(-x(3)-x(4)*x(4)/4); c_sol0(sol_i,1) = c; % if the solution for x0 is not in the interval of the profile, % or if the solution for z0 is not pure real number, it will be not accepted if ( x_sol0(sol_i,1)<X(i) ) | ( x_sol0(sol_i,1)>X(i+operl-1) ) | ( imag(z_sol0(sol_i,1))~=0 ) sol_i=sol_i - 1; end; end; % end of the main cycle along the profile data, sol_i % plotting of solutions

Werner deconvolution – algorithm (MatLab script), continuation % plotting of solutions %plot(x_sol0,z_sol0) figure, plot(x_sol0,z_sol0,'--rs','LineWidth',2,... 'MarkerEdgeColor','k',... 'MarkerFaceColor','g',... 'MarkerSize',6) grid on axis([X(1) X(m) -30 0]); xlabel('x [m]','FontSize',10); ylabel('z[m]','FontSize',10); % writing of determined solutions into a file % creating a matrix from solution vectors solXZ = [x_sol0 z_sol0 c_sol0]; save werner_solutions.dat solXZ -ascii -double; % END OF THE SCRIPT

Programovanie geofyzikálnych úloh v prostredí MATLAB funkcie v Matlabe: zadefinované Matlabom (napr. sin(x), log(x),...) volanie – buď iba meno(parametre) alebo premenna = meno(parametre) dôležitý je tu pojem tzv. handle funkcie, čo je pomocná premenná (presnejšie údajový typ), ktorá obsahuje informáciu použitú pri referencovaní funkcie a táto môže byť neskôr využitá (podrobnejšie neskôr s Davidom ...) definované užívateľom musia byť samostatných M-súboroch alebo vhodne zakomponované v skripte (samotný celý skript potom musí byť funkciou a v rámci nej môžu byť definované ďalšie pod-funkcie) zadefinovanie: function [fout] = meno(vstupné parametre) jadro funkcie; ........ fout = výsledný vzťah;

Programovanie geofyzikálnych úloh v prostredí MATLAB funkcie v Matlabe – definované užívateľom: príklad: Vxz pre 3D hranol v gravimetrii Skript prism_3Dgrav_Vxz.m a z neho volaná funkcia Vxz_pomoc.m

Programovanie geofyzikálnych úloh v prostredí MATLAB funkcie v Matlabe – definované užívateľom: príklad: function [fout] = Vxz_pomoc(X,Y,Z) % help function R = sqrt(X*X + Y*Y + Z*Z); fout = log(Y + R); % -------------------------------------------------------------------- hlavný program (viac priamo v skripte prism_3Dgrav_Vxz.m): kappa = 6.67E-11; sigma = 1000; xsi1 = -500; xsi2 = 500; eta1 = -500; eta2 = 500; dzeta1 = 0.1; dzeta2 = 4000; zc = 0; yc = 0; xc = -3000; i = 1; while xc<=3000 X1=xsi1-xc; X2=xsi2-xc; Y1=eta1-yc; Y2=eta2-yc; Z1=dzeta1-zc; Z2=dzeta2-zc; pomoc = Vxz_pomoc(X2,Y2,Z2)-Vxz_pomoc(X1,Y2,Z2)-Vxz_pomoc(X2,Y1,Z2)... +Vxz_pomoc(X1,Y1,Z2)-Vxz_pomoc(X2,Y2,Z1)+Vxz_pomoc(X1,Y2,Z1)... +Vxz_pomoc(X2,Y1,Z1)-Vxz_pomoc(X1,Y1,Z1); Vxz(i) = -1E5*kappa*sigma*pomoc; xcor (i) = xc; xc = xc + 2; i = i + 1; end;

Programovanie geofyzikálnych úloh v prostredí MATLAB funkcie v Matlabe – definované užívateľom: zložitejší príklad: Vz pre 3D hranol s polynom. zmenou hustoty Zložitejší vzorec (detaily v súbore: Vzorec_3Dhranol_polynom_density.ppt) Zo skriptu poly_3Dprism.m sú volané funkcia I0 až I5.

poznámka k viacrozmerným poliam: Programovanie geofyzikálnych úloh v prostredí MATLAB poznámka k viacrozmerným poliam: základné dátové štruktúry sú matice: A(riadok,stlpec) viacrozmerné dátové štruktúry sú polia: B(riadok,stlpec,stranka)

poznámka k viacrozmerným poliam: Programovanie geofyzikálnych úloh v prostredí MATLAB poznámka k viacrozmerným poliam: niektoré užitočné príkazy (funkcie) pre prácu s viacrozmernými poliami: ndims – počet rozmerov poľa cat – spájanie polí shiftdim – posun rozmerov squeeze – odstránenie rozmerov s veľkosťou 1 ndgrid – generovanie polí pre N-rozmerné funkcie a interpoláciu permute - permutácia rozmerov poľa ipermute – inverzná permutácia rozmerov poľa použitý zdroj: Bartko R., Miller M., MATLAB I. – algoritmizácia a riešenie úloh.

Ďalší príklad programu: jednoduché spracovanie gravimetrických údajov (mikrogravimetria) skript: micro_grav_processing.m načítanie nameraných údajov vyseparovanie údajov zo základného bodu (ZB) a ostatných bodov preloženie polynómu hodnotami na ZB oprava o chod (hodnôt na všetkých ostatných bodoch) načítanie informácie o hodnote na ZB prepočet na hodnotu ZB (na „absolútne“ hodnoty) načítanie výšok meracích bodov výpočet neúplnej Bouguerovej anomálie (NBA) zobrazenie NBA spolu s modelovaným účinkom 2D horiz. valca (zadanie na tento týždeň – pokúste sa posledný krok urobiť pomocou volania externej funkcie na výpočet účinku 2D hor. pásu) všetky kroky sú ukázané na testovacom súbore z meraní na Gagarinovej ul. v Bratislave: Gagar_raw.dat, Gagar_base_station.dat, Gagar_elev.dat

Ďalší príklad programu: Účinok (Vz) 2D hor. pásu: kde m = dhr, (tzv. plošná hustota), dh je hrúbka pásu, 2b jeho horiz. rozmer, h je hĺbka jeho uloženia.

Programovanie geofyzikálnych úloh v prostredí MATLAB Zaujímavá mongrafia: Martin H. Trauth, 2006: MATLAB Recipes for Earth Sciences. Springer-Verlag Berlin Heidelberg, 230 p.

Programovanie geofyzikálnych úloh v prostredí MATLAB Nasledujúce 2 stretnutia: Práca s GUI (Graphical User Interface) a celkovo grafické prostredie (plus ďalšie pokročilé veci) - David