Programowanie Matlaba

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Mgr inż.Marcin Borkowski Podstawy Java Część II
Funkcje c.d. Strukturalność. Algorytmy. Ćwiczenia przed kolokwium.
typy całkowite (całkowitoliczbowe)
ZŁOŻONOŚĆ OBLICZENIOWA
WEKTORY.
Macierze Maria Guzik.
Wprowadzenie do Mathcada
Podstawy rachunku macierzowego
Kurs WWW – wykład 5 Paweł Rajba
Funkcje znakowe, liczbowe i obsługa dat Kolejny krok w poznaniu SQL-a.
Funkcje znakowe, liczbowe i obsługa dat Kolejny krok w poznaniu SQL-a.
INFORMATYKA Wykładowca: mgr Tadeusz Ziębakowski p. 126 I piętro (naprzeciw dziekanatu)
AUTOMATYZACJA OBLICZEŃ INŻYNIERSKICH
Komunikacja z arkuszem. Iteracje. Funkcje.
Jak uczę programowania?
EXCEL podstawy (C) W.K
Arkusz kalkulacyjny Excel
Kolejność wykonywania działań
Matematyka.
Klasa III b.
O relacjach i algorytmach
Podstawy programowania
Programowanie w języku Matlab
Wykład 2 Dr Aneta Polewko-Klim
Podstawy Informatyki II
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Wyrażenia algebraiczne
Microsoft Office Excel
TABLICE C++.
Procedury i funkcje.
Algorytmy i struktury danych
2010 © Uniwersytet Rzeszowski | 1 Temat: Autor: Jan Kowalski Ocena zagrożeń ludności cywilnej we współczesnych konfliktach zbrojnych.
Podstawy programowania w języku C i C++
Na początek kilka pojęć z arkusza
Użytkowanie i programowanie Matlaba
MOiPP Matlab Sortowanie Obliczenia symboliczne - Symbolic ToolBox
MOiPP Wykład 3 Matlab Przykłady prostych metod obliczeniowych.
Visual Basic for Applications Poziom podstawowy Zajęcia 2
MOiPP Wykład 7 Matlab cd..
Materiały szkoleniowe Miedziowego Centrum Kształcenia Kadr.
MOiPP Matlab Przykłady metod obliczeniowych Obliczenia symboliczne
NA UŁAMKACH DZIESIĘTNYCH.
MS-Excel – formuły i funkcje
PWSW Mechatronika Wykład 7 Matlab cd.
MOiPP Wykład 2 Matlab tablice.
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
PROGRAMOWANIE W JAVA Informatyka Stosowana – ROK II / III Laboratoria mgr inż. Krzysztof Bzowski.
Wprowadzenie do Matlaba
Matematyka Ekonomia, sem I i II.
Metody rozwiązywania układów równań liniowych
METODY REPREZENTOWANIA IFORMACJI
DZIAŁANIA NA UŁAMKACH ZWYKŁYCH opracowała mgr Agnieszka Dyrka
SciLab.
Pakiety numeryczne Tablice: tworzenie, indeksowanie, wymiary Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
SciLab.
Pakiety numeryczne Skrypty, funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Informatyka Transport Matlab c.d. Macierze cd. Wykresy graficzne
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
Osoby prowadzące zajęcia z Informatyki (II część): Prof. Mirosław Czarnecki (W+L) Konsultacje:piątek (p. 302a)
Osoby prowadzące zajęcia z Informatyki (II część): Prof. Mirosław Czarnecki (W+L) Konsultacje:piątek (p. 302a)
Elementy cyfrowe i układy logiczne
Informacje ogólne.
Podstawy Informatyki.
działania na wielomianach
ETO w Inżynierii Chemicznej
Obliczenia w Matlabie Tablice
Obliczenia inżynierskie w Matlabie
Obliczenia w Matlabie Analiza statystyczna
Zapis prezentacji:

Programowanie Matlaba

