Elsõ labor
Contents
A command window használata
2+3
ans = 5
2*pi% Pi nem mûködik, számít a kisbetű-nagybetű
ans = 6.2832
3/exp(1)
ans = 1.1036
i*3^4
ans = 0.0000 +81.0000i
Egy már végrehajtott parancs nem módosítható,de a nyilak segítségévelvel viszahozhatjuk korábbi parancsokat, illetve parancs elejének begépelése + felfelé nyíl hatására csak az adott elejû parancsokat hívja elõ.
Értékadás
a=5.1
a = 5.1000
a
a = 5.1000
aktuális értékkel rendelkező változók listájánaklekérdezése
who
Your variables are: a ans
Ha a típusokra és az elfoglalt memória is érdekes
whos
Name Size Bytes Class Attributes a 1x1 8 double ans 1x1 16 double complex
Formátum megadása
Kíírás beállítása (nem a számolási pontosságé!)
format short
a
a = 5.1000
Az összes parancs leírását megkaphatjuk, ha beírjuk a parancssorba a help parancsneve sort
help format
FORMAT Set output format. FORMAT with no inputs sets the output format to the default appropriate for the class of the variable. For float variables, the default is FORMAT SHORT. FORMAT does not affect how MATLAB computations are done. Computations on float variables, namely single or double, are done in appropriate floating point precision, no matter how those variables are displayed. Computations on integer variables are done natively in integer. Integer variables are always displayed to the appropriate number of digits for the class, for example, 3 digits to display the INT8 range -128:127. FORMAT SHORT and LONG do not affect the display of integer variables. FORMAT may be used to switch between different output display formats of all float variables as follows: FORMAT SHORT Scaled fixed point format with 5 digits. FORMAT LONG Scaled fixed point format with 15 digits for double and 7 digits for single. FORMAT SHORTE Floating point format with 5 digits. FORMAT LONGE Floating point format with 15 digits for double and 7 digits for single. FORMAT SHORTG Best of fixed or floating point format with 5 digits. FORMAT LONGG Best of fixed or floating point format with 15 digits for double and 7 digits for single. FORMAT SHORTENG Engineering format that has at least 5 digits and a power that is a multiple of three FORMAT LONGENG Engineering format that has exactly 16 significant digits and a power that is a multiple of three. FORMAT may be used to switch between different output display formats of all numeric variables as follows: FORMAT HEX Hexadecimal format. FORMAT + The symbols +, - and blank are printed for positive, negative and zero elements. Imaginary parts are ignored. FORMAT BANK Fixed format for dollars and cents. FORMAT RAT Approximation by ratio of small integers. Numbers with a large numerator or large denominator are replaced by *. FORMAT may be used to affect the spacing in the display of all variables as follows: FORMAT COMPACT Suppresses extra line-feeds. FORMAT LOOSE Puts the extra line-feeds back in. Example: format short, pi, single(pi) displays both double and single pi with 5 digits as 3.1416 while format long, pi, single(pi) displays pi as 3.141592653589793 and single(pi) as 3.1415927. format, intmax('uint64'), realmax shows these values as 18446744073709551615 and 1.7977e+308 while format hex, intmax('uint64'), realmax shows them as ffffffffffffffff and 7fefffffffffffff respectively. The HEX display corresponds to the internal representation of the value and is not the same as the hexadecimal notation in the C programming language. See also DISP, DISPLAY, ISNUMERIC, ISFLOAT, ISINTEGER. Reference page in Doc Center doc format
A részletes dokumentációt a doc paranccsal érhetünk el
doc format
A ":" operátor
Számokból álló vektor létrehozására használhatjuk. Elsõ szám: kezdõpont, második szám: lépésköz, harmadik szám végpont (illetve az az érték amit a végpont nem haladhat meg)
x=0:0.3:1 %ez egy sorvektor
x = 0 0.3000 0.6000 0.9000
Ez a típusán és az elfoglalt helyen is látszik
whos
Name Size Bytes Class Attributes a 1x1 8 double ans 1x1 16 double complex x 1x4 32 double
A sorvektor egyes elemeit a () segítségével érjük el, a sorszámozás 1-el kezdõdik
x(1)
x(2)
% de x(6)!
ans = 0 ans = 0.3000
értékadásnál nagyon oda kell figyelnünk, mert:
x(6)=5
x = 0 0.3000 0.6000 0.9000 0 5.0000
sõt
x_sor(12)=5
x_sor = 0 0 0 0 0 0 0 0 0 0 0 5
az aposztróf a transzponálás jele
x_oszlop=x_sor'
x_oszlop = 0 0 0 0 0 0 0 0 0 0 0 5
Másik lehetõség vektor létrehozására: egyenlõ osztásközû sorvektor, a harmadik számnyi elemmel
y_sor=linspace(1,2,5)
y_sor = 1.0000 1.2500 1.5000 1.7500 2.0000
Mûveletek vektorokkal
x_sor=0:0.3:1
x_sor = 0 0.3000 0.6000 0.9000
x vektor elemeinek száma
length(x_sor)
ans = 4
Méret. Nem mindegy, hogy 1*4 (sorvektor) vagy 4*1 (oszlopvektor)
size(x_sor)
ans = 1 4
size(x_oszlop)
ans = 12 1
konstanssal való szorzás
5*x
ans = 0 1.5000 3.0000 4.5000 0 25.0000
skaláris szorzat, azaz egy szám
x*x'
ans = 26.2600
van rá külön parancs is a dot
dot(x,x)
ans = 26.2600
diádszorzat
D=x_sor'*x_sor
D = 0 0 0 0 0 0.0900 0.1800 0.2700 0 0.1800 0.3600 0.5400 0 0.2700 0.5400 0.8100
az x vektor elemenkénti négyzete, általában is a pont az elemenkénti mûveletet jelenti.
x_sor.*x_sor
ans = 0 0.0900 0.3600 0.8100
Nézzük csak meg a méreteket:
size(D)
ans = 4 4
length(D)
ans = 4
Beépített függvények
A Matlab nagyon sok beépített függvénnyel rendelkezik. Ahol rendelkezésre áll, ott ezeket célszerû használni, hiszen ezek optimalizálva vannak. Egy példa:
min(x_sor)
ans = 0
Ezek döntõ többsége polimorf, azaz többféleképpen is meghívható, és a válasz attól függ hogyan hívtuk meg. Hasonlítsuk össze:
min(x_sor)
ans = 0
De
[minertek,minpozicio]=min(x_sor)
minertek = 0 minpozicio = 1
Saját függvények
Mi magunk is készíthetünk saját függvényeket, a már beépített függvények felhasználásával. Ennek módja function kimenet(ek)=függvénynév(bemenet(ek)) ez egy külön .m fájlba kell menteni, hogy mûködjön, és a fájl nevén kell meghívni.
Például ez a függvény kap egy vektort bemenetként, és visszadja az elsõ elemét:
function w=elsoelem(v)
w=v(1);
A függvényüket a parancssorból tudjuk használni, ha abban a könyvtárban vagyunk, ahová mentettük. Ezt a pwd paraccsal (vagy a felsõ sorban) ellenõrizhetjük.
elsoelem(x_sor)
ans = 0
Vigyázat, minden a függvény belsejében szereplõ változó lokális, azaz a függvény futása után nem tudjuk elérni, például w-t sem látjuk!
Több bemenet és kimenet is lehetséges, ez a függvény például visszaadja a bementeként kapott számok összegét és szorzatát
function [osszeg, szorzat]=szamol(a,b)
osszeg=a+b;
szorzat=a*b;
Órai feladatok (megoldással)
1. feladat: Írjunk olyan függvényt, melynek bemenete két darab pozitív valósakból álló oszlopvektor, melyek rendre egy derékszögû háromszög két befogójának hosszát tartalmazzák. A kimenet legyen egy olyan oszlopvektor, amely rendre az átfogók hosszát tartalmazza.
function ki=pitagoraszTetel(be1,be2)
ki=sqrt(be1.^2+be2.^2);
2. feladat: Írjunk egy olyan függvényt, amely a bemenetként kapott vektor elemeinek számtani és harmonikus közepét adja kimenetként egyetlen sorvektorban.
function [sz, h]=kozepek(v) n=length(v); sz=mean(v); % vagy sum(v)/n h=n/sum(1./v);
Házi feladatok (megoldással)
3. feladat: Írjunk olyan függvényt, amelynek bemenete egy sorvektor, kimenete pedig a legkisebb és a legnagyobb elemének különbsége.
function ki=terjedelem(v)
ki=min(v)-max(v);
4. feladat: Írjunk olyan függvényt, amelynek bemenete egy sorvektor. A kimenete legyen a páratlan indexű helyen lévő számok közül a legnagyobb értéke.
function ki=maxPtlan(v)
ki=max(v(1:2:end));