Matlab III Instrukcje, interpolacja, dopasowanie krzywych, Metody numeryczne w optyce 2017
Typy danych cd.. cell macierz komórkowa (blokowa) pojedynczymi elementami takiej macierzy mogą być nie tylko liczby ale i dowolne dane. W macierzy komórkowej możemy przechować kilka macierzy o różnym wymiarze, tekst i strukturę jednocześnie. macierz komórkową (cell) tworzymy przy użyciu nawiasów klamrowych {} >> A={1:5,rand(3,5), ala ma kota'} A = Wyświetlanie danych z komórek a{1,1} % Wyświetlenie pojedynczego elementu a{2,:} % Wyświetlenie kolumny elementów celldisp(a) % Wyświetlenie całości danych cellplot(a) % Graficzne przedstawienie danych >> A{1,3} ans = ala ma kota Przykład [1x5 double] [3x5 double] 'ala ma kota >> cellplot(a) >> B=cell(2,4); % definicja macierzy komórek o rozmiarze 2x4 z pustymi komórkami pozwala na wcześniejszą alokację pamięci co umożliwia przyspieszenie wykonywania operacji. 2
Elementy programowania Operatory logiczne & (and) Logiczne i (or) Logiczne lub ~ (not) Logiczne nie Xor Operacja exclusive or any Operacja logiczna - jeśli jakiś all Operacj alogiczna - wszystkie Operatory relacji & (and) Logiczne i == Relacja równości ~= Relacja nierówności < Relacja mniejszości > Relacja większości <= Relacja mniejsze-równe >= Relacja większe-równe 3
Elementy programowania Instrukcje Instrukcja for wielokrotne wykonywanie kodu... for it_zm = p_wart : k_wart kod Instrukcja while kod jest wykonywany dopóki spełnione jest wyrażenie warunkowe... while wyrażenie warunkowe kod N=5; A=zeros(N,N) for i=1:n for j=1:n A(i,j)=cos(i)*cos(j); k=0; n=0; while k<10 && n<10, k =k+1; n=n+1; Iloczyn=k*n k,n,iloczyn Przykłady 4
Elementy programowania Instrukcje Instrukcja if, elseif, else wykonanie fragmentu kodu jeśli spełnione są określone warunki N=10; A=zeros(1,N); Przykłady if warunek 1 Kod 1 elseif warunek 2 Kod 2 else Kod 3 for k=1:n; if k> 4&& k<6 A(k)=2; elseif k> 6 && k < 10 else A(k)=4; A(k)=1; A >> A = 1 1 1 1 2 1 4 4 4 1 5
Elementy programowania Instrukcje Instrukcja switch-case wybór z listy znanych argumentow switch p case 1 instrukcja 1 case 2 instrukcja 2 otherwise inna instrukcja Przykłady n = input( Wprowadź cyfrę: '); switch n case -1 disp( ujemna') case 0 disp('zero') case 1 disp( dodatnia') otherwise disp( inna wartość') 6
Interpolacja: W oknie wykreślania (Figure) Tools Basic Fitting spline interpolant shape-preserving interpolant Interpolacja/dopasowanie krzywej Wersja okienkowa Dopasowanie Tools Basic Fitting wielomian stopnia N, gdzie N [110] Interpolacja wyznaczenie krzywej przechodzącej przez dane punkty. Dopasowanie (aproksymacja) przybliżenie krzywej do danych punktów. 7
Interpolacja Do czego służy wizualizacja: przedstawienie tru danych do zagęszczania danych/tabel yi=interp1(x, y, xi, metoda ); x, y wektory współrzędnych węzłów nterpolacji, xi wektor punktów na osi X dla których będą obliczane interpolowane wartości yi Metody: linear funkcja łamana 'spline - funkcja sklejana 3-go stopnia 'cubic', 'pchip - wielomian 3-go stopnia 'nearest - funkcja najbliższego sąsiedztwa Przykład >> x=0:10; y = sin(x); xi = 0:.25:10; >> yi = interp1(x, y, xi); >> plot(x, y, 'o', xi, yi,'*',xi,sin(xi)) Funkcje interp2 - funkcja interpolująca w 2 wymiarach dla danych określonych na regularnej siatce. interp3 - funkcja interpolująca w 3 wymiarach dla danych określonych na regularnej siatce. Do generacji siatki należy używać funkcji meshgrid. 8
Aproksymacja Aproksymacja wielomianowa [p,s,mu] = polyfit(x,y,n) dopasowanie wielomianu metodą najmniejszych kwadratów n - stopień wielomianu, y=x^n+x^(n-1) + x + 1, p - wektor współczynników wielomianu s struktura wykorzystana do obliczenia niepewności dopasowania za pomocą polyval [y,delta] = polyval(p,x,s) y- dopasowana funkcja delta - 50% błąd dopasowania wielomianu do danych Przykład Wykonanie funkcji >> x = linspace(0,4*pi,10); y = sin(x); >> p = polyfit(x,y,7); >> x1 = linspace(0,4*pi); >> y1 = polyval(p,x1); >> figure >> plot(x,y,'o') >> hold on >> plot(x1,y1) >> hold off 9
Aproksymacja - toolbox f = fit(x,y,model) Aproksymacja Interpolacja i dopasowanie do krzywych i powierzchni >> CFLIBHELP lista modeli dostępnych w toolboxie MODELNAME Curves: poly1 poly2 poly3... poly9 EQUATION Y = p1*x+p2 Y = p1*x^2+p2*x+p3 Y = p1*x^3+p2*x^2+...+p4 Y = p1*x^9+p2*x^8+...+p10 Przykład >> x=linspace(-10,10,100)'; % wektor kolumnowy!!! >> y=x.^2; >> f=fit(x,y,'poly2') % dopasowanie wielom. 2 st. >> plot(f,x,y) f = Linear model Poly2: f(x) = p1*x^2 + p2*x + p3 Coefficients (with 95% confidence bounds): p1 = 1 (1, 1) p2 = 1.979e-032 (-3.74e-017, 3.74e-017) p3 = 1.599e-015 (1.272e-015, 1.926e-015) weibull exp1 exp2... Y = a*b*x^(b-1)*exp(-a*x^b) Y = a*exp(b*x) Y = a*exp(b*x)+c*exp(d*x) 10
Aproksymacja - toolbox Aproksymacja dowolną funkcją opcje=fitoptions('method', metoda_dopasowania 'Lower',[0,0],... 'Upper',[Inf,max(x)],... 'Startpoint',[1 1]); typ_dopasowania= fittype( wyrażenie, options, opcje ); [c2, gof2]= fit(xdata,ydata,typ_dopasowania) c2 = General model: c2(x) = a.*(x-b).^3 Coefficients (with 95% confidence bounds): a = 1 (1, 1) b = 4.973e-007 (fixed at bound) Przykład >> x=linspace(-10,10,100)'; y=x.^3; >> s = fitoptions('method','nonlinearleastsquares',... 'Lower',[0,0],... 'Upper',[Inf,max(x)],... 'Startpoint',[1 1]); >> f = fittype('a.*(x-b).^3','options',s); % f = fittype('a.*(x-b).^3'); - bez opcji parametry typowe [c2,gof2] = fit(x,y,f) plot(x,y,'o'); hold on; plot(c2); hold off; leg('y','fit') gof2 = sse: 4.6334e-007 rsquare: 1.0000 dfe: 99 adjrsquare: 1.0000 rmse: 6.8412e-005 11
Aproksymacja GUI Interaktywne dopasowanie cftool uruchamia interface graficzny >>cftool 12
Aproksymacja GUI Interaktywne dopasowanie Data wprowadzenie danych >> x=linspace(-10,10,100)'; >>y=x.^3; >>cftool X Data i Y Data wybór danych ze zmiennych znajdujących się w przestrzeni roboczej/ pamięci matlaba Create data set tworzenie zbioru danych do dalszej obróbki 13
Aproksymacja -Interaktywne dopasowanie Fitting opcje dopasowywania Type of fit zbiór predefiniowanych modeli Custom Equation tworzenie własnego modelu Apply uruchamia procedurę fitowania 14
Zadania Materiały https://www.igf.fuw.edu.pl/pl/courses/ 15