MATLAB. 9. gyakorlat. Cellatömbök, struktúrák, fájlműveletek

Hasonló dokumentumok
MATLAB gyakorlat. Fájlműveletek folytatás, gyakorlás

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben

D X F F Á J L K É S Z Í T É S E M A T L A B B A L

MATLAB. 3. gyakorlat. Mátrixműveletek, címzések

MATLAB. 5. gyakorlat. Polinomok, deriválás, integrálás

7. gyakorlat Sorozatok, Fájlkezelés

AWK programozás Bevezetés

AWK programozás, minták, vezérlési szerkezetek

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Programozás I gyakorlat. 10. Stringek, mutatók

A számok kiíratásának formátuma

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

AWK programozás, minták, vezérlési szerkezetek

Programozás 6. Dr. Iványi Péter

MATLAB. 6. gyakorlat. Integrálás folytatás, gyakorlás

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

INFORMATIKAI ALAPISMERETEK

Pénzügyi algoritmusok

M A T L A B A D A T O K B E O L V A S Á S A / K I Í R Á S A

BASH SCRIPT SHELL JEGYZETEK

10. gyakorlat Struktúrák, uniók, típusdefiníciók

Baran Ágnes. Gyakorlat Függvények, Matlab alapok

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

M-Fájlok létrehozása MATLAB-ban

Gazdasági informatika II (SZIE GTK GVAM 1. évfolyam) 2009/2010. tanév 2. félév

ELTE SAP Excellence Center Oktatóanyag 1

8. Mezőutasítások. Schulcz Róbert 8. Mezőutasítások. v

Keresési algoritmusok, optimalizáció

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

MODULATOR Számítógépes program Commodore 64-re a párhuzamos rezgések összetételének tanulmányozására

Operációs rendszerek gyak.

length (s): Az s karaklerlánc hossza, substr(s,m,n): Az s mezőben levő karakterláncnak az m-edik karakterétől kezdődő, n darab karaktert vágja ki.

Programozás alapjai 6. előadás. Wagner György Általános Informatikai Tanszék

Operációs rendszerek 2 1. óra: Linux alapok Ismétlés. Windisch Gergely félév

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Bevezetés a számítástechnikába

WEBFEJLESZTÉS 2. ADATTÁROLÁS, FÁJLOK

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, MapInfo program alkalmazásával Útmutató 2010.

Python tanfolyam Python bevezető I. rész

Algoritmusok Tervezése. 1. Előadás MATLAB 1. Dr. Bécsi Tamás

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Mérnöki programozás 7. Szerkesztette: dr. Vass Péter Tamás

5. Példa: Olvasás szöveges fájlból (program3_1.vi)

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

MATLAB alapismeretek I.

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

Láncolt lista. az itt adott nevet csak a struct deklaráción belül használjuk

Országos Területrendezési Terv térképi mellékleteinek WMS szolgáltatással történő elérése, MapInfo program alkalmazásával

Teljesítményértékelések eredményeinek rögzítése a Neptun Egységes Tanulmányi Rendszerben

Programozás I gyakorlat

Operációs rendszerek gyak.

Függvények ábrázolása

Tájékoztató. Használható segédeszköz: -

Informatika terméktervezőknek

BME MOGI Gépészeti informatika 13.

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Programozási nyelvek Java

Leíró statisztika. Adatok beolvasása az R-be és ezek mentése

HVK Adminisztrátori használati útmutató

Navigációs GPS adatok kezelése QGIS programmal (1.4 verzió) Összeállította dr. Siki Zoltán

LEI kód igénylési folyamat leírása

Baran Ágnes. Gyakorlat Halmazok, függvények, Matlab alapok. Baran Ágnes Matematika Mérnököknek Gyakorlat 1 / 34

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

INFORMATIKAI ALAPISMERETEK

ABAP dictionary objektumok SAP adatmodell Táblák kezelése. Az SAP programozása 1. Tarcsi Ádám

Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt!

Operációs Rendszerek Gyakorlat

Példatár a bevezetés a Matlab programozásába tárgyhoz

PYTHON. Avagy hosszú az út a BioPythonig

Bevezetés a programozásba I.

Microsoft Excel. Táblázatkezelés. Dr. Dienes Beatrix

Szkriptnyelvek II. Perl programok

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

Programozás C nyelven (10a. ELŐADÁS) Sapientia EMTE

1. Alapok. #!/bin/bash

7. gyakorlat. Fájlkezelés IO haladó Függvények haladó

Programozás C nyelven (13. ELŐADÁS) Sapientia EMTE

Bevezetés a MATLAB programba

