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

Hasonló dokumentumok
MATLAB. 5. gyakorlat. Polinomok, deriválás, integrálás

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

Matlab alapok. Baran Ágnes

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

MATLAB alapismeretek II.

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

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

MATLAB alapismeretek I.

MATLAB alapismeretek III.

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

Internet programozása. 3. előadás

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

Matematikai programok

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK KÖZÉPSZINT Függvények

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK KÖZÉP SZINT Függvények

Matematikai programok

b) Ábrázolja ugyanabban a koordinátarendszerben a g függvényt! (2 pont) c) Oldja meg az ( x ) 2

12 48 b Oldjuk meg az Egyenlet munkalapon a következő egyenletrendszert az inverz mátrixos módszer segítségével! Lépések:

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

1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK KÖZÉP SZINT Függvények

MÁTRIXFÜGGVÉNYEK, SAJÁT FÜGGVÉNYEK, GRAFIKA

% % MATLAB alapozó % % , Földváry Lóránt % Laky Piroska (kiegészítés)

Webprogramozás szakkör

MÁTRIXFÜGGVÉNYEK, SAJÁT FÜGGVÉNYEK, GRAFIKA 1.

Vezérlési szerkezetek

rank(a) == rank([a b])

12. előadás. Egyenletrendszerek, mátrixok. Dr. Szörényi Miklós, Dr. Kallós Gábor

MATLAB. 8. gyakorlat. Differenciálegyenletek

1. Egyszerű (primitív) típusok. 2. Referencia típusok

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Függvények

Függvények Megoldások

A MATLAB PROGRAMOZÁSA

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉP SZINT Függvények

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

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

Atomerőművek üzemtanának fizikai alapjai. MATLAB használata

függvény grafikonja milyen transzformációkkal származtatható az f0 : R R, f0(

Objektumorientált Programozás III.

Egyszerű programozási tételek

LabVIEW példák és bemutatók KÉSZÍTETTE: DR. FÜVESI VIKTOR

1. feladat Készítse el szövegszerkesztővel, majd mentse osztály.txt néven a következő tartalmú szöveges fájlt:

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Függvények

4_Gnuplot1. October 11, Jegyzetben az 3. fejezet (36-től 52.-ig oldalig).

Bevezetés a programozásba I.

1. Halmazok, számhalmazok, alapműveletek

SCILAB programcsomag segítségével

MATLAB OKTATÁS 1. ELŐADÁS ALAPOK. Dr. Bécsi Tamás Hegedüs Ferenc

4. Előadás Programvezérlő utasítások. (begyakorló feladatok)

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

Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

Függvények ábrázolása

Mechatronika segédlet 10. gyakorlat

KIEGYENLÍTŐ SZÁMÍTÁSOK, ILLESZTÉSEK ALAPJAI

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

Baran Ágnes, Burai Pál, Noszály Csaba. Gyakorlat Differenciálegyenletek numerikus megoldása

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

A C# programozási nyelv alapjai

1. Jelölje meg az összes igaz állítást a következők közül!

Matlab alapok. Vektorok. Baran Ágnes

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

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

I. VEKTOROK, MÁTRIXOK

1. Gauss-eloszlás, természetes szórás

MATLAB alapismeretek V. Eredmények grafikus megjelenítése: oszlopdiagramok, hisztogramok, tortadiagramok

Gauss-Jordan módszer Legkisebb négyzetek módszere, egyenes LNM, polinom LNM, függvény. Lineáris algebra numerikus módszerei

Véletlen jelenség: okok rendszere hozza létre - nem ismerhetjük mind, ezért sztochasztikus.

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

1. zárthelyi,

Mechatronika segédlet 11. gyakorlat

Informatika terméktervezőknek

Gyakorló feladatok az 1. nagy zárthelyire

Numerikus matematika

BASH script programozás II. Vezérlési szerkezetek

EGYENÁRAMÚ TÁPEGYSÉGEK

Matematika A1. 9. feladatsor. A derivált alkalmazásai. Függvény széls értékei

Baran Ágnes. Gyakorlat Vektorok, mátrixok, lineáris egyenletrendszerek. Baran Ágnes Matematika Mérnököknek

Bevezetés a MATLAB programba

Lineáris algebra. (közgazdászoknak)

Bevezetés a programozásba. 5. Előadás: Tömbök

17. előadás: Vektorok a térben

a b a b x y a b c d e f PSZT/PSZSZT 1.) Az ábrán e, f egyenesek párhuzamosak. Számítsd ki a hiányzó adatokat!

