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

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õ

i*3^4
ans =

   0.0000 +81.0000i

É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 v-t sem látjuk!

Lehet több kimenet is, az alábbi függvény visszaadja egy mátrix bal felsõ és jobb alsó elemét

function [balfelso, jobbalso]=elemek(A)

balfelso=A(1,1);
jobbalso=A(end, end);

Több bemenet 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ókat tartalmazza.

function ki=pitagoraszTetel(be1,be2)

ki=sqrt(be1.^2+be2.^2);

Házi feladatok (megoldással)

2. 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);


3. 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));