Operacje na macierzach: * - mnożenie / - dzielenie \ - dzielenie lewostronne ^ - potęgowanie + - dodawanie - - odejmowanie ' - transponowanie sprzężone .' - transponowanie niesprzężone [] - łączenie

Operacje na tablicach/skalarach .* - mnożenie ./ - dzielenie .\ - dzielenie lewostronne .^ - potęgowanie + - dodawanie - - odejmowanie

Indeksowanie tablic/macierzy Indeksowanie tablic wykonuje się wyrażeniem w postaci A(N,M) gdzie N i M są w ogólności wektorami np.: jeden_element = A(1,1) pierwszy_wiersz = A(1,1:4) pierwsza_kolumna = A(1:2,1) inny_przyklad = C([1 2 1], 1:2:5) Symbol end pierwszy_wiersz = A(1,1:end) Symbol end może być stosowany w indeksowaniu odwrotnym pierwsza_kolumna = A(end:-1:1,1) % Samodzielny znak dwukropka pierwszy_wiersz = A(1,:) Tablicę można indeksować jednym indeksem Tablicę można indeksować tablicą logiczną

Tablice komórkowe Cell Arrays np. C = {[1] [2 3] [1 2; 3 4] ; ones(3,3) 'wynik' @permute} Wybieranie elementów/indeksowanie C{1,3} C{4} Najczęstsze zastosowania Teksty C = {'poczatek' 'kontynuacja' 'koniec'} Elementy o różnym rozmiarze

Tablice komórkowe xxx2=['17:30' ;'18:00'; '18:30']; c1=datenum(xxx, 'HH:MM'); c2=datenum(xxx2, 'HH:MM'); c3=datenum(xxx3, 'HH:MM'); a1 = subplot(3,1,1); plot(c,randn(10,1)); hold on; datetick('x','HH:MM') a2 = subplot(3,1,2); plot(a2,c2,randn(3,1)) a3 = subplot(3,1,3); plot(a3,c3,randn(4,1)) linkaxes([a1 a2 a3], 'x');

Tablice komórkowe xxx2=['17:30' ;'18:00'; '18:30']; x = {xxx, xxx2, xxx3} for i = 1:3 c = datenum(x{i}, 'HH:MM'); a = subplot(3,1,i); plot(c,randn(size(x{i},1),1)); hold on; datetick('x','HH:MM') end linkaxes([a1 a2 a3], 'x'); Nie stosować niepotrzebnie tablic komórkowych do obliczeń

Funkcje Przykłady function [out1,out2,out3]= mojafunkcja(in1,in2) Funkcja nic nie zwraca function [] = mojafunkcja(in1,in2) lub function mojafunkcja(in1,in2) Funkcja bez paramterów function mojafunkcja()

Funkcje Po co stosować funkcje? Separujemy zmienne – funkcja nic nie zmieni w sposób niekontrolowany w środowisku - funkcja „posprząta po sobie” Funkcje wykonują się szybciej Program ułożony z funkcji jest czytelniejszy i krótszy Umożliwia budowanie stopniowe dużych programów Kod w postaci funkcji może być stosowany dla innych zadań

Funkcje function plott(time,y) % plott(time,y) rysuje os x jako czas % format czasu HH : MM : SS % podaj wektor time w sekundach godziny=floor(time./3600); minuty = time./3600-godziny; czas = godziny+minuty; plot(czas,y); xt = get(gca,'XTick'); xt_godz = floor(xt); xt_min10=xt-xt_godz; xt_min=floor(60*xt_min10); xt_sec10 = 60*xt_min10-xt_min; xt_sec = floor(60*xt_sec10); podpisy = cell(1,length(xt_sec)); for k=1:length(xt_sec) tg = num2str(xt_godz(k)); if xt_godz(k)<10 tg = ['0' tg]; end tm = num2str(xt_min(k)); if xt_min(k)<10 tm = ['0' tm]; ts = num2str(xt_sec(k)); % tst = num2str(ts); if xt_sec(k)<10 ts = ['0' ts]; podpisy{1,k} = [tg ':' tm ':' ts]; set(gca,'XTickLabel',podpisy) % koniec funkcji

