„Bevezetés az Matlab használatába” változatai közötti eltérés

A Fizipedia wikiből
(MATLAB szerkesztő)
 
(2 szerkesztő 22 közbeeső változata nincs mutatva)
7. sor: 7. sor:
 
==MATLAB==
 
==MATLAB==
  
A MATLAB egy programozási nyelv illetve egy numerikus számításokra elvégzésére alkalmas programcsomag. A Bevezető labor során mérési adatok feldolgozására, megjelenítésére és kiértékelésére használjuk, melyhez a MATLAB alapfunkcióit ismerjük meg. Akik a MATLAB programozásban jobban el kívánnak mélyedni a [https://physics.bme.hu/BMETE119779_kov A MATLAB programozása] című tárgyat ajánljuk. Az alábbiakban a laborhoz szükséges alapvető utasításokat gyűjtöttük össze, mely a tanórán megszerzett gyakorlattal együtt segít a mérési adatok feldolgozásában.
+
A MATLAB egy programozási nyelv illetve egy numerikus számításokra elvégzésére alkalmas programcsomag. A Bevezető labor során mérési adatok feldolgozására, megjelenítésére és kiértékelésére használjuk, melyhez a MATLAB alapfunkcióit ismerjük meg. Akik a MATLAB programozásban jobban el kívánnak mélyedni a [https://physics.bme.hu/BMETE119779_kov A MATLAB programozása] című tárgyat ajánljuk. Az alábbiakban a laborhoz szükséges alapvető utasításokat gyűjtöttük össze, mely a tanórán megszerzett gyakorlattal együtt segít a mérési adatok feldolgozásában.
 +
 
 +
A MATLAB programozáshoz hasznos segítség a MathWork honlapja, ahol megtalálható parancsok részletes dokumentációja valamint számos példa is [https://www.mathworks.com/help/index.html].
  
 
==Telepítés==
 
==Telepítés==
19. sor: 21. sor:
 
[[File:MATLAB_screen.png|800px]]
 
[[File:MATLAB_screen.png|800px]]
  
A MATLAB parancsokat egyenként futtathatjuk a '''Command Window''' mezőbe gépelve vagy az utasításokból kódot készíthetünk a '''Live Editor''' felületen. A MATLAB kódokat .m kiterjesztési M fájlokban szokás tárolni, majd a felső '''Live Editor''' sávban található '''Run''' zöld háromszög segítségével futtathatjuk. A futások eredménye, ekkor külön ablakokban jelenik meg. A labor során az .mlx kiterjesztésű '''Live Script''' fomátumot használjuk, melynek előnye, hogy a futások eredményét közvetlenül a parancsok alatt látjuk. '''Section Break''' elhelyezésével nagyobb kódot részekre tördelhetünk, melyek külön-külön futtathatók.
+
A MATLAB parancsokat egyenként futtathatjuk a '''Command Window''' mezőbe gépelve vagy az utasításokból kódot készíthetünk a '''Live Editor''' felületen. A parancsok végrehajtást követően megjelennek a Command Window-ban. Ezt elkerülhetjük ha ;-vel lezárjuk a parancsokat. A MATLAB kódokat .m kiterjesztési M fájlokban szokás tárolni, majd a felső '''Live Editor''' sávban található '''Run''' zöld háromszög segítségével futtathatjuk. A futások eredménye, ekkor a Command Window-ban vagy külön ablakokban jelenik meg. A labor során az .mlx kiterjesztésű '''Live Script''' fomátumot használjuk, melynek előnye, hogy a futások eredményét közvetlenül a parancsok alatt látjuk. '''Section Break''' elhelyezésével egy nagyobb kódot kisebb részekre tördelhetünk, melyek külön-külön futtathatóak. A Live Script parancsait, a számolások eredményeit és az elkészített ábrákat A File menü Save As menüpontjában TeX formában is kimenthetjük, mely azután könnyen tovább alakítható jegyzőkönyvvé.
 +
 
 +
Ha a parancs eredményét nem szeretnénk megjeleníteni a parancsot ;-vel zárjuk le. Azokat a sorokat, melyekben megjegyzést (kommentet) helyezünk el % jellel kezdjük. Ezeket a sorokat a fordító figyelmen kívül hagyja.
  
 
==Számolás mátrixokkal==
 
==Számolás mátrixokkal==
  
A leggyakrabban használt adattárolási forma a vektor vagy mátrix.
+
A leggyakrabban használt adattárolási forma a vektor vagy mátrix. Értékadás változónév = érték formában történik. Ezt követően a változók a '''Workspace''' mezőben követhetők.
 +
 +
Sorvektort [1 2 3], míg oszlopvektort [1; 2; 3] utasítással hozunk létre.
 +
 
 +
Ekvidisztáns adatokat megadhatunk a mettől:lépésköz:meddig módon:
 +
<syntaxhighlight lang="matlab">
 +
>> V = 2:2:9
 +
 
 +
V =
 +
 
 +
    2    4    6    8
 +
</syntaxhighlight>
 +
 
 +
Mátrix sorvégeit értelemszerűen ;-tal zárjuk:
 +
<syntaxhighlight lang="matlab">
 +
>> M = [1 2 3; 4 5 6; 7 8 9]
 +
 
 +
M =
 +
 
 +
    1    2    3
 +
    4    5    6
 +
    7    8    9
 +
</syntaxhighlight>
 +
 
 +
Az elemek indexelése 1-től kezdődik. Kerek zárójelekkel elemet vagy almátrixot lehet kiválasztani:
 +
<syntaxhighlight lang="matlab">
 +
>> M(2,2)
 +
 
 +
ans =
 +
 
 +
    5
 +
 
 +
>> M(:,2:3)
 +
 
 +
ans =
 +
 
 +
    2    3
 +
    5    6
 +
    8    9
 +
</syntaxhighlight>
 +
 
 +
Az '''eye(n)''' nxn egységmátrixot, a '''zeros(n,m)''' nxm nullmátrixot, a '''ones(n,m)''' nxm 1-kel teli mátrixot hoz létre:
 +
<syntaxhighlight lang="matlab">
 +
>> eye(3)
 +
 
 +
ans =
 +
 
 +
    1    0    0
 +
    0    1    0
 +
    0    0    1
 +
</syntaxhighlight>
 +
 
 +
Az M mátrix oszlopainak átlagát a mean(M) paranccsal számolhatjuk ki:
 +
<syntaxhighlight lang="matlab">
 +
>> mean(M)
 +
 
 +
ans =
 +
 
 +
    4    5    6
 +
</syntaxhighlight>
 +
Az M mátrix oszlopainak szórását az std(M) paranccsal számolhatjuk ki:
 +
<syntaxhighlight lang="matlab">
 +
>> std(M)
 +
 
 +
ans =
 +
 
 +
    3    3    3
 +
</syntaxhighlight>
  
 
==Adatbevitel==
 
==Adatbevitel==
  
kézi
+
Meglévő mátrix elemeit kézzel is felülírhatjuk. A Workspace mezőben a változó nevére kettőt kattintva megjelennek a mátrixelemek, amiket szerkeszthetünk is. Jobb kattintás a változó nevére és Save As opciót választva külső fájlba menthetjük az adatokat. A változó visszaolvasásához a load('fájlnév') parancsot futtassuk.
  
ASCII import
+
A változókat a '''save('fájlnév','változónév')''' paranccsal menthetjük ki majd a '''load('fájlnév')''' paranccsal olvassuk be. A változókat a '''clear all''' paranccsal törölhetjük a memóriából.
 +
 
 +
ASCII fájlok kezeléséhez először olvassunk be egy fájl az '''fopen('fájlnév')''' paranccsal, mely vissza ad egy fájlazonosítót:
 +
<syntaxhighlight lang="matlab">
 +
>> fid = fopen('example.txt')
 +
 
 +
fid =
 +
 
 +
    4
 +
</syntaxhighlight>
 +
 
 +
Az adatok olvasásához használjuk a '''textscan('fileID','formatspecification')''' parancsot. A beolvasott adat oszloporól a C nyelv utasításaihoz hasonló formátum specifikációkat használunk:
 +
{| class="wikitable"
 +
|+
 +
! formatspec
 +
! változó típus
 +
|-
 +
|%d
 +
|egész szám
 +
|-
 +
|%f
 +
|lebegőpontos szám
 +
|-
 +
|%c
 +
|karakter
 +
|-
 +
|%s
 +
|string
 +
|}
 +
 
 +
Szükség esetén a fájl fejlécét tartalmazó sorokat kihagyhatjuk a 'headerLines' kapcsolóval.
 +
 
 +
<syntaxhighlight lang="matlab">
 +
>> Data = textscan(fid, '%s %s %f %s %s %f', 'headerLines', 5, 'CollectOutput', true)
 +
 
 +
Data =
 +
 
 +
  1×4 cell array
 +
 
 +
    {1001×2 cell}    {1001×1 double}    {1001×2 cell}    {1001×1 double}
 +
</syntaxhighlight>
 +
 
 +
A cella változó típust numerikus értékeket tartalmazó mátrixá a '''cell2mat(Data)''' paranccsal alakítjuk.
  
 
==Grafikon szerkesztés==
 
==Grafikon szerkesztés==
 +
Az adatokat a '''plot(xváltozó,yváltozó,jelölő)''' paranccsal ábrázolhatjuk. Ha újabb görbét szeretnénk hozzáadni a grafikonhoz, akkor a '''hold on''' parancsot futassuk. A jelölők részletes leírása [https://www.mathworks.com/help/matlab/ref/errorbar.html#bvc1i62-1_sep_mw_3a76f056-2882-44d7-8e73-c695c0c54ca8 itt] található.
 +
 +
Ha hibát is szeretnénk megjeleníteni akkor használjuk az '''errorbar(xváltozó,yváltozó,yváltozóhibája)''' parancsot.
 +
 +
A grafikon tulajdonságai az ábrára kattintva változtathatjuk illetve parancsokkal is beállíthatjuk:
 +
{| class="wikitable"
 +
|+
 +
! parancs
 +
! hatás
 +
|-
 +
|xlabel('xtengelyfelirat')
 +
|megadja az x tengely feliratát
 +
|-
 +
|ylabel('ytengelyfelirat')
 +
|megadja az y tengely feliratát
 +
|-
 +
|legend({'változónév1','változónév2'})
 +
|jelmagyarázat megjelenítése
 +
|-
 +
|axis([xmin xmax ymin ymax])
 +
|tengely tartomány
 +
|}
 +
 +
 +
Jegyzőkönyve, szakdolgozatba, szakcikkbe szánt ábra készítésekor vegyük figyelembe az alábbi pontokat:
 +
# látható méretű legyen az ábra,
 +
# az összes adat megfelelően látszon,
 +
# a mérés hibáját tüntessük fel,
 +
# szerepeljenek jól olvasható tengelyfeliratok, melyek megadják a mértékegységeket is,
 +
# ha szükséges legyen jelmagyarázat.
 +
 +
==Görbeillesztés==
 +
Görbeillesztéshez futtassuk a '''cftool''' parancsot, melynek hatására az alábbi Curve Fitting Tool ablak jelenik meg. Ezt elérhetjük a MATLAB APPS tabjáról is.
 +
 +
[[File:cftool_screen.png|400px]]
 +
 +
A görbe illesztéshez először állítsuk be a függetelen és függő változókat az X data és Y data legördülő menüben.
  
==Egyenesillesztés==
+
Az illesztendő görbe típusát a középső legördülő menüből válasszuk ki. Új görbe típus definiálásához válasszuk a Custom Equation lehetőséget. A Fit Options... gombra kattintva beállíthatjuk a paraméterek lehetséges tartományát illetve az iteráció kezdeti értékeit.
  
==Nemlineáris görbeillesztés==
+
Az eredményt illetve az illesztett görbét megjelenítő kódot a '''File''' menü, '''Generate Code''' menüpontjával hozhatjuk létre. Ezt bemásolhatjuk a LiveScripben vezetett mérési naplónkba.

A lap jelenlegi, 2021. október 15., 14:36-kori változata


Tartalomjegyzék

MATLAB

A MATLAB egy programozási nyelv illetve egy numerikus számításokra elvégzésére alkalmas programcsomag. A Bevezető labor során mérési adatok feldolgozására, megjelenítésére és kiértékelésére használjuk, melyhez a MATLAB alapfunkcióit ismerjük meg. Akik a MATLAB programozásban jobban el kívánnak mélyedni a A MATLAB programozása című tárgyat ajánljuk. Az alábbiakban a laborhoz szükséges alapvető utasításokat gyűjtöttük össze, mely a tanórán megszerzett gyakorlattal együtt segít a mérési adatok feldolgozásában.

A MATLAB programozáshoz hasznos segítség a MathWork honlapja, ahol megtalálható parancsok részletes dokumentációja valamint számos példa is [1].

Telepítés

A MATLAB telepítéséhez kövessük az egyetemi licensz oldal utasításait [2]. Hallgatók az egyetemi edu.bme.hu e-mail címmel tudnak regisztrálni. A laborhoz szükséges görbeillesztési eljárásokhoz telepítsük a Curve Fitting Toolbox készletet is!

MATLAB szerkesztő

A MATLAB indítása után az alábbi képernyőt látjuk:

MATLAB screen.png

A MATLAB parancsokat egyenként futtathatjuk a Command Window mezőbe gépelve vagy az utasításokból kódot készíthetünk a Live Editor felületen. A parancsok végrehajtást követően megjelennek a Command Window-ban. Ezt elkerülhetjük ha ;-vel lezárjuk a parancsokat. A MATLAB kódokat .m kiterjesztési M fájlokban szokás tárolni, majd a felső Live Editor sávban található Run zöld háromszög segítségével futtathatjuk. A futások eredménye, ekkor a Command Window-ban vagy külön ablakokban jelenik meg. A labor során az .mlx kiterjesztésű Live Script fomátumot használjuk, melynek előnye, hogy a futások eredményét közvetlenül a parancsok alatt látjuk. Section Break elhelyezésével egy nagyobb kódot kisebb részekre tördelhetünk, melyek külön-külön futtathatóak. A Live Script parancsait, a számolások eredményeit és az elkészített ábrákat A File menü Save As menüpontjában TeX formában is kimenthetjük, mely azután könnyen tovább alakítható jegyzőkönyvvé.

Ha a parancs eredményét nem szeretnénk megjeleníteni a parancsot ;-vel zárjuk le. Azokat a sorokat, melyekben megjegyzést (kommentet) helyezünk el % jellel kezdjük. Ezeket a sorokat a fordító figyelmen kívül hagyja.

Számolás mátrixokkal

A leggyakrabban használt adattárolási forma a vektor vagy mátrix. Értékadás változónév = érték formában történik. Ezt követően a változók a Workspace mezőben követhetők.

Sorvektort [1 2 3], míg oszlopvektort [1; 2; 3] utasítással hozunk létre.

Ekvidisztáns adatokat megadhatunk a mettől:lépésköz:meddig módon:

>> V = 2:2:9
 
V =
 
     2     4     6     8

Mátrix sorvégeit értelemszerűen ;-tal zárjuk:

>> M = [1 2 3; 4 5 6; 7 8 9]
 
M =
 
     1     2     3
     4     5     6
     7     8     9

Az elemek indexelése 1-től kezdődik. Kerek zárójelekkel elemet vagy almátrixot lehet kiválasztani:

>> M(2,2)
 
ans =
 
     5
 
>> M(:,2:3)
 
ans =
 
     2     3
     5     6
     8     9

Az eye(n) nxn egységmátrixot, a zeros(n,m) nxm nullmátrixot, a ones(n,m) nxm 1-kel teli mátrixot hoz létre:

>> eye(3)
 
ans =
 
     1     0     0
     0     1     0
     0     0     1

Az M mátrix oszlopainak átlagát a mean(M) paranccsal számolhatjuk ki:

>> mean(M)
 
ans =
 
     4     5     6

Az M mátrix oszlopainak szórását az std(M) paranccsal számolhatjuk ki:

>> std(M)
 
ans =
 
     3     3     3

Adatbevitel

Meglévő mátrix elemeit kézzel is felülírhatjuk. A Workspace mezőben a változó nevére kettőt kattintva megjelennek a mátrixelemek, amiket szerkeszthetünk is. Jobb kattintás a változó nevére és Save As opciót választva külső fájlba menthetjük az adatokat. A változó visszaolvasásához a load('fájlnév') parancsot futtassuk.

A változókat a save('fájlnév','változónév') paranccsal menthetjük ki majd a load('fájlnév') paranccsal olvassuk be. A változókat a clear all paranccsal törölhetjük a memóriából.

ASCII fájlok kezeléséhez először olvassunk be egy fájl az fopen('fájlnév') paranccsal, mely vissza ad egy fájlazonosítót:

>> fid = fopen('example.txt')
 
fid =
 
     4

Az adatok olvasásához használjuk a textscan('fileID','formatspecification') parancsot. A beolvasott adat oszloporól a C nyelv utasításaihoz hasonló formátum specifikációkat használunk:

formatspec változó típus
%d egész szám
%f lebegőpontos szám
%c karakter
%s string

Szükség esetén a fájl fejlécét tartalmazó sorokat kihagyhatjuk a 'headerLines' kapcsolóval.

>> Data = textscan(fid, '%s %s %f %s %s %f', 'headerLines', 5, 'CollectOutput', true)
 
Data =
 
  1×4 cell array
 
    {1001×2 cell}    {1001×1 double}    {1001×2 cell}    {1001×1 double}

A cella változó típust numerikus értékeket tartalmazó mátrixá a cell2mat(Data) paranccsal alakítjuk.

Grafikon szerkesztés

Az adatokat a plot(xváltozó,yváltozó,jelölő) paranccsal ábrázolhatjuk. Ha újabb görbét szeretnénk hozzáadni a grafikonhoz, akkor a hold on parancsot futassuk. A jelölők részletes leírása itt található.

Ha hibát is szeretnénk megjeleníteni akkor használjuk az errorbar(xváltozó,yváltozó,yváltozóhibája) parancsot.

A grafikon tulajdonságai az ábrára kattintva változtathatjuk illetve parancsokkal is beállíthatjuk:

parancs hatás
xlabel('xtengelyfelirat') megadja az x tengely feliratát
ylabel('ytengelyfelirat') megadja az y tengely feliratát
legend({'változónév1','változónév2'}) jelmagyarázat megjelenítése
axis([xmin xmax ymin ymax]) tengely tartomány


Jegyzőkönyve, szakdolgozatba, szakcikkbe szánt ábra készítésekor vegyük figyelembe az alábbi pontokat:

  1. látható méretű legyen az ábra,
  2. az összes adat megfelelően látszon,
  3. a mérés hibáját tüntessük fel,
  4. szerepeljenek jól olvasható tengelyfeliratok, melyek megadják a mértékegységeket is,
  5. ha szükséges legyen jelmagyarázat.

Görbeillesztés

Görbeillesztéshez futtassuk a cftool parancsot, melynek hatására az alábbi Curve Fitting Tool ablak jelenik meg. Ezt elérhetjük a MATLAB APPS tabjáról is.

Cftool screen.png

A görbe illesztéshez először állítsuk be a függetelen és függő változókat az X data és Y data legördülő menüben.

Az illesztendő görbe típusát a középső legördülő menüből válasszuk ki. Új görbe típus definiálásához válasszuk a Custom Equation lehetőséget. A Fit Options... gombra kattintva beállíthatjuk a paraméterek lehetséges tartományát illetve az iteráció kezdeti értékeit.

Az eredményt illetve az illesztett görbét megjelenítő kódot a File menü, Generate Code menüpontjával hozhatjuk létre. Ezt bemásolhatjuk a LiveScripben vezetett mérési naplónkba.