Ötödik labor: Véletlen számok, Grafika
Contents
Véletlen számok generálása
0-1 közötti véletlen (?) szám
rand
ans = 0.8232
valójában pszeudóvéletlen
rng(0) rand
ans = 0.8147
egy 2*3-as mátrix
rand(2,3)
ans = 0.9058 0.9134 0.0975 0.1270 0.6324 0.2785
egy 1-10 közötti véletlen egész
randi(10)
ans = 6
Hisztogram készítése
a=rand(10^5,1); hist(a)
b=randn(10^5,1); % normális eloszlású valószínűségi változók hist(b) % alapértelmezésként 10 intervallumot használ
hist(b,21) % de kézzel is megadhatjuk
Boxplot
A változónk terjedelmét, illetve mediánját a boxplot paranccsal jeleníthetjük meg. A box alja és teteje a 25%-os ill. 75%-os percentilis, de ábrázolja a szélsőséges értékeket is.
a=rand(10, 5); boxplot(a)
Függvények ábrázolása
ha csak egy vektor elemeit akarom ábrázolni
v=[3 5 2 5 3 1 3.4 6.2 5]; plot(v)
Adhatunkk stílusparancsokat is
plot(v,'ro')
Ha egy egy függvényt, akkor elõször létrehozok egy sorvektort, ez lesz az x tengelyen:
t=linspace(0,2*pi,100);
plot(t,sin(t),'r');
Vigyázat, bár az alábbi megoldás sem ad errort, mégis félrevezetõ (tengelyek!)
plot(sin(t));
Több függvény egy ábrán
Lehet több vektor is egy plot belsejében, csak páronként kell egyforma hosszúaknak lenniük
plot(0,0,'r+',sin(t),cos(t));
vagy: hold on parancs, akkor több különbözõ plot-ot is egy ábrára rak, például:
plot(v,'ro') hold on plot(t,sin(t))
látjuk, hogy a tengelyt igazítja a legnagyobb értékekhez
hold off % ez kapcsolja ki
Paraméteres görbe kirajzolása
Ekkor nem egy függvényt ábárzolok, hanem külön megadom az x és y koordinátákat:
x=linspace(0,2*pi); plot(cos(x),sin(x)) text(cos(x(1)),sin((x(1))), 'Kezdõpont'); xlabel('x tengely') ylabel('y tengely') title('Ez egy kör') axis('equal','square') grid on;
Több kép egy ábrán
t=-4:0.1:4; subplot(2,1,1); plot(t,sin(t)) title('A sin függvény'); subplot(2,2,3); plot(t,cos(t)) title('A cos függvény'); subplot(2,2,4); plot(t,exp(t)) title('Az exponenciális függvény'); hold off
Képek importálása
A ábrán felül a File->Save As parancs segítségével, betûméretre ügyeljünk
Órai feladatok
1. feladat: Próbáljuk ki, mit történik, ha az A=rand(5) mátrixot ábrázoljuk, azaz kiadjuk a plot(A) parancsot. Keressünk magyarázatot a látottakra.
Megoldás: A mátrix elemeit oszloponként tekinti egy vektornak, és az oszloponként ábrázolja egy ábrán.
4. feladat: Írjunk egy olyan függvényt, melynek bemenete n egy pozitív egész. A függvény generáljon egy véletlen 0-1 sorozatot addig, míg az elsõ 1-es nem kapja. Jegyezze meg, hogy hanyadik kísérletre jött ki az elsõ egyes (ez lesz a kísérlet hossza). Ezt a kísérletet ismételje meg összesen n-szer. A kimenet legyen a hosszak átlaga.
function atlag=hanyadikfiu(n) atlag=0; for i=1:n szam=1; lany=1; while lany if rand<0.5 lany=0; else szam=szam+1; end end atlag=atlag+szam; end atlag=atlag/n;
Házi feladatok
2. feladat: Ábrázoljuk az x(t)=t*cost(t), y(t)=t*sin(t) paraméteres görbét a síkon t menjen 0 és 10 között. Lássuk el az ábrát feliratokkal, majd mentsük egy .jpg fájlba.
figure(3) t=linspace(0,10,100); plot(t.*sin(t),t.*cos(t)) xlabel('x tengely') ylabel('y tengely') title('Csigavonal') text(0,0,'Csiga közepe') text(10*sin(10),10*cos(10),'Csiga vége')
3. feladat: Írjunk olyan függvényt, amelynek bemenete egy pozitív egész. A függvény dobjon ennyiszer egy szabályos hatoldalú dobokockával, majd kimenetként adjon vissza egy olyan hatelemû sorvektort, melynek elsõ eleme az egyesek száma, második a ketteseké, ...
function ki=dobal(n) ki=zeros(1,6); for i=1:n dobas=randi(6); ki(dobas)=ki(dobas)+1; end