Příklady k druhému testu - Matlab
20. března 2013
Instrukce: Projděte si všechny příklady. Každý příklad se snažte pochopit. Pak vymyslete a naprogramujte příklad podobný. Tím se ujistíte, že příkladu rozumíte. Další příklady najdete na stránkách Ivana Nagye.
Učivo: Generování náhodných čísel s rovnoměrným rozdělením od A do B. Generování náhodných čísel s normovaným normálním rozdělením. Kreslení grafů pomocí plot, hist, bar. Kreslení více funkcí do jednoho grafu. Titulky ke grafům a popisy os. Práce s řádky a sloupci matic. Mazání řádků a sloupců matic a položek vektorů.
Generování náhodných čísel s rovnoměrným rozdělením od A do B Vygenerujte deset tisíc čísel s rovnoměrným rozdělením mezi 5 a 10. Vykreslete histogram těchto čísel s 30 sloupci.
Otevřu si editor!
X = rand (1 ,10000);
% 1 radek , 10000 sloupcu , cisla 0.......1
X = X *5;
%0........5
X = X +5;
%5........10
hist (X ,30);
%30 sloupcu
Výsledek:
1
Generování náhodných čísel s normovaným normálním rozdělením Vygenerujte deset tisíc čísel s normovaným normálním rozdělením. Vykreslete histogram těchto čísel s 30 sloupci.
Otevřu si editor!
X = randn (1 ,10000);
% vsimnete si pismena " n " jako normal
hist (X ,30);
%30 sloupcu
Výsledek:
Titulky ke grafům a popisky os Vygenerujte graf funkce y =
1 x2 .
Hodnoty x volte v rozsahu 1 až 5 s krokem 0,01. Graf pojmenujte „Graf pokusný”. Na osu x dejte popisek „Čas” a na osu y „Pozornost”. 2
X =1:0.01:5; Y =1./ X .^2;
% Vsimnete si tecek !!!!!!!
plot (X , Y ); title ( ’ Graf pokusny ’);
% Titulek
xlabel ( ’ Cas ’);
% Popisky os
ylabel ( ’ Pozornost ’); Výsledek:
Sloupcový graf - bar Vygenerujte sloupcový graf funkce y =
1 x2 .
Hodnoty x volte: 1, 2, 3, 4, 5.
3
X =[1 ,2 ,3 ,4 ,5]; Y =1./ X .^2;
% Vsimnete si tecek !!!!!!!
Y =Y ’;
% Transpozice -
bar (X , Y );
% Vykresleni sloupcoveho grafu
% sloupce se zobrazuji pro radky matice * % X urcuje pozici sloupcu % Muze byt sloupcove i radkove * Pozor! Matici je nutno transponovat! Každý SLOUPEC v matici má svou barvu. Výsledek:
Vygenerujte sloupcový graf pro dvě funkce: První je dána rovnicí: y = x2 . Hodnoty x volte: -3, -2, -1, 0, 1, 2, 3. Druhá je vygenerována náhodně. Hodnoty mají rovnoměrné rozdělení mezi 8 a 10.
%Sedm hodnot p r v n i f u n k c e X= −3:3; Y=X. ^ 2 ;
%Tecka ! ! !
%Sedm hodnot druhe f u n k c e Z=rand ( 1 , 7 ) ;
%0......1
Z=Z ∗ 2 ;
%0......2
Z=Z+8;
%8......10
Spojena =[Y; Z ] ;
%Pozor ! ∗
Spojena=Spojena ’ ; %Pozor ! ∗∗ bar ( Spojena ) ;
%V y k r e s l e n i s l o u p c o v e h o g r a f u ∗∗∗
4
* Všechny veličiny, které chci zobrazit, dám do jedné matice POD sebe. Pokud dám místo středníku čárku, dostanu místo grafu 7 × 2 graf 14 × 1:
** Pokud neudělám transpozici, dostanu místo grafu 7 × 2 graf 2 × 7:
*** Pokud neuvedu X, automaticky se bere 1, 2, 3, ... Výsledek:
Nakreslete do jednoho obrázku tři sloupcové grafy: 5
První graf je dán funkcí y =
1 x2 .
Hodnoty x volte: 1, 2, 3, 4, 5, 6, 7.
Druhý graf zobrazí sedm náhodně generovaných hodnot s normovaným normálním rozdělením. Třetí graf zobrazí sedm náhodně generovaných hodnot s rovnoměrným rozdělením mezi 3 a 5.
X =1:7; Y =1./ X .^2; Z = randn (1 ,7); T = rand (1 ,7); T = T *2; T = T +3; Spojena =[ Y ; Z ; T ]; Spojena = Spojena ’; bar ( Spojena ); Výsledek:
Více grafů v jednom obrázku Vygenerujte deset tisíc čísel s normovaným normálním rozdělením. Vykreslete histogram těchto čísel s 30 sloupci. Do téhož obrázku vykreslete červeně funkci: y = 0,01.
2700 √ 2π
6
· e−
x2 2
. Hodnoty x volte od -4 do 4 s krokem
% Nahodna cisla NC = randn (1 ,10000);
% vsimnete si pismena " n " jako normal
% Funkce X = -4:0.01:4; Y =2700/ sqrt (2* pi )* exp ( -0.5* X .^2);
% Vsimnete si : % sqrt - odmocnina % exp - prirozena exponenciela % Tecka u druhe mocniny !!!
hold on ;
% Grafy budou v jednom obrazku
hist ( NC ,30);
%30 sloupcu
plot (X ,Y , ’r ’); hold off ;
% Dalsi graf bude do noveho obrazku
Výsledek:
Nakreslete do jednoho obrázku dva grafy: Sloupcovy graf pro y = x2 . Hodnoty x volte: 1, 2, 3, 4, 5, 6, 7. Graf téže funkce y = x2 . Volte červenou barvu. Hodnoty x volte v rozsahu 0 až 8 s krokem 0,01.
% Prvni funkce X =1:7; Y = X .^2; Y =Y ’; % Druha funkce x =0:0.01:8; y = x .^2; 7
% Vykresleni hold on ; bar ( Y ); plot (x ,y , ’r ’); hold off ; Výsledek:
Práce s maticemi
3
2
Vezměme matici A = 3
1
3
2 . 3 0 1 Nejprve ji umocněte na třetí, pak její položky umocněte na druhou. Pak změňte pořadí sloupců tak, aby bylo: třetí sloupec, první sloupec, druhý sloupec. Na konec přidejte ještě jednou první sloupec. Smažte druhý řádek. Matici transponujte a vykreslete do sloupcového grafu.
A =[3 ,2 ,3;3 ,1 ,2;3 ,0 ,1]; A = A ^3;
% Nejprve ji umocnete na treti
A = A .^2;
% pak jeji polozky umocnete na druhou .
A = A (: ,[3 ,1 ,2]);
% treti sloupec , prvni sloupec , druhy sloupec
A =[ A , A (: ,1)];
% Na konec pridejte jeste jednou prvni sloupec
A (2 ,:)=[];
% Smazte druhy radek
A =A ’;
% Matici transponujte
bar ( A );
% a vykreslete do sloupcoveho grafu .
Výsledek: 8
2
2
Vezměme matici A = 2
1
3
2 . 3 0 1 Vytvořte matici B, ktará bude mít stejné sloupce jako A, ale v pořadí: 3, 1, 2, 3, 2, 1 sloupec. Tedy celkem šest sloupců. Umocněte všechny položky B na druhou. Tím získáte matici C. Vynásobte transponovanou matici C s maticí C v tomto pořadí. Tím získáte matici D. Smažte druhý, pátý a šestý řádek matice D. Matici D transponujte a vykreslete do sloupcového grafu.
A =[2 ,2 ,3;2 ,1 ,2;3 ,0 ,1]; B = A (: ,[3 ,1 ,2 ,3 ,2 ,1]);
% v poradi : 3 , 1 , 2 , 3 , 2 , 1 sloupec
C = B .^2;
% Umocnete vsechny polozky na druhou
D =C ’* C ;
% Vynasobte transponovanou matici C s maticí C
D ([2 ,5 ,6] ,:)=[];
% Smazte druhy , paty a sesty radek matice D
D =D ’;
% Matici D transponujte
bar ( D );
% a vykreslete do sloupcoveho grafu .
Výsledek:
9
Vygenerujte 20 000 náhodných čísel s rovnoměrným rozdělením od 7 do 10. Umocněte tato čísla na třetí. Smažte čísla menší než 500. Vykreslete histogram zbylých čísel.
X = rand (1 ,20000);
%0.....1
X = X *3;
%0.....3
X = X +7;
%7....10
Y = X .^3;
% umocnete tato cisla na treti
for N =20000: -1:1
% Pozor !!! *
if Y ( N ) <500 Y ( N )=[]; end ; end ; hist ( Y ); * Pozor! Vektor musíme probíhat od konce, protože se průběžně zkracuje! Pokud bychom probíhali od 1 do 20 000, tak poslední položky by už dávno neexistovaly a program by ohlásil chybu. Také pozor na krok -1! Výsledek:
10
11