Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

OSNOVA: a) Úvod do Matlabu b) Vektory a matice c) 2D grafické výstupy Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 2 pro.

Podobné prezentace


Prezentace na téma: "OSNOVA: a) Úvod do Matlabu b) Vektory a matice c) 2D grafické výstupy Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 2 pro."— Transkript prezentace:

1 OSNOVA: a) Úvod do Matlabu b) Vektory a matice c) 2D grafické výstupy Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 2 pro obor EST BPC2E PŘEDNÁŠKA 7

2 Ú vod do Matlabu (1/5) Co je to MATLAB – interaktivní programový systém The MathWorks, Inc., který umožňuje na základě kombinace programovacích technik (odvozených od základních programovacích jazyků) a široké nabídky funkcí rychlé řešení rozsáhlých technických výpočtů, počítačového modelování a simulace – základním datovým typem MATLABu je matice (n – rozměr- né pole čísel), zkratka „MATrix LABoratory“ – jednotlivé výrazy, příkazy a volání funkcí lze provádět přímo v příkazovém okně nebo lze sekvenčně definovat v souboru s příponou m (***.m), který je možné definovat v libovolném textovém editoru nebo editoru, který je součástí balíku MATLABu – ve škole akademická licence (jen na PC v lab.)

3 Ú vod do Matlabu (2/5) Integrované prostředí

4 Ú vod do Matlabu (3/5) Příkazy v Matlabu ve tvaru: proměnná = výraz - Výrazy se skládají z operátorů, speciálních znaků, funkcí a proměnných. - Pokud chybí přiřazení proměnné, zavádí se systémová proměnná ans. - Umístěním středníku za výrazem potlačíme výstup na obrazovku. - Výsledkem je obecně matice, která se zobrazí na obrazovce. - Jména proměnných a funkcí musí začínat písmenem. - Rozlišují se malá a velká písmena ve jménech proměnných, funkcí a konstant. - Šipkami v příkazovém okně lze listovat v historii příkazů - Klávesou ESC se maže aktuální příkazový řádek

5 Ú vod do Matlabu (4/5) >> / 45 ans = >> b = / 8; >> b = b + 1 >> b = >> c = 1 + 8i; >> d = i; >> c + d ans = i >> e = 2e2; >> f = 3E-1; >> e + f ans = Příklad práce v příkazovém okně: Zápis číselných konstant: e E i (komplexní číslo) Konstanty: pi = …. i nebo j imaginární jednotka realmax maximální reálné číslo realmin minimální reálné číslo inf nekonečno nan nedefinovaná hodnota

6 Ú vod do Matlabu (5/5) Operátory v Matlabu: + sčítání == rovno - odečítání ~= nerovno * násobení < menší než / pravé dělení > větší než \ levé dělení <= menší nebo rovno ^ umocňování >= větší nebo rovno () definice priority. operace prvek po prvku (v matici) && podmínkový logický součin || podmínkový logický součet (podmínkový) & logický součet po prvcích (matice) | logický součet po prvcích (matice) >> u = 13*(2+3^3) u = 377

7 Vektory a matice (1/19) Generování vektoru Vektor v Matlabu se definuje výčtem prvků nebo definicí prvku vektoru na dané pozici, indexování je od 1. Pro generování vektoru s lineárně rostoucími (klesajícími) hodnotami lze použít notaci s dvojtečkou: vektor = od : : do >> u = [ ]; % vycet prvku >> u(3) = 8; % definice jednoho prvku u = >> x = 1:5 % notace s dvojteckou x = >> y = 0:pi/4:pi y = Komentáře: - na řádku za % - celý blok %{ zakomentovaný blok %}

8 Vektory a matice (2/19) Transpozice vektoru: u = u' >> u = [0 1 2]’ % vycet prvku a transp. do sloup. vekt. u = Přístup k položkám specifikací indexu (v kulatých závorkách): >> x = [ ] >> x(4) ans = 8 Výběr části vektoru (od indexu:po index) : >> x(3:5) ans =

9 Vektory a matice (3/19) Generování tabulky - matice se dvěma sloupci pro funkci y = cos(x) >> x = [0.0:0.1:1.0]'; %sloupcový vektor … >> y = cos(2*pi*x); %sloupcový vektor výsledků >> [x y] %spojení dvou sloupcových vektorů ans =