Szkriptnyelvek. 1. UNIX shell

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

Microsoft Excel Gyakoriság

Memento kurzus: Matlab bevezető

MATLAB alapismeretek IV. Eredmények grafikus megjelenítése: vonalgrafikonok

Matematika A1a Analízis

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Vizuális adatelemzés

Digitális szűrők - (BMEVIMIM278) Házi Feladat

Mátrixok, mátrixműveletek

1. Kombinációs hálózatok mérési gyakorlatai

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Baran Ágnes. Gyakorlat Komplex számok. Baran Ágnes Matematika Mérnököknek Gyakorlat 1 / 33

Modern Fizika Labor. A mérés száma és címe: A mérés dátuma: Értékelés: Folyadékkristályok vizsgálata.

Az egyenes egyenlete: 2 pont. Az összevont alak: 1 pont. Melyik ábrán látható e függvény grafikonjának egy részlete?

Bevezetés a programozásba I.

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

Átírás:

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

Menetrend Kis ZH Mátrixok, alapműveletek Vezérlő szerkezetek Virtuális műtét Statisztikai adatok vizsgálata

pdf Kis ZH

Mátrixok, alapműveletek mátrix létrehozása, transzponált, összefűzés, indexelés (skalárral, egész vagy logikai vektorral, lineárisan), length, size, ones, zeros, rand, diag, eye, squeeze, reshape find, beépített fv.-ek mátrixokon (sin, abs, exp, round, stb.), logikai műveletek és indexelés (pl. A<1.2, B~=3), sum, prod, mean, min, max, trace, elemenkénti műveletvégzés (A.*B, A.^2, stb.)

Példa 1 1. Hozzunk létre egy 3-dimenziós véletlen mátrixot, dimenziónként 5, 2 és 3 elemmel. 2. Két különálló változóba mentsük el ennek a 2. dimenzió mentén található két részmátrixát. 3. Számítsuk ki az első részmátrixban a sorok maximumainak összegét. 4. Számítsuk ki a második részmátrixban az oszlopok minimumainak négyzetes átalág.

Megoldás 1 % 3-dimenziós véletlen mátrix létrehozása R = rand(5,2,3); % részmátrixok kiválasztása resz1 = squeeze(r(:,1,:)); resz2 = squeeze(r(:,2,:)); % resz1-ben a sorok maximumainak összege maxossz = sum(max(resz1,[],2)); % resz2-ben az oszlopok minimumainak négyzetes átlaga min2atlag = sqrt(mean(min(resz2).^2));

Példa 2 Legyen MERES = 10+25*rand(5,3) egy olyan mátrix, amely 5 db hőmérséklet szenzor mérési eredményeit tartalmazza C-ban (szenzor X mérésszám formában). A szenzorokról tudjuk, hogy 15 C és 30 C közötti tartományra lettek kalibrálva, ezért az ezen a tartományon kívül mért értékeket hibásnak tekintjük. 1. Adjuk meg minden egyes szenzorra, hogy a három mérésből hány volt hibás! 2. Adjuk meg azoknak a szenzoroknak a sorszámát, amelyek legalább kétszer jó értéket mértek!

Megoldás 2 % mért értékek MERES = 10+25*rand(5,3); % mérési hibahatárok definiálása also_hibahatar = 15; felso_hibahatar = 30; % hibás értékek jelölése (felülírhatók az elemek, hiszen hibásak) MERES((MERES < also_hibahatar) (MERES > felso_hibahatar)) = 0; % szenzoronként vett hibás mérések száma szenzor_hibaszam = sum(meres == 0, 2); % legalább 2 jó méréssel rendelkező szenzorok sorszámai jo_szenzorok = find(szenzor_hibaszam < 2);