EGYSZERŰ SZÁMÍTÁSOK TÁBLÁZATKEZELÉS ELINDULÁS SZE INFORMATIKAI KÉPZÉS 1

Operációs rendszerek. UNIX/Linux fájlrendszerek

Regionális forduló november 18.

Elektronikus levelek. Az informatikai biztonság alapjai II.

Bevezetés a programozásba

1. Jelgenerálás, megjelenítés, jelfeldolgozás alapfunkciói

Felhasználói segédlet

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

Beágyazott rendszerek fejlesztése laboratórium DSP fejlesztési technológiák

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Meglévő munkafüzet megnyitása, mentése új néven

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

Felhasználói segédlet

TUDNIVALÓK AZ INFORMATIKA KURZUSRÓL

Jelentés fájl struktúra a TXT formában készülő jelentések részére

2. Elméleti összefoglaló

3. ZH-ban a minimum pontszám 15

Átírás:

MATLAB 9. gyakorlat Cellatömbök, struktúrák, fájlműveletek

Menetrend Kis ZH Cellatömbök és használatuk Struktúrák és használatuk Fájlműveletek

Kis ZH pdf

Félévzárás (1) Akinek egyik nagyzh-ja sem sikerült (<50%), annak a féléve sajnos sikertelen. Akinek csak az egyik nagyzh-ja nem sikerült (<50%), azt a pótzh-n javítania kell. Akinek mindkét nagyzh-ja sikerült (>=50%), de a kiszh összege nincs 0 fölött, annak a rosszabbul sikerült nagyzh eredménye törlődik, és a vonatkozó anyagból pótzh-t kell írnia.

Félévzárás (2) Minden olyan esetben, amikor pótzh-t kell írni, a pótzh minimum ponthatára emelkedni fog a kiszh-k összpontszáma alapján, ha azok összege 1 alatt van. 1 fölötti kiszh összeg esetén a pótzh minimum ponthatára 50%. 1 alatti összeg esetén a ponthatár emelkedésének mértéke (1 - Σ kiszh)*5% lesz az alábbiak szerint: Σ kiszh = 0 => pótzh minimum = 55% Σ kiszh = -2 => pótzh minimum = 65% Σ kiszh = -4 => pótzh minimum = 75% Σ kiszh = -6 => pótzh minimum = 85% Σ kiszh = -8 => pótzh minimum = 95% Σ kiszh = -10 esetén a félév sikertelen.

Félévzárás (3) FONTOS: a pótzh minimum ponthatárának emelése a megfelelő pontszámok levonásával fog megtörténni, ezért a kiszh-n elért 1nél kisebb összeg bünetőpontként fog megjelenni. Ennek értelmében pl. Σ kiszh = -6 esetén egy 95%-os pótzh a valóságban 60%-nak fog megfelelni. Akinek mindkét nagyzh-ja sikerült (>50%) és a kiszh összege is 1 fölött van, annak értelem szerűen nem kell pótzh-t írnia, viszont az egyik általa választott nagyzh-t javíthatja, ha szeretné (ezt majd előre jelezni kell). A javító ZH minden esetben felülír.

Cellatömbök Olyan adattípus, melyet különböző típusú és/vagy méretű változók tárolására használhatunk. Üres cellatömb létrehozása: C = cell(2,2); Cellatömb elemeinek indexelése a { } zárójelekkel, rész-cellatömb indexelése a ( ) zárójelekkel történik. Cellatömb létrehozása ismert elemekkel: C = {1, 2; 3, 4} Fontos, hogy az egyes cellákban teljesen eltérő elemeket tárolhatunk, akár további cellatömböket is.

Példa 1.1. Hozzunk létre egy 3 2 méretű üres cellatömböt! Az egyes cellákat oszlopfolytonosan töltsük fel az alábbi elemekkel: 'szöveg' 12 [8.13, 14.86] magic(5) cell(2,4) {1, 2, 3;4, 5, 6} Jelenítsük meg a cellatömb tartalmát a cellplot parancs használatával!

Megoldás 1.1. % cellatömb létrehozása C1 = cell(3,2); % feltöltés oszlopfolytonosan C1{1,1} = 'szöveg'; C1{2,1} = 12; C1{3,1} = [8.13, 14.86]; C1{1,2} = magic(5); C1{2,2} = cell(2,4); C1{3,2} = {1, 2, 3; 4, 5, 6}; % megjelenítés cellplot(c1); title('c1 tartalma');