Funkcje function plott(time,y) % plott(time,y) rysuje os x jako czas % format czasu HH : MM : SS % podaj wektor time w sekundach godziny=floor(time./3600); minuty = time./3600-godziny; czas = godziny+minuty; plot(czas,y); xt = get(gca,'XTick'); xt_godz = floor(xt); xt_min10=xt-xt_godz; xt_min=floor(60*xt_min10); xt_sec10 = 60*xt_min10-xt_min; xt_sec = floor(60*xt_sec10); podpisy = cell(1,length(xt_sec)); for k=1:length(xt_sec) tg = num2str(xt_godz(k)); if xt_godz(k)<10 tg = ['0' tg]; end tm = num2str(xt_min(k)); if xt_min(k)<10 tm = ['0' tm]; ts = num2str(xt_sec(k)); % tst = num2str(ts); if xt_sec(k)<10 ts = ['0' ts]; podpisy{1,k} = [tg ':' tm ':' ts]; set(gca,'XTickLabel',podpisy)

Zadanie domowe – opisywanie osi czasu function plott(time,y) % plott(time,y) rysuje os x jako czas % format czasu HH : MM : SS % podaj wektor time w sekundach godziny=floor(time./3600); minuty = time./3600-godziny; czas = godziny+minuty; plot(czas,y); xt = get(gca,'XTick'); xt_godz = floor(xt); xt_min10=xt-xt_godz; xt_min=floor(60*xt_min10); xt_sec10 = 60*xt_min10-xt_min; xt_sec = floor(60*xt_sec10); podpisy = cell(1,length(xt_sec)); for k=1:length(xt_sec) tg = num2str(xt_godz(k)); if xt_godz(k)<10 ; tg = ['0' tg] ; end tm = num2str(xt_min(k)); if xt_min(k)<10 ; tm = ['0' tm] ; end ts = num2str(xt_sec(k)); if xt_sec(k)<10 ; ts = ['0' ts] ; end podpisy{1,k} = [tg ':' tm ':' ts]; end set(gca,'XTickLabel',podpisy)

Zadanie domowe

Zadanie domowe – opisywanie osi czasu xxx=['14:30';'15:00';'15:30';'16:00';'16:30';'17:00';'17:30';'18:00';'18:30';'19:00']; xxx2=['17:30' ;'18:00'; '18:30']; xxx3=['14:30';'15:00' ;'15:30'; '16:00'] x = {xxx, xxx2, xxx3} for i = 1:3 c = datenum(x{i}, 'HH:MM'); a = subplot(3,1,i); plot(c,randn(size(x{i},1),1)); hold on; datetick('x','HH:MM') end linkaxes([a1 a2 a3], 'x');

Zadanie domowe – opisywanie osi czasu

Zadanie domowe – opisywanie osi czasu

Zadanie domowe – opisywanie osi czasu ts1 = timeseries(A1, T1); ts1.Name = 'Amplitude'; ts1.TimeInfo.Units = 'seconds'; ts1.TimeInfo.StartDate='01-Jan-2013'; % start date. ts1.TimeInfo.Format = 'HH:MM:SS'; % format for display on x-axis. t_min = min ([T1(1) T2(1) T3(1)]) t_max = max ([T1(l1) T2(l2) T3(l3)]) x=(0.8*(T1(1)-t_min)/(t_max-t_min))+0.1; y=(0.8*(T1(l1)-t_min)/(t_max-t_min))+0.1; subplot ('Position', [x, .1, y-x, .27]) plot(T1,A1,'-.r*') title ('')

Zadanie domowe