Példa 3 1. Hozzunk létre a 0 1 intervallumon 0.01-es felbontással egy olyan 3 Hz-es szinusz jelet, melynek amplitúdója az idővel egyenes arányban változik! 2. Módosítsuk a kapott jelalakot úgy, hogy a -0.2-nél kisebb elemek helyére -0.2-t, a 0.5-nél nagyobb elemek helyére pedig 0.5-öt írunk! 3.Rajzoljuk ki mindkét görbét egy közös ábrára, a 0 szintet is jelölve egy fekete szaggatott vonallal. Az ábrát megfelelően feliratozzuk!

Megoldás 3 % a szinuszjel frekvenciája Fsin = 3; % idővektor t = 0:0.01:1; % a függvény értékeinek kiszámítása fv = t.*sin(2*pi*fsin*t); % az értékek módosítása új változóban fv_mod = fv; fv_mod(fv_mod < -0.2) = -0.2; fv_mod(fv_mod > 0.5) = 0.5; % kirajzolás figure(1); clf; hold on; plot(t,fv,'--','linewidth',3); plot(t,fv_mod,'r'); plot([t(1) t(end)],[0 0],'k--'); xlim([t(1) t(end)]); title('gorbe ertekeinek modositasa'); xlabel('ido (s)'); ylabel('fuggvenyertek'); legend('eredeti','modositott');

Megoldás 3

Vezérlő szerkezetek - elágazás IF ELSE ELSEIF if feltétel parancsok end if feltétel parancsok1 else parancsok2 end Nincs zárójelezés, az adott blokk végét az end jelzi. if feltétel1 parancsok1 elseif feltétel2 parancsok2 else parancsok3 end A feltétel logikai értékét vizsgálja (ami nem 0, az igaz). Relációs operátorok (==, ~=, <, >, <=, >=) Logikai operátorok (&, &&,,, ~, xor, all, any)

Vezérlő szerkezetek - ciklusok FOR for n = 1:10 parancsok end Ismert számú iteráció elvégzésére. Nincs zárójelezés, az adott blokk végét az end jelzi. A ciklusváltozót sorvektorként definiáljuk, a ciklus törzsében értéke az aktuális elemnek megfelelő skalár. A ciklusváltozó tetszőleges sorvektor lehet (pl. [1 3 7 5 6]). WHILE while feltétel parancsok end Ismeretlen számú iteráció elvégzésére egy feltétel teljesüléséig. Nincs zárójelezés, az adott blokk végét az end jelzi. Nincs explicit módon megadott ciklusváltozó. Figyeljünk a végtelen ciklus elkerülésére!

Vezérlő szerkezetek - switch SWITCH in = input('írj be egy számot: '); switch in case 0 disp('nullát írtál be.'); case 1 megoldas = 2*pi*exp(3.2); case {2, 5} disp('a bemenet 2 vagy 5.'); otherwise disp('nem jó értéket adtál meg, próbáld újra...'); end

Virtuális műtét A load parancs használatával töltsük be az anat.mat fájlt. Nézzük meg, hogy mit tartalmaz az anat változó 3. dimenzió szerint vett 150. szelete. (imagesc, colormap gray) Nézzük végig az anat változó összes szeletét a 3. dimenzió mentén. Ehhez írjunk egy for ciklust, amiben végiglépkedünk a szeleteken és megjelenítjük azokat.

Virtuális műtét % adatok betöltése load anat; % egy szelet megjelenítése szelet = anat(:,:,150); figure(1); imagesc(szelet); colormap gray; % adatok betöltése load anat; % az összes szelet megjelenítése figure(2) colormap gray; for ind = 1:size(anat,3) szelet = anat(:,:,ind); imagesc(szelet); pause(0.02) end

Virtuális műtét A [260, 215, 130] koordináták környékén epileptogén területet találtak az orvosok. Nem lehet gyógyszeresen kezelni, meg kell műteni. A műtét megtervezéséhez jelenítsük meg a célterületet a kiadott showslices függvény használatával. Szimuláljuk le a műtétet a megadott pont körüli 9 voxel élű kocka kivágásával. Ehhez egyrészt mentsük el egy változóba a kivágni kívánt részt, másrészt nullázzuk ki az eredeti mátrixban a vonatkozó térfogatot. Jelenítsük meg az eredményt.