10 Vektory a matice (4/19) Generování matice Matice se v Matlabu definuje podobně jako vektor: výčtem prvků matice nebo definicí prvku matice na dané pozici. U dvourozměrné matice je první index řádkový, druhý je sloupco- vý. Středník odděluje řádky. >> A = [1 2 3; 3 4 5; 5 6 7]; % vycet prvku matice 3x3 >> A(3,1) = 0 % definice jednoho prvku A = >> B = [1:5 9; 2:3:17; 8 9 3:-1:0] % notace s dvojteckou B =

11 Vektory a matice (5/19) Výběr řádků resp. sloupců Výběr řádku nebo sloupce z matice lze provést dvojtečkovou notací použitou pro definici prvků matice: Výběr m-tého řádku matice A : A(m, :) Výběr n-tého sloupce matice A A(:, n) >> A = [1 2 3; 3 4 5; 5 6 7]; % vycet prvku matice 3x3 >> A(2,:) % vektor z druhého řádku ans = >> A(:,1) % vektor z prvního sloupce ans =1 3 5

12 Vektory a matice (6/19) Výběr části řádků resp. sloupců Výběr řádku nebo sloupce z matice lze provést dvojtečkovou notací s definicí od indexu:po index >> A = [11:16; 21:26; 31:36; 41:46] A = >> A(2,3:5) % vektor z druhého řádku od sl. 3 po sl. 5 ans = >> A(2:4,1:4) % matice bez prvního řádku a posledních % dvou sloupců ans =

13 Vektory a matice (7/19) Nahrazení vybraného řádku (sloupce) Náhrada 2 a 4 sloupce z matice A (viz předchozí strana) sloupcem 2 a 3 z matice B : >> B = [99:-1:95; 89:-1:85; 79:-1:75; 69:-1:65] B = >> A(:,[2 4]) = B(:,2:3) %nahrazeni A = % lze taky A(:,2)=B(:,2) a A(:,4)=B(:,3)

14 Vektory a matice (8/19) Prohození pořadí řádků (sloupců) Prohození pořadí sloupců z matice A (viz předchozí strana) sloupcem 2 a 3 z matice B : A = A = A(:, 6:-1:1) A =

15 Vektory a matice (9/19) Maticové operace – maticový součin (netečková notace) >> A = [1:3; 4:6; 7:9] A = >> B = [1 2 4; 2 3 4; 3 3 3] B = >> A*B % maticový součin ans = % pro prvek (1,1): 1*1+2*2+3*3 = = 14

16 Vektory a matice (10/19) Maticové operace – součin po prvcích (tečková notace) >> A = [1:3; 4:6; 7:9] A = >> B = [1 2 4; 2 3 4; 3 3 3] B = >> A.*B % součin po prvcich – teckova notace ans = % pro prvek (1,1): 1*1 = 1