Przykład do omówienia % Program do liczenia R, korzysta z wczesniej obliczonego CFF oraz gestosci % prawdopodobienstwa wystapienia wstrzasu, wykorzystuje rowniez stale % Mozna wczytac dajke Pink Green AS=0.01; %stala ta=6; %stala load('Y.mat');load('X.mat'); load('C.mat'); load('density.mat'); aft=load('aft_3380-3459.99.txt'); %wczytanie aftershockow y=aft(:,1); x=aft(:,2); cou=1; N=0; Rate=0;

Przykład do omówienia cou=1; N=0; Rate=0; for t=1:1:6 for m=1:32 for n=1:32 R(n,m)=dens(n,m)/((exp(-C(n,m)/AS)-1)*exp(-t/ta)+1); end N(cou)=sum(sum(R)); Rate=Rate+R; cou=cou+1;

Przykład do omówienia Yy=Y(1,:); Yy=Yy(:); Xx=X(:,1); for i=1:length(aft) % przyrownywanie wspolrzednych wstrzasow for j=1:(length(Yy)-1) % do odpowiednich oczek siatki Y if (y(i)>Yy(j) && y(i)<Yy(j+1) ) y(i)=Yy(j); else continue end

Regresja liniowa Jest Statistics Toolbox, który zawiera kilka możliwości liczenia regresji liniowej np.: mdl = LinearModel.fit(X,y) [r,m,b] = regression(t,y) beta = mvregress(X,Y) % Multivariate linear regression [b,bint,r,rint,stats] = regress(y,X) Można liczyć samemu w oparciu o algebrę macierzy

Regresja liniowa Y2 = B1(3:end) ; X2 = [ones(norigin,1) p.oml] ; varB1 = stats(4) * inv(X1' * X1) ; varP = varB1(3:end,3:end) ; plot(wyn(1:i)) ; I = eye(norigin) ; ee = 1 ; V2 = varP + I * ee ; B2 = (X2' * (V2 \ X2)) \ X2' * (V2 \ Y2) ; tm = (Y2 - X2*B2) ; sigma_2 = tm' * (V2 \ tm) / npha ; result.sigma = sqrt(sqr(stats(4)) + sigma_2) ; result.h = h ; result.a = zeros(4,1) ; result.a(1:2) = B2 ; result.a(3) = B1(1) ; Y = Y1 ; X = ones(npha,3) ; X(:,3) = X1(:,1) ; X(:,2) = [p.pha.ml]' ; B = result.a(1:3) ; tm = (Y - X*B) ; result.S2 = sqrt(tm' * tm / npha) ;

Regresja liniowa cftool

Warto zapamiętać Nie stosować C= inv(B) * A ; Lepiej się liczy – szybciej i dokładniej C = B \ A ;

Czytanie/pisanie danych save … -ascii -double -tabs load Czytanie/pisanie formatowane fopen fprintf, fwrite fscanf, fgetl, fgets, fread fclose Czytanie/pisanie operuje na wektorach. Nie ma potrzeby kontrolowania rozmiaru wczytywanych danych

Tablica struktur sta = 229x1 struct array with fields: sid sname slat slon selev

Tablica struktur >> disp(sta(1)) sid: 1 sname: 'GKP' slat: 53.2697 slon: 17.2367 selev: 115

Tablica struktur >> b = [sta.slat]'; >> disp(b(1:5)) 53.2697 77.0057 50.8428 49.6314 50.2195

Tablica struktur >> b = [[sta.slat]' [sta.slon]'] ; >> disp(b(1:5,:)) 53.2697 17.2367 77.0057 15.5301 50.8428 16.2931 49.6314 22.7075 50.2195 19.7984

Tablica struktur >> b = {sta.sname}' ; >> b{1:2} ans = GKP HSP

Tablica struktur >> b = {sta.sname}' ; >> b b = 'GKP' 'HSP' 'KSP‘ 

Programowanie Matlaba Koniec Dziękuję za uwagę i zainteresowanie