Megoldás 1.1. % cellatömb létrehozása C1 = cell(3,2); % feltöltés oszlopfolytonosan C1{1,1} = 'szöveg'; C1{2,1} = 12; C1{3,1} = [8.13, 14.86]; C1{1,2} = magic(5); C1{2,2} = cell(2,4); C1{3,2} = {1, 2, 3; 4, 5, 6}; % megjelenítés cellplot(c1); title('c1 tartalma');

Példa 1.2. Az előző cellatömböt hozzuk létre egy paranccsal, a megadott elemek használatával! Jelenítsük meg a cellatömb tartalmát a cellplot parancs használatával!

Megoldás 1.1. % létrehozás ismert elemekből C2 = {'szöveg', magic(5); 12, cell(2,4); [8.13 14.86], {1, 2, 3; 4, 5, 6}}; % megjelenítés figure; cellplot(c2); title('c2 tartalma');

Megoldás 1.1. % létrehozás ismert elemekből C2 = {'szöveg', magic(5); 12, cell(2,4); [8.13 14.86], {1, 2, 3; 4, 5, 6}}; % megjelenítés figure; cellplot(c2); title('c2 tartalma');

Példa 2. Töltsünk fel egy cellatömböt az alábbiak szerint: az első eleme egy sorvektor legyen (t), ami 0-tól 2πig tartalmaz 1000 értéket egyenletesen elosztva a második sorban a 'Sin(3t)', 'Cos(5t)' és 'Sin(3t)*Cos(5t)' stringek álljanak a harmadik sorban a stringeknek megfelelő numerikus értékek legyenek eltárolva Ciklus használatával rajzoljuk ki a fent kiszámolt értékeket egy ábrán 3 subplotra fekete színnel! A subplotok címeit is a cellatömbből írjuk ki!

Megoldás 2. c{1,1} c{2,1} c{2,2} c{2,3} c{3,1} c{3,2} c{3,3} = = = = = = = linspace(0,2*pi,1000); 'Sin(3t)'; 'Cos(5t)'; 'Sin(3t)*Cos(5t)'; sin(3*c{1,1}); cos(5*c{1,1}); c{3,1}.*c{3,2}; figure; for spi=1:size(c,2) subplot(3,1,spi); plot(c{3,spi},'k'); title(c{2,spi}); xlabel('t') end

Megoldás 2.

Struktúrák A cellatömbökhöz hasonlóan különböző típusú és/vagy méretű változók tárolására használható adattípus azzal a különbséggel, hogy a tárolt adatok névvel ellátott mezőkbe kerülnek (hasonlóan pl a C nyelv struct típusához).

Struktúrák - példa hallgato.nev = 'Kis Pista'; hallgato.szul_datum = '1992.03.24.'; hallgato.evfolyam = 3; hallgato.osztalyzatok = [2 4 3 5 3 4 4 3]; >> hallgato >> hallgato.nev hallgato = ans = nev: szul_datum: evfolyam: osztalyzatok: 'Kis Pista' '1992.03.24.' 3 [2 4 3 5 3 4 4 3] Kis Pista

A korábbi kirajzolós példa (struktúra tömb) % idővektor t = linspace(0,2*pi,1000); % első ábra rajz(1).x = t; rajz(1).y = sin(3*rajz(1).x); rajz(1).cim = 'Sin(3t)'; % második ábra rajz(2).x = t; rajz(2).y = cos(5*rajz(2).x); rajz(2).cim = 'Cos(5t)'; % harmadik ábra rajz(3).x = t; rajz(3).y = rajz(1).y.* rajz(2).y; rajz(3).cim = 'Sin(3t)*Cos(5t)'; % kirajzolás figure; for pli = 1:length(rajz) subplot(3,1,pli); plot(rajz(pli).x,rajz(pli).y,'k'); title(rajz(pli).cim); end

A korábbi kirajzolós példa (struktúra tömb)

Fájlkezelés Többféle módon lehet MATLAB-ban fájlokat írni/olvasni, melyek közül az alábbi három módszerről lesz szó: fájl írás/olvasás formázott szövegként fájl írás/olvasás táblázatként fájl írás/olvasás binárisan

Fájlkezelés Többféle módon lehet MATLAB-ban fájlokat írni/olvasni, melyek közül az alábbi három módszerről lesz szó: fájl írás/olvasás formázott szövegként fájl írás/olvasás táblázatként fájl írás/olvasás binárisan

