„Bevezetés az Matlab használatába” változatai közötti eltérés
(→Számolás mátrixokkal) |
(→MATLAB szerkesztő) |
||
(2 szerkesztő 20 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 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 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== | ||
73. sor: | 77. sor: | ||
0 1 0 | 0 1 0 | ||
0 0 1 | 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> | </syntaxhighlight> | ||
==Adatbevitel== | ==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. | |
− | ASCII | + | 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. | ||
− | + | 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. |
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:
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:
- 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.
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.