17 Vektory a matice (11/19) Podobně – skalární součin a součin po prvcích (tečková notace) >> X = [ ] X = >> Y = [ ] Y = >> X*Y’ %skalarni soucin = radkovy * sloupcovy (Y je %transponovany, vysledkem je jedno cislo - skalar ans = 78 %1*2 + 14*8 - 9*5 + 3*3 = – = 78 >> X.*Y %součin po prvcich – teckova notace – pozor %neni to vektorovy soucin ans = % pro prvek (1): 1*2 = 2

18 Vektory a matice (12/19) Pro vektorový součin dvou vek- torů je v Matlabu připravena funkce cross() >> X = [4 5 6] X = 456 >> Y = [9 -5 4] Y = 9-54 >> cross(X, Y) %vektorovy soucin, vysledkem je vektor %kolmy na vektory X a Y ans = %pro (1): X(2)*Y(3)- X(3)*Y(2) = %5*4 –6*(-5) = = 50

19 Vektory a matice (13/19) Transpozice matice – operátor ’ >> A = [1:3; 4:6; 7:9] A = >> B = A’ B = Maticové dělení - pravé dělení Z = X/Y je řešením Z*Y = X - levé dělení Z = X\Y je řešením X*Z = Y

20 Vektory a matice (14/19) Příklad: Pravé maticové dělení: >> X = [1:3; 4:6; 7:9] X = >> Y = [2 2 3; 8 1 5; ] Y = >> Z = X/Y Z = >> Z*Y %kontrola Z*Y = X ans =

21 Vektory a matice (15/19) Rozměr vektoru a matice Rozměr vektoru zjistíme voláním funkce lenght(A), kde A je vektor: >> A = 0:3.2:13 % definice vektoru A = >> length(A) % délka vektoru ans =5 Rozměr matice zjistíme voláním funkce size(M), kde M je matice, funkce vrátí vektor o délce 2 (u 2D matice), první prvek udává počet řádků, druhý prvek počet sloupců: >> M = [1:5;2:6] % definice matice M =

22 Vektory a matice (16/19) Pokud chceme zjistit jen počet řádků: >> size(M) % rozměr matice ans = 25 %2 radky a 5 sloupcu >> rows = size(M,1) % počet radku rows = 2 %2 radky Pokud chceme zjistit jen počet sloupců: >> cols = size(M,2) % počet sloupcu cols = 5 %5 sloupcu

23 Vektory a matice (17/19) Převod matice na vektor pomocí funkce reshape(M,1,[]), kde M je matice, druhý argument 1 definuje počet řádků po převodu a třetí argument počet sloupců, pokud je zadáno [], převede se na řádkový vektor celá matice (převádí se po sloupcích), v pří- kladu je uveden i převod na dvouřádkovou matici: >> M = [1:4;5:8;9:12] %definice matice M = >> V = reshape(M,1,[]) %jednoradkovy vektor V = >> N = reshape(M,2,[]) %dvouradkova matice N =

24 Vektory a matice (18/19) Pokud potřebujeme převod na vektor po řádcích využijeme transpozici: >> M = [1:4;5:8;9:12] %definice matice M = >> V = reshape(M’,1,[]) %jednoradkovy vektor V = >> N = reshape(M’,2,[]) %dvouradkova matice N =

25 Vektory a matice (19/19) Funkce sum() u vektoru sečte všechny prvky vektoru, výstupem je číslo, u matice se sečtou všechny prvky ve sloupci, výstupem je vektor s délkou rovnou počtu sloupů původní matice, pokud je třeba sčítat prvky v řádcích lze opět použít transpozici. >> V = 0:2:10 V = >> sum(V) ans = 30 >> M = [1:4;5:8;9:12] M = >> sum(M) ans =

26 2D grafick é výstupy (1/11) Základní funkcí pro vykreslování 2D grafů funkcí je plot(): plot(x, y) vygeneruje standardní 2D graf, kde x a y jsou stejně dlouhé vektory generující n bodů v grafu o souřadnicích [x(1) y(1)], [x(2) y(2)], …[x(n) y(n)], tyto body jsou v grafu standardně spojeny plnou čarou Příklad: Graf funkce y = 2·sin(x)+cos(2x) na intervalu x  >> x = 0:0.01:2*pi; >> y = 2*sin(x) + cos(2*x); >> plot(x,y)

27 2D grafick é výstupy (2/11) plot(x, y, s) vygeneruje standardní 2D graf (viz předchozí stránka, kde s je řetězec definující vizuální podobu vykreslované křivky. Řetězec s může obsahovat tyto specifické znaky: 1) barva čáry: b = modrá g = zelená r = červená c = tyrkysová m = fialová y = žlutá k = černá w = bílá 2) styl čáry: - = plná -- = čárkovaná : = tečkovaná -. = čerchovaná bez znaku = bez čar (jen body) 3) styl bodu:. = tečka o = kroužek + = křížek * = hvězdička s = čtvereček d = kosočtverec

28 2D grafick é výstupy (3/11) 3) styl bodu (pokrač.): v = trojúhelník (vrchol dolů) ^ = trojúhelník (vrchol nahoru) = trojúhelník (vrchol vpravo) p = pentagram h = hexagram Příklad: Model kružnice (parametri- cká definice): x = R·cos(  ) y = R·sin(  ) na intervalu  po 0.2 rad a pro R = 5 s vy- kreslením červenou tečkovanou čárou, body jako hvězdičky >> fi = 0:0.2:2*pi; >> R = 5; >> x = R*cos(fi); >> y = R*sin(fi); >> plot(x,y,’r:*’)