Elérési útvonalak A kiíráshoz kelleni fog a célkönyvtár elérési útvonala stringként megadva: Windows alatt pl.: DIR_PATH = 'D:\myfolder\file_op\'; Linux alatt pl.: DIR_PATH = '/home/myfolder/file_op/'; Az egyes platformokon más a fájlelválasztó karakter ('\' vagy '/'), ami csapatmunka esetén problémás lehet. Erre nyújt megoldást a filesep parancs, amely megadja az aktuális platformon használt elválasztó karaktert. Ezt beépítve az elérési útvonalakba, nem lesz gond a platformok között a fájlkezeléssel. Pl. az aktuális helyhez képest vett relatív címzés esetén: fs = filesep; DIR_PATH=['.' fs 'files' fs];

Fájlba írás formázott szövegként fprintf(fileid, format, A) fileid : a megnyitott fájl azonosítója format : kiírási formátum (részletek később) A : kiírandó adat

Kiírási formátum Stringként kell megadni. A formázó string % karakterrel kezdődik, utána jön a minimális mezőhossz (a tizedespont és az előjel is benne van), a pontosság és formátum. Fontos, hogy egyéb stringek közé ékelkető, előtte és utána további stringek lehetnek (részletek a Help-ben).

Kiírási formátum - példa % pl.: '%4.4f' % '%3.2e' % '%4.5d' % '%+7.4f' % '%010.3f ' -> -> -> -> -> fixpontos exponencialis 10-es alapu egesz fixpontos, + jellel fixpontos, 0-ákkal az elején >> x = [1.2 3.3 4]; >> fprintf('x értékei: x(1) = %4.4f, x(2) = %3.1f, x(3) = %d \n',x); x értékei: x(1) = 1.2000, x(2) = 3.3, x(3) = 4 fileid nélkül a Command Window-ba ír.

Szinusz jel kiírása (1) % kiirando jel generalasa % mintaveteli frekvencia Fs=1000; % Hz % idovektor t=0:1/fs:10; % s % a szinusz frekvenciaja f=5; % Hz % szinusz jelalak s=sin(2*pi*f*t); % az adott helyhez kepest vett relativ cimzes % (lehet abszolut is, teljes utvonallal) fs = filesep; DIR_PATH=['.' fs 'files' fs]; % a kiirando fajl neve filename='szinusz_fprintf.txt'; % a fajl eleresi utvonala (ha csak a fajlnevet % adom meg, az aktualis konyvtarba menti) file_path=[dir_path filename];

Szinusz jel kiírása (2) % fajl megnyitasa irasra, ez utan az fid-val % hivatkozok erre a fajlra fid=fopen(file_path,'w'); % header irasa, hogy tudjuk, mi van a fajlban % pl.: Szinusz (Fs = 1000) fprintf(fid,['szinusz (Fs = ' num2str(fs) ') \n']); fprintf(fid,'t sin \n'); % az iras utan nyitva marad a fajl % ezert irhatok meg bele formazott adatot % irjuk bele a kiszamolt szinusz fuggvenyt fprintf(fid,'%5.2f %4.4f\n',[t;s]); % fajl bezarasa - FONTOS, ne felejtsuk el! fclose(fid);

Eredmény

Fájlból olvasás formázott szövegként (fscanf) % az fscanf csak az alap formazo % karaktereket ismeri (lasd HELP) % fajl beolvasasa formazott % szovegkent % a beolvasando fajl neve (amit % az elobb kiirtunk) filename='szinusz_fprintf.txt'; % eloszor a header beolvasasa % stringkent Sheader=fscanf(fid,'%s',6); % a fajl eleresi utvonala file_path=[dir_path filename]; % majd az adatok beolvasasa % fixpontos szamkent Sdata=fscanf(fid,'%f %f',[2 inf]); % fajl megnyitasa olvasasra fid=fopen(file_path); % fajl bezarasa fclose(fid); % beolvasott adatok kirajzolasa figure; plot(sdata'); legend('t','sin');

Fájlból olvasás formázott szövegként (fscanf)

Fájlból olvasás formázott szövegként (textscan) % a textscan-nek lehet regularis % kifejezest is adni (lasd HELP) % fajl beolvasasa cellatã mbbe % header beolvasasa Sheader_ts=textscan(fid,'%s',6); % a beolvasando fajl neve (meg % mindig ugyanaz) filename='szinusz_fprintf.txt'; % adatok beolvasasa Sdata_ts=textscan(fid,'%f %f'); % a fajl eleresi utvonala file_path=[dir_path filename]; % fajl bezarasa fclose(fid); % fajl megnyitasa olvasasra fid=fopen(file_path); % beolvasott adatok kirajzolasa tt = Sdata_ts{1}; data = Sdata_ts{2}; figure; plot(tt,data);

Fájlból olvasás formázott szövegként (textscan)