Virtuális műtét % célterület coords=[260,215,130]; % megjelenítés showslices(anat,coords); % a kivágni kívánt térfogat koordinátái vagas_x = coords(1)-4:coords(1)+4; vagas_y = coords(2)-4:coords(2)+4; vagas_z = coords(3)-4:coords(3)+4; % kivágott rész külön mátrixban (3D) kivagott = anat(vagas_x,vagas_y,vagas_z); % "vágás" a teljes térfogatból anat_vagott = anat; anat_vagott(vagas_x,vagas_y,vagas_z) = 0; % megjelenítés showslices(anat_vagott,coords); showslices(kivagott,[1 1 1]);

Virtuális műtét Számítsuk ki, hogy a szimulált műtét eredményeként szürke- és fehérállományának hány %-át veszítené el a beteg. Ehhez: a háttér eltávolítása után vizsgáljuk meg az eredeti térfogat értékeinek eloszlását (hist, 100 részes), és állapítsunk meg egy jó vágási határt a szürke- és fehérállomány szétválasztásához tároljuk el külön változókban a kivágott és az eredeti térfogatok szürke- és fehérállományainak elemszámait, majd számítsuk ki a kivágott szürke- és fehérállomány %-os arányát az egészhez képest

Virtuális műtét % háttér eltávolítása anat_nincshatter = anat(anat>0); % értékek eloszlása hisztogrammal figure; hist(anat_nincshatter,100); % a hisztogram alapján hatar = 0.8; % szürke- és fehérállományok elemszámainak eltárolása szurke_teljes = sum(anat_nincshatter < hatar); feher_teljes = sum(anat_nincshatter > hatar); szurke_kivagott = sum(kivagott(:) < hatar); feher_kivagott = sum(kivagott(:) > hatar); % százalékos arányok megadása szurke_szazalek = szurke_kivagott/szurke_teljes*100; feher_szazalek = feher_kivagott/feher_teljes*100;

Statisztikai adatok vizsgálata A load parancs használatával töltsük be a nepesseg.mat fájlt. Mátrixműveletek segítségével végezzük el a következőket: 1.Adjuk meg, hogy Magyarországon mekkora volt az átlagos népesség a vizsgált időszakban (2000-2012)! 2.Adjuk meg, hogy a 2002-es adatokhoz képest hány százalékkal változott Dánia népessége 2010-re! 3.Adjuk meg, hogy a Magyarország és Németország népessége közötti különbség hányszorosa volt Finnország teljes népességének 2007-ben!

Statisztikai adatok vizsgálata 4.Kiderült, hogy a Belgiumra vonatkozó adatok 2003 és 2006 között (ezeket is beleértve) fordított sorrendben kerültek a táblázatba. Javítsuk ki a hibát! 5.Kiderült továbbá, hogy a 2009-es és 2010-es adatok minden országra fel lettek cserélve. Javítsuk ki a hibát! 6.Közös ábrán rajzoljuk ki Magyarország, Ausztria és Görögország népességének alakulását a teljes vizsgált időszakban! Az ábrát megfelelően feliratozzuk!

Statisztikai adatok vizsgálata load nepesseg.mat; % 1 Magyar_atlag = mean(adatok(end,:)); % 2 Dania_valt_2002_2010 = adatok(4,evek == 2010) / adatok(4,evek == 2002); % 3 mikor = evek == 2007; MagyarNemet_kul_2007 = abs(adatok(10,mikor)-adatok(8,mikor))/adatok(6,mikor); % 4 tartomany = find(evek == 2003):find(evek == 2006); Belgium_rossz = adatok(2,tartomany); adatok_jav = adatok; adatok_jav(2,tartomany) = Belgium_rossz(end:-1:1);

Statisztikai adatok vizsgálata % 5 adat2009 = adatok(:,evek == 2009); adatok_jav2 = adatok_jav; adatok_jav2(:,evek == 2009) = adatok_jav2(:,evek == 2010); adatok_jav2(:,evek == 2010) = adat2009; % 6 Magyar_nepesseg = adatok_jav2(10,:); Osztrak_nepesseg = adatok_jav2(1,:); Gorog_nepesseg = adatok_jav2(9,:); figure(1); hold on; plot(evek,magyar_nepesseg,'go--'); plot(evek,osztrak_nepesseg,'ro--'); plot(evek,gorog_nepesseg,'bo--'); title('népességszám alakulása (2000-2012)'); xlabel('év'); ylabel('fő'); legend('magyarország','ausztria','görögország');