Seminář z MATLABU. Jiří Krejsa. A2/710 krejsa@fme.vutbr.cz



Podobné dokumenty
KTE / PPEL Počítačová podpora v elektrotechnice

pi Ludolfovo číslo π = 3,14159 e Eulerovo číslo e = 2,71828 (lze spočítat jako exp(1)), např. je v Octave, v MATLABu tato konstanta e není

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných

MATrixLABoratory letný semester 2004/2005

X37SGS Signály a systémy

- transpozice (odlišuje se od překlopení pro komplexní čísla) - překlopení matice pole podle hlavní diagonály, např.: A.' ans =

MATLAB základy. Roman Stanec PEF MZLU

Základy algoritmizace a programování

Stručný návod k programu Octave

KTE / PPEL Počítačová podpora v elektrotechnice

Doňar B., Zaplatílek K.: MATLAB - tvorba uživatelských aplikací, BEN - technická literatura, Praha, (ISBN:

Příklady k prvnímu testu - Matlab

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

PPEL_3_cviceni_MATLAB.txt. % zadat 6 hodnot mezi cisly 2 a 8 % linspace (pocatek, konec, pocet bodu)

% vyhledání prvku s max. velikostí v jednotlivých sloupcích matice X

Lineární algebra s Matlabem. Přednáška 1

Univerzitní licence MATLABu. Pište mail na: se žádostí o nejnovější licenci MATLABu.

Operace s maticemi. 19. února 2018

PPEL_4_cviceni_MATLAB.txt. % 4. cvičení z předmětu PPEL - MATLAB. % Lenka Šroubová, ZČU, FEL, KTE %

Algoritmizace a programování

Příklad elektrický obvod se stejnosměrným zdrojem napětí

Operace s vektory a maticemi + Funkce

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Úvod do programování. Lekce 1

TECHNICKÁ UNIVERZITA V LIBERCI

Čtvercové matice. Čtvercová matice je taková matice, jejíž počet řádků je roven počtu jejích sloupců

Operace s maticemi

AVDAT Vektory a matice

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM

II. Úlohy na vložené cykly a podprogramy

Matematika 1 MA1. 2 Determinant. 3 Adjungovaná matice. 4 Cramerovo pravidlo. 11. přednáška ( ) Matematika 1 1 / 29

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

MATLAB. Popis prostředí MATLABu (pracovní plocha) MATLAB je integrovaným prostředím, s jehož pomocí lze provádět zejména:

KTE / PPEL Počítačová podpora v elektrotechnice

Operátory pro maticové operace (operace s celými maticemi) * násobení maticové Pro čísla platí: 2*2

while cyklus s podmínkou na začátku cyklus bez udání počtu opakování while podmínka příkazy; příkazy; příkazy; end; % další pokračování programu

Základy programování: Algoritmizace v systému MATLAB

Matice. Modifikace matic eliminační metodou. α A = α a 2,1, α a 2,2,..., α a 2,n α a m,1, α a m,2,..., α a m,n

Úvod do lineární algebry

MENDELOVA UNIVERZITA V BRNĚ LDF MT MATEMATIKA VEKTORY, MATICE

MENDELOVA UNIVERZITA V BRNĚ LDF MT MATEMATIKA VEKTORY, MATICE

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

P íklady k prvnímu testu - Scilab

Základy algoritmizace a programování

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

cyklus s daným počtem opakování cyklus s podmínkou na začátku (cyklus bez udání počtu opakování)

Všechno, co jste kdy chtěli vědět o maticích, ale báli jste se zeptat

3.T Technické výpočty v Octave/Matlabu zpracování a zobrazení dat

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Tabulkový procesor. Základní rysy

Kreslení grafů v Matlabu

4. Jednoduché výpočty

Základy algoritmizace a programování

Cvi ení 1. Cvi ení 1. Modelování systém a proces. Mgr. Lucie Kárná, PhD. March 2, 2018

Základy maticového počtu Matice, determinant, definitnost

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Příklady k druhému testu - Matlab

1 Linearní prostory nad komplexními čísly

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Programování v Matlabu

[1] Determinant. det A = 0 pro singulární matici, det A 0 pro regulární matici

1 Zobrazení 1 ZOBRAZENÍ 1. Zobrazení a algebraické struktury. (a) Ukažte, že zobrazení f : x

Vybrané kapitoly z matematiky

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina.

Matematika B101MA1, B101MA2

KIV/ZI Základy informatiky MS EXCEL MATICOVÉ FUNKCE A SOUHRNY

Programování v chemii (MATLAB)

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Množinu všech matic typu m n nad tělesem T budeme označovat M m n (T ), množinu všech čtvercových matic stupně n nad T pak M n (T ).

Paměť počítače. alg2 1

Úvod do Matlabu. Vít Vondrák Katedra aplikované matematiky FEI, VŠB-TU Ostrava

PROGRAMOVÁNÍ V SHELLU

Zdrojem většiny příkladů je sbírka úloh 1. cvičení ( ) 2. cvičení ( )

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

maticeteorie 1. Matice A je typu 2 4, matice B je typu 4 3. Jakých rozměrů musí být matice X, aby se dala provést

(Cramerovo pravidlo, determinanty, inverzní matice)

Číselné vektory, matice, determinanty

Úlohy k přednášce NMAG 101 a 120: Lineární algebra a geometrie 1 a 2,

Derivace funkcí více proměnných

1. Vsechny promenne jsou matice. Skalar je a(1,1). Vektor je bud' radkovy a(1,5) nebo sloupcovy

Cvi ení 1. Modelování systém a proces. Mgr. Lucie Kárná, PhD. March 2, Organizace cvi ení 2 Matlab Za ínáme Základní operace Základní funkce

Determinant matice řádu 5 budeme počítat opakovaným použitím rozvoje determinantu podle vybraného řádku nebo sloupce. Aby byl náš výpočet

Sada 1 - Základy programování

Formátové specifikace formátovací řetězce

2. cvičení z ZI1 - Excel

Úvod do Unixu. man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp. pwd: vypíše cestu k aktuální pozici

TECHNICKÁ UNIVERZITA V LIBERCI

Lineární algebra Operace s vektory a maticemi

Předmluva 9 Obsah knihy 9 Typografické konvence 10 Informace o autorovi 10 Poděkování 10

15 Maticový a vektorový počet II

Simulink. Libor Kupka TENTO PROJEKT JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM A STÁTNÍM ROZPOČTEM ČESKÉ REPUBLIKY

Sada 1 - Základy programování

Základy matematiky pro FEK

Úvod do programování. Lekce 7

Numerické metody a programování

5. Maticová algebra, typy matic, inverzní matice, determinant.

matice([[1,1,0,0,0],[1,1,1,0,0],[0,1,1,0,0],[0,0,0,1,1],[0,0,0,1,1]],1). matice([[1,1,1],[1,1,0],[1,0,1]],2).

Dotazy tvorba nových polí (vypočítané pole)

DEFINICE Z LINEÁRNÍ ALGEBRY

Transkript:

Seminář z MATLABU Jiří Krejsa A2/710 krejsa@fme.vutbr.cz Obsah kurzu Posluchači se seznámí se základy systému Matlab, vědeckotechnickými výpočty, programováním v Matlabu včetně pokročilých technik, vizualizací výsledků, modelováním dynamických systémů pomocí Matlabu Literatura Studijní opory: http://www.umt.fme.vutbr.cz/~ruja/vyuka/matlab/matlab.html Publikace o Matlabu: přehled na: http://www.humusoft.cz/produkty/matlab/knihy/ Hodnocení Problémově orientovaný semestrální projekt, pokud možno související s bakalářskou/diplomovou prací, zadání po konzultaci s přednášejícím. Výstupem je krátký dokument s přílohou ve formě Matlabovských zdrojových kódů, případně modelů.

Úvod Matlab layout - command window - workspace - current directory - history a=[1 2 3;4 5 6;7 8 9] % vytvoreni matice 3x3 Zadávání matic - uzavřeny v hranatých závorkách - prvky na řádku odděleny mezerou nebo čárkou - řádky odděleny středníkem c=a(2,2) who whos % Získání prvku matice % vypis promennych v pameti % vypis promennych v pameti detailne b=ones(1,10); % jednotkovy vector delky 10 d=zeros(1,50); % nulovy vektor delky 50 Možnosti ovládání pro přerušení prováděného příkazu CTRL+C klávesy šipka nahoru/dolu umožňují pohyb po historii příkazů editace řádku se provádí šipkami vlevo/vpravo, klávesami delete, backspace klávesa ESC vymaže celý řádek proměnné v MATLABu musí začínat písmenem a mohou mít až 31 znaků rozlišují se malá a velká písmena příkaz ukončený středníkem (;) se nevypisuje na obrazovku pokud se příkaz nevleze na řádek, zakončí se třemi tečkami a entrem a pokračuje se na dalším řádku Nápověda příkaz help help příkaz helpwin lookfor info Popis nápověda, výpis příkazů a funkcí nápověda konkrétního příkazu nápověda v okně Hledá klíčové slovo v helpu informace o Matlabu a fy. Mathworks

Speciální proměnné Spec. prom. ans pi eps flops inf Nan, nan i,j nargin nargout realmin realmax Popis proměnná k uložení výsledku Ludolfovo číslo nejmenší použitelné číslo počet operací označení pro nekonečno (např.1/0) označení nedefinované hodnoty komplexní jednotka počet vstupních parametrů funkce počet výstupních parametrů funkce nejmenší použitelné kladné reálné číslo největší použitelné kladné reálné číslo Příklad i 0 + 1.0000i Zobrazení Tab. 8 datové typy Matlab příkaz pi format short 3.1416 format long 3.14159265358979 format short e format long e 3.1416e+000 3.14159265358979e+000 format short g 3.1416 format long g 3.14159265358979 format hex 400921fb54442d18 format bank 3.14 format + + format rat 355/133

M-soubory Pro práci s MATLABem jsou možné dva přístupy, buď jednoduše zadáváme příkazy v okně příkazů (command window) a počítáme. To má nevýhodu v tom, že pokud chceme tento výpočet zopakovat, tak musíme vše napsat znovu. Proto se používá spíše druhý způsob a to je vytváření souborů s příponou.m (m-file). Je to textový soubor, který obsahuje sled příkazů v MATLABu. M-file vytvoříme jednoduše pomocí menu (File > New > M-file. Otevře se okno editoru, kde se dají psát příkazy, které spustíme stiskem klávesy F5, nebo přes menu (Debug > Run). Příkazy se provedou a výpis uvidíme v okně příkazů, pokud jsme výstup nepřesměrovali např. do souboru. M-file se dá spustit také zadáním jména souboru (bez přípony.m) v okně příkazů. Důležité je aby byl soubor v aktuálním adresáři, to si zjistíme pomocí příkazů z tab.10. Použijeme cd pro aktuální adresář a dir pro výpis souborů. Pro výpis obsahu souboru můžeme použít příkaz type. Manipulace se soubory cd (nebo) pwd p=cd delete soubor.m dir (nedo) ls d=dir exist( 'cow', 'file' ) exist( 'dname', 'dir') p=matlabroot type cow Chat which cow popis zobrazí aktuální cestu aktuální cesta v řetězci p vymaže soubor.m zobrazí soubory v aktuálním adresáři soubory v aktuální cestě ve struktuře d kontroluje existenci souboru cow.m kontroluje existenci adresáře dname aktuální cesta k programu Matlab v řetězci p vypíše soubor cow.m vypíše soubory *.m zobrazí cestu k souboru cow.m Matice, vektory MATLAB je maticová laboratoř a proto jsou tu všechna čísla reprezentovaná jako vektory a matice. Proto zde uvádíme podrobný popis ke konstrukci a práci s vektory a maticemi. Zápis v matlabu a = [1;2;3;4;5] a = [1;2;3;4;5] c = [1,2,3,4,5] b = [1,2,3,4,5]' význam sloupcový vektor sloupcový vektor řádkový vektor transpozice řádkového vektoru Příklad a = [1,2,3;2,2,2;1,2,5]

a = 1 2 3 2 2 2 1 2 5 Rozdíl je v tom zda pracujeme s nimi jako s vektory a maticemi jak to známe z algebry nebo jako s poli známé nám z programování. Obě možnosti jsou možné a je potřeba je často zkombinovat. Důležité je ale stále si uvědomovat ten rozdíl. V tab.11 jsou uvedeny příkazy pro konstrukci pole či vektoru, případně matice pokud použijeme tuto konstrukci např. v cyklu. Často budeme využívat definici hodnot x pro tvorbu grafů funkcí. Tab. 11 nástroje pro tvorbu vektoru x = [2 2*pi sqrt(1) 2-3j ] x = první:poslední x = první:přírůstek:poslední x linspace(první,poslední,n) x = logspace(první,poslední,n) vytvoří řádkový vektor x obsahující specifické hodnoty vytvoří řádkový vektor x začínající na první, přičítá jedničku, končí hodnotou poslední vytvoří řádkový vektor x začínající na první, přičítá se přírůstek, končí poslední vytvoří řádkový vektor x začínající na první,končí poslední, pole obsahuje n prvků vytvoří řádkový vektor x začínající na 10, prvni končí na 10 posledni, pole obsahuje n prvků Pokud máme matici či vektor vytvořený můžeme s ním provádět různé operace: a(2) zápis c(5)=x(2,3) význam zjištění hodnoty 2 prvku vektoru hodnotu z druhého řádku a třetího sloupce matice x dej do pátého prvku vektoru c x (2:5, 1:2) vytvoření matice s kterou budeme dále pracovat y=x(3,:) diag(y) vyjmi třetí řádek, ulož do proměnné y a vypiš prvky na diagonále Příklad a = 1 2 3 2 2 2 1 2 5 c = a.*5

c = 5 10 15 10 10 10 5 10 25 Pro lepší orientaci v maticových operacích, zde uvádíme seznam funkcí pro práci s maticemi název popis funkce eye zeros ones rand det inv '.' definuje E matici definuje nulovou matici definuje matici jednicek generuje matici náhodných hodnot determinat matice inverze matice operace transpozice (apostrof) trans. prvek po prvku (sdružená trans., rozdílná od trans. v reálných číslech) sqrtm maticová odmocnina expm maticová exponenciála logm poly size roots max logaritmus matice charakteristický polynom rozměry matice vlastní čísla charakteristického polynomu maximální prvek matice * maticové násobení.* násobení prvek po prvku ^ maticové mocnění.^ mocnění prvek po prvku \,/ dělení zleva, zprava.\ dělení zleva prvek po prvku./ dělení zprava prvek po prvku kron Kronerovo tenzorové násobení

Operace s maticemi podrobněji a = magic(4) a = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 Součet jednotlivých sloupců sum(a) 34 34 34 34 Jak to udělat po řádcích? b = a' b = 16 5 9 4 2 11 7 14 3 10 6 15 13 8 12 1 sum(b) 34 34 34 34 Tohle je součet sloupců v matici b = součet řádků v matici a. Psáno dohromady: sum(a') 34 34 34 34 Součet prvků na hlavní diagonále: funkce diag vrátí hlavní diagonálu, kterou sečtu sum(diag(a)) 34 Jak se dostat na jednotlivé prvky matice a jak alokovat paměť b = a

b = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 b(1,5) = 10 b = 16 2 3 13 10 5 11 10 8 0 9 7 6 12 0 4 14 15 1 0 Je automaticky založen nový sloupec, daný prvek je mu přiřazen a zbytek je doplněn nulami b(1,7) = 10 b = 16 2 3 13 10 0 10 5 11 10 8 0 0 0 9 7 6 12 0 0 0 4 14 15 1 0 0 0 Operátor dvojtečka : Představuje buď rozmezí nebo všechny prvky. a= 1:10 a = 1 2 3 4 5 6 7 8 9 10 a = 0:0.1:1 a = 0 0.100 0.200 0.300 0.400 0.500 0.600 0.700 0.800 0.900 1.000 a(1:3) 0 0.1000 0.2000 b = magic(4); c = b(:,2) c = 2 11 7 14 d = b(1,:)

d = 16 2 3 13 Skládání matic a = magic(3); b = [a a] b = 8 1 6 8 1 6 3 5 7 3 5 7 4 9 2 4 9 2 Výrazy Žádná velká překvapení, +,-,*,/, závorky a = sqrt(5^2 - sin(10)) a = 5.0541 1/0 Warning: Divide by zero. Inf Ukládání a načítání dat ukládání save JMENOSOUBORU uloží všechny proměnné z workspacu (binárně) save JMENOSOUBORU X uloží pouze proměnnou X (binárně) save JMENOSOUBORU X ASCII uloží pouze proměnnou X (textově) existuje i funkční varianta příkazu, použitelná pro parametry ve formě řetězců save('jmenosouboru','var1','var2') načítání - obdobně load JMENOSOUBORU

Další operace s maticemi Násobení a =[8 1 6; 3 5 7; 4 9 2] b = [1; 2; 3] b = 1 2 3 c = a * b c = 28 34 28 Determinant det(a) -360 Inverzní matice X = inv(a) X = 0.1472-0.1444 0.0639-0.0611 0.0222 0.1056-0.0194 0.1889-0.1028 Vlastní čísla eig(a) 15.0000 4.8990-4.8990 (jsou nenulová matice není singulární) Operátor tečka matice / pole

U pole jsou operace prováděny prvek po prvku. Takže pro součet a rozdíl je to stejné jako u matic, ale u násobení a dělení nikoliv. Aby se to dalo rozlišit, používá se operátor tečka. a = 8 1 6 3 5 7 4 9 2 a.*a 64 1 36 9 25 49 16 81 4 Další operace jsou specifické pro práci s poli (tab. 12), kdy se provádějí operace prvek po prvku jako u programování. Musí se dát pozor a nezaměnit s maticovými operacemi. operace prvek po prvku DATA: a = [ a 1 a 2... a n ], b= [ b 1 b 2... b n ], c - skalár skalární součet a+c = [ a 1 +c a 2 +c...a n +c ] skalární součin a*c = [ a 1 *c a 2 *c... a n *c ] pole-sčítání a+b = [ a 1 +b 1 a 2 +b 2... a n +b n ] pole-součin a.*b = [ a 1 *b 1 a 2 *b 2... a n *b n ] pole-dělení zprava a./b = [ a 1 /b 1 a 2 /b 2... a n /b n ] pole-dělení zleva a.\*b = [ a 1 \b 1 a 2 \b 2... a n \b n ] pole-mocnění n = 1:5 n = 1 2 3 4 5 n = n' n = 1 2 3 4 5 mocniny = [n n.^2 n.^3] mocniny = 1 1 1 2 4 8 3 9 27 4 16 64 5 25 125 a.^b = [ a 1^b 1 a 2^b 2... a n^b n ] a.^c = [ a 1^c a 2^c... a n^c ] c.^a = [ c^a 1 c^a 2... c^a n ]

Práce s vektory skalární a vektorové násobení vek1 = [1 2 3]; vek2 = [10 10 10]; cross(vek1,vek2) % cross produkt vektorové násobení -10 20-10 dot(vek1,vek2) % dot produkt skalarni násobení 60 možno spočítat i jako vek1 * vek2' 60 Zjištění velikosti length, size, ndim, numel length délka vektoru a = [1 2 3 4]; length(a) 4 size rozměry polí b = [1 2 3; 4 5 6; 7 8 9; 10 11 12]; size(b) 4 3 ndims počet rozměrů ndims(b) 2 numel počet elementů numel(b) 12