29 2D grafick é výstupy (4/11) plot(x1, y1, s1, x2, y2, s2, … xn, yn, sn) vygeneruje více standardních 2D grafů (viz předchozí stránky) do jednoho společného grafu Příklad: Kompozice dvou harmonic- kých signálů s různou frekvencí a amplitudou (počáteční fáze je nulová) >> t = 0:0.001:1; %casova osa >> f1 = 4; % frekvence 1 >> f2 = 2.5; % frekvence 2 >> A1 = 0.5; %amplituda 1 >> A2 = 0.7; %amplituda 2 >> s1 = A1*sin(2*pi*f1*t); >> s2 = A2*sin(2*pi*f2*t); >> s = s1 + s2; >> plot(t,s1,’g’,t,s2,’b’,t,s,’r’)

30 2D grafick é výstupy (5/11) Další příkazy pro úpravu grafů: grid on a grid off - zobrazí resp. vypne mřížku hold on a hold off – do grafu se budou přidávat další křivky dalším voláním plot() resp. nové volání plot() překreslí celý graf (původní křivky se neobnoví) title(’řetězec’) – vloží do grafu titulek ’řetězec’ xlabel(’řetězec’) – vloží do grafu popis x-ové osy s textem ’řetězec’ ylabel(’řetězec’) – vloží do grafu popis y-ové osy s textem ’řetězec’

31 2D grafick é výstupy (6/11) plot(x1, y1, ’jméno_parametru_1’, hodnota_1, ’jméno_parametru_2’,hodnota_2, …) vygeneruje standardní 2D graf (viz předchozí stránky) se specifikací vybraných parametrů (viz help), jako příklad uveďme šířku čáry - LineWidth nebo velikost bodu - MarkerSize Příklad: Doplnění příkladu kom- pozice dvou harmonických sig- nálů o tlustou čáru >> plot(t,s1,’g’,t,s2,’b’) >> hold on >> plot(t,s,’r’,’LineWidth’,3) >> grid on >> title(’2 signals’)

32 2D grafick é výstupy (7/11) Více samostaných grafů v jednom obrázku: subplot(m,n,p) – definuje společný obrázek pro m*n grafů, kde m je počet grafů nad sebou (řádky) a n je počet grafů vedle sebe (sloupců), hodnota p pak definuje pořadí příslušného podokna pro vykreslování grafu, např. subplot(3,4,2) následovaný vykreslením grafu plot() zobrazí tento graf ve druhém okně matice 3 x 4 grafů

33 2D grafick é výstupy (8/11) Příklad: Kompozice pěti harmonických signálů se základní har- monickou 50 Hz – parametry harmonických uloženy v matici S %{ Printing of six graphs into one figure using subplot function Graphs 1 to 5 display harmonic components generated from matrix S, where the 1st column represents frequency in Hz, 2nd amplitude in V, 3rd initial phase in deg. Graph 6 display composition of all five harmonic component %} S = [ %parameters of the 1st harm. component %parameters of the 2nd harm. component %parameters of the 3rd harm. component %parameters of the 4th harm. component ] %parameters of the 5th harm. component t = 0:0.0001:0.02; %time vector

34 2D grafick é výstupy (9/11) %1st harmonic component sig1 = S(1,2)*sin(2*pi*S(1,1)*t+S(1,3)*pi/180); subplot(2,3,1) plot(t,sig1,'g') title('1st harmonic') xlabel('t [s]') ylabel('u1 [V]') grid on %2nd harmonic component sig2 = S(2,2)*sin(2*pi*S(2,1)*t+S(2,3)*pi/180); subplot(2,3,2) plot(t,sig2,'g') title('2nd harmonic') xlabel('t [s]') ylabel('u2 [V]') grid on ……

35 2D grafick é výstupy (10/11) …… %5th harmonic component sig5 = S(5,2)*sin(2*pi*S(5,1)*t+S(5,3)*pi/180); subplot(2,3,5) plot(t,sig5,'g') title('5th harmonic') xlabel('t [s]') ylabel('u5 [V]') grid on %signal composition sigc = sig1+sig2+sig3+sig4+sig5; subplot(2,3,6) plot(t,sigc,'r') title('signal composition') xlabel('t [s]') ylabel('u [V]') grid on

36 2D grafick é výstupy (11/11) Výsledné grafy v jednom obrázku: Příklad: BPC2E_Ex118.m

37 Téma následující přednášky – Příkazy v Matlabu, standardní funkce, 3D grafy DĚKUJI ZA POZORNOST


Stáhnout ppt "OSNOVA: a) Úvod do Matlabu b) Vektory a matice c) 2D grafické výstupy Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 2 pro."

Podobné prezentace


Reklamy Google