Nizovi različitih dimenzija matlab. Numerički nizovi. Izračunavanje broja dimenzija niza
Elementi iste klase se često mogu kombinovati u nizove (uz nekoliko rijetkih izuzetaka, kao što je korištenje funkcija). Numerički skalari, po defaultu klase double, mogu se pohraniti u matricu.
>> A = A = 1.0e+04 * 0.0001 -0.0002 0.0003 0.0001 1.5625 0.0003 Inf Inf NaN -Inf
Znakovi koji imaju klasu char u MATLAB-u također se mogu pohraniti u niz koristeći sličnu sintaksu. Takav niz je sličan nizu u mnogim drugim programskim jezicima.
>> s = ["MATLAB ","je ","zabavno"] s = MATLAB je zabavan
Imajte na umu da iako oba koriste zagrade [ i ], klase rezultata su različite. Stoga su i operacije koje se mogu obaviti na njima različite.
>> čije Ime Veličina Bajtovi Atributi klase A 2x5 80 double s 1x13 26 char
S niz zapravo nije niz stringova "MATLAB", "is" i "fun", to je samo jedan niz - niz od 13 karaktera. Dobili biste iste rezultate da su definirani jednim od sljedećih:
>> s = ["MAT","LAB ","je f","u","n"]; >> s = ["M","A","T","L","A","B," ","i","s"," ","f","u", "n"];
Regularni MATLAB vektor vam ne dozvoljava da pohranite kombinaciju varijabli iz različitih klasa ili više različitih stringova. Ovdje dobro dolazi niz ćelija. Ovo je niz ćelija, od kojih svaka može sadržavati neki MATLAB objekt, čija klasa može biti različita u svakoj ćeliji ako je potrebno. Koristite vitičaste zagrade ( i ) oko elemenata za pohranu u niz ćelija.
>> C = (A; s) C = "MATLAB je zabavan" >> čiji C Ime Veličina Bajtovi Atributi klase C 2x1 330 ćelija
Standardni MATLAB objekti bilo koje klase mogu se pohraniti zajedno u niz ćelija. Imajte na umu da nizovi ćelija zahtijevaju više memorije za pohranjivanje svog sadržaja.
Sadržaju ćelije se pristupa pomoću vitičastih zagrada ( i ).
>> C(1) ans = 1.0e+04 * 0.0001 -0.0002 0.0003 0.0001 1.5625 0.0003 Inf Inf NaN -Inf
Imajte na umu da se C(1) razlikuje od C(1) . Dok potonji vraća sadržaj ćelije (i ima dvostruki primjer), prvi vraća niz ćelija koji je podmatrica C. Slično, ako je D niz ćelija 10 puta 5, onda D(4:8,1 : 3) će vratiti podmatricu D čija je veličina 5 puta 3 i čija je klasa cell . A sintaksa C(1:2) nema jedan vraćeni objekat, ali vraća 2 različita objekta (slično MATLAB funkciji sa višestrukim povratnim vrijednostima):
>> = C(1:2) x = 1 -2 3.14 0.8 15625 3.14159265358979 Inf Inf NaN -Inf y = MATLAB je zabavan
Tehnički računarski jezik
Milioni inženjera i naučnika širom sveta koriste MATLAB ® da analiziraju i dizajniraju sisteme i proizvode koji transformišu naš svet. MATLAB matrični jezik je najprirodniji način na svijetu da se izrazi računska matematika. Integrirana grafika čini podatke lakim za vizualizaciju i razumijevanje. Desktop okruženje podstiče eksperimentisanje, istraživanje i otkrivanje. Svi ovi MATLAB alati i mogućnosti su rigorozno testirani i dizajnirani da rade zajedno.
MATLAB vam pomaže da svoje ideje prenesete izvan desktopa. Možete pokrenuti studije na velikim skupovima podataka i proširiti ih na klastere i oblake. MATLAB kod se može integrisati sa drugim jezicima, omogućavajući vam da primenite algoritame i aplikacije u mrežne, poslovne i industrijske sisteme.
Početak rada
Naučite osnove MATLAB-a
Osnove jezika
Sintaksa, indeksiranje i obrada niza, tipovi podataka, operatori
Uvoz i analiza podataka
Uvoz i izvoz podataka, uključujući velike datoteke; prethodna obrada podataka, vizualizacija i istraživanje
Matematika
Linearna algebra, diferencijacija i integracija, Fourierove transformacije i druga matematika
Graficka umjetnost
2D i 3D grafika, slike, animacija
Programiranje
Skripte, funkcije i klase
Kreiranje aplikacije
Razvijajte aplikacije pomoću App Designer-a, Programabilnog toka rada ili GUIDE-a
Alati za razvoj softvera
Otklanjanje grešaka i testiranje, organizacija velikih projekata, integracija sa sistemom kontrole verzija, pakovanje kutija sa alatima
MatLab sve podatke prikazuje u obliku nizova. Vrlo je važno pravilno razumjeti kako koristiti nizove. Bez toga je nemoguć efikasan rad u MatLabu, posebno crtanje, rješavanje problema linearne algebre, obrade podataka, statistike i mnogih drugih. Ovaj pododjeljak opisuje proračune s vektorima.
Niz je uređena, numerirana zbirka homogenih podataka. Niz mora imati ime. Nizovi se razlikuju po broju dimenzija ili dimenzijama: jednodimenzionalni, dvodimenzionalni, višedimenzionalni. Elementima se pristupa pomoću indeksa. U MatLabu, numerisanje elemenata niza počinje od jedan. To znači da indeksi moraju biti veći ili jednaki jedan.
Važno je razumjeti da su vektor, vektor reda ili matrica matematički objekti, a jednodimenzionalni, dvodimenzionalni ili višedimenzionalni nizovi načini pohranjivanja ovih objekata u računar. U nastavku će se koristiti riječi vektor i matrica ako je sam objekt od većeg interesa od metode njegovog pohranjivanja. Vektor se može napisati u koloni (vektor kolone) ili u redu (vektor reda). Vektori kolona i vektori reda često se nazivaju jednostavno vektori, razlika koja se pravi u slučajevima kada je važan način na koji je vektor pohranjen u MatLab-u. Vektori i matrice su označeni kurzivom, a njihovi odgovarajući nizovi su označeni ravnim jednorazrednim fontom, na primjer: „vektor A sadržan u nizu a", "upiši matricu R u niz r".
Unos sabiranja i oduzimanja vektora
Počnimo raditi s nizovima s jednostavnim primjerom - izračunavanjem sume vektora:
, .
Za pohranjivanje vektora koristite nizove a i b. Unesite niz a u komandnu liniju, koristeći uglaste zagrade i odvajajući vektorske elemente tačkom i zarezom:
" a =
a =
1.3000
5.4000
6.9000
Pošto uneseni izraz nije završen točkom i zarezom, MatLab automatski ispisuje vrijednost varijable a. Unesite sada drugi vektor, potiskujući izlaz na ekran
" b = ;
Da biste pronašli zbir vektora, koristite znak +. Izračunajte sumu, upišite rezultat u niz c i prikažite njegove elemente u komandnom prozoru:
» c = a + b
c =
8.4000
8.9000
15.1000
Saznajte dimenziju i veličinu niza a koristeći ugrađene funkcije ndims i size:
» ndims(a)
ans =
2
"veličina (a)
ans =
3 1
Dakle, vektor A je pohranjen u dvodimenzionalnom nizu dimenzija tri po jednu (vektor stupca od tri reda i jedne kolone). Slične operacije se mogu uraditi za nizove b I c. Pošto su brojevi u MatLabu predstavljeni kao jedan po jedan dvodimenzionalni niz, dodavanje vektora koristi isti znak plus kao i zbrajanje brojeva.
Vektor reda se unosi u uglaste zagrade, ali elementi moraju biti odvojeni razmacima ili zarezima. Operacije sabiranja, oduzimanja i izračunavanja elementarnih funkcija iz vektora reda izvode se na isti način kao i kod vektora stupaca, što rezultira vektorom reda iste veličine kao i originalni. Na primjer:
" s1 =
s1 =
3 4 9 2
" s2 =
s1 =
5 3 3 2
» s3 = s1 + s2
s3 =
8 7 12 4
Napomena 1
Ako se veličine vektora na koje se primjenjuje sabiranje ili oduzimanje ne podudaraju, generira se poruka o grešci.
Naravno, da biste pronašli razliku između vektora, trebali biste koristiti znak minus; s množenjem situacija je nešto složenija.
Unesite dva vektora reda:
» v1 = ;
» v2 = ;
Operacija.* (nemojte umetati razmak između tačke i zvjezdice!) rezultira množenjem vektora iste dužine element po element. Rezultat je vektor sa elementima jednakim proizvodu odgovarajućih elemenata originalnih vektora:
» u = v1.*v2
u =
14 -15 -24 9
Koristeći.^, vrši se eksponencijacija element po element:
» p = v1.^2
p =
4 9 16 1
Eksponent može biti vektor iste dužine kao i onaj koji se diže na stepen. U ovom slučaju, svaki element prvog vektora se podiže na potenciju jednaku odgovarajućem elementu drugog vektora:
» p = vl.^v2
P =
128.0000 -243.0000 0.0002 1.0000
Podjela odgovarajućih elemenata vektora iste dužine vrši se operacijom./
» d = v1./v2
d =
0.2857 -0.6000 -0.6667 0.1111
Inverzna podjela po elementima (podjela elemenata drugog vektora na odgovarajuće elemente prvog) izvodi se pomoću operacije.\
"dinv = vl.\v2
dinv =
3.5000 -1.6667 -1.5000 9.0000
Dakle, tačka u MatLab-u se koristi ne samo za unos decimalnih razlomaka, već i za označavanje da dijeljenje ili množenje nizova iste veličine treba izvršiti po elementima.
Operacije po elementima također uključuju vektorske i numeričke operacije. Dodavanje vektora i broja ne rezultira porukom o grešci. MatLab dodaje broj svakom elementu vektora. Isto važi i za oduzimanje:
» v = ;
" s = v + 1.2
s =
5.2000 6.2000 9.2000 11.2000
» r = 1,2 - v
r =
-2.8000 -4.8000 -6.8000 -8.8000
» r1 = v - 1.2
r1 = 2,8000 4,8000 6,8000 8,8000
Vektor možete pomnožiti brojem i na desnoj i na lijevoj strani:
» v = ;
» p = v*2
p =.
8 12 16 20
"pi = 2*v
pi =
8 12 16 20
Vektor možete podijeliti brojem pomoću znaka /:
» p = v/2
p =
2 3 4 5
Pokušaj dijeljenja broja vektorom rezultira porukom o grešci:
» p = 2/v
??? Greška u korištenju ==> /
Dimenzije matrice se moraju slagati.
Ako trebate podijeliti broj sa svakim elementom vektora i zapisati rezultat u novi vektor, onda biste trebali koristiti operaciju./
" w = ;
» d = 12./w
d =
3 6 2
Sve gore navedene operacije primjenjuju se i na vektore redova i vektore stupaca.
MatLab-ova karakteristika predstavljanja svih podataka kao nizova je vrlo zgodna. Neka, na primjer, trebate izračunati vrijednost sin funkcije za sve elemente vektora odjednom With(koji je pohranjen u nizu c) i zapišite rezultat u vektor d. Da dobijem vektor d dovoljno je koristiti jedan operator dodjeljivanja:
» d = sin(c)
d =
0.8546
0.5010
0.5712
Dakle, elementarne funkcije ugrađene u MatLab prilagođavaju se tipu argumenata; ako je argument niz, tada će rezultat funkcije biti niz iste veličine, ali s elementima jednakim vrijednosti funkcije iz odgovarajućih elemenata originalnog niza. Pogledajte ovo na još jednom primjeru. Ako trebate pronaći kvadratni korijen vektorskih elemenata d sa znakom minus onda je dovoljno napisati:
» sqrt(-d)
ans =
0 + 0,9244i
0 + 0,7078i
0 + 0,7558i
Operator dodjeljivanja nije korišten, pa je MatLab napisao odgovor na standardnu varijablu ans.
Da biste odredili dužinu vektora stupaca ili vektora reda, koristite ugrađenu funkciju dužine:
» dužina(s1)
ans =
4
Od nekoliko vektora stupaca možete kreirati jedan koristeći uglaste zagrade i odvajajući originalne vektore stupaca tačkom i zarezom:
» v1 = ;
» v2 = ;
" v =
v =
1
2
3
4
5
Uglaste zagrade se također koriste za spajanje vektora reda, ali spojeni vektori reda su odvojeni razmacima ili zarezima:
» v1 = ;
» v2 = ;
" v =
v =
1 2 3 4 5
Rad sa vektorskim elementima
Elementima vektora stupca ili vektora reda pristupa se pomoću indeksa zatvorenog u zagradama iza imena niza u kojem je pohranjen vektor. Ako među varijablama radnog okruženja postoji niz v definiran vektorom reda
» v = ;
zatim za izlaz, na primjer, njegov četvrti element, koristite indeksiranje:
» v(4)
ans =
8.2000
Pojava elementa niza na lijevoj strani operatora dodjeljivanja uzrokuje promjenu u nizu
» v(2) = 555
v =
1.3000 555.0000 7.4000 8.2000 0.9000
Novi nizovi se mogu formirati od elemenata niza, na primjer
" u =
u =
7.4000
555.0000
1.3000
Za postavljanje određenih elemenata vektora u drugi vektor u datom redoslijedu, koristite indeksiranje pomoću vektora. Pisanje u niz wčetvrti, drugi i peti element v se radi na sljedeći način:
" ind = ;
» w = v(ind)
w =
8.2000 555.0000 0.9000
MatLab pruža zgodan način za pristup blokovima sekvencijalnih elemenata vektora kolone ili vektora reda. U tu svrhu se koristi indeksiranje pomoću znaka dvotočka. Pretpostavimo da je to u nizu w, što odgovara vektoru reda od sedam elemenata, potrebno je elemente od drugog do šestog zamijeniti nulama. Indeksiranje pomoću dvotočka omogućava vam da jednostavno i jasno riješite problem:
" w = ;
» w(2:6) = 0;
" w
w =
0.1000 0 0 0 0 0 9.8000
Dodjela w(2:6) = 0 je ekvivalentna nizu naredbi
w(2) = 0; w(3)=0; w(4)=0; w(5)=0; w(6)=0.
Indeksiranje dvotočkom je zgodno kada odaberete dio velike količine podataka u novi niz:
» w - ;
"wl = w(3:5)
wl =
3.3000 5.1000 2.6000
Konstruirajte niz w2 koji sadrži elemente od w osim četvrtog. U ovom slučaju, zgodno je koristiti dvotočku i konkatenaciju nizova:
" w2 =
w2 =
0.1000 2.9000 3.3000 2.6000 7.1000 9.8000
Elementi niza mogu biti uključeni u izraze. Pronalaženje, na primjer, geometrijske sredine elemenata niza u, može se uraditi na sljedeći način:
» gm = (u(l)*u(2)*u(3))^(l/3)
gm =
17.4779
Naravno, ova metoda nije baš zgodna za dugačke nizove. Da biste pronašli geometrijsku sredinu, potrebno je da u formulu unesete sve elemente niza. MatLab ima mnogo posebnih funkcija koje olakšavaju takve proračune.
Primjena funkcija obrade podataka na vektore
Množenje elemenata vektora stupca ili vektora reda se vrši pomoću funkcije prod:
» z = ;
» p = prod(z)
p = 720
Funkcija suma je dizajnirana da zbroji elemente vektora. Koristeći ga, lako je izračunati aritmetičku sredinu elemenata vektora z:
» zbroj(z)/dužina(z)
ans =
3.5000
MatLab također ima srednju vrijednost posebne funkcije za izračunavanje aritmetičke sredine:
"znači (z)
ans =
3.5000
Za utvrđivanje minimum i maksimum elemenata vektora Koriste se ugrađene funkcije min i max:
» m1 = max(z)
m1 =
6
» m2 = min(z)
m2 =
1
Često je potrebno znati ne samo vrijednost minimalnog ili maksimalnog elementa u nizu, već i njegov indeks (redni broj). U ovom slučaju, ugrađene funkcije min i max moraju se koristiti s dva izlazna argumenta, na primjer
" = min(z)
m =
1
k =
3
Kao rezultat, varijabli m će biti dodijeljena vrijednost minimalnog elementa niza z, a broj minimalnog elementa će biti upisan u varijablu k.
Za informacije o različitim načinima korištenja funkcija, upišite help nakon čega slijedi naziv funkcije u komandnoj liniji. MatLab će u komandnom prozoru prikazati sve moguće načine pristupa funkciji uz dodatna objašnjenja.
Glavne funkcije za rad s vektorima uključuju funkciju sortiranja za sređivanje vektora uzlaznim redoslijedom njegovih elemenata.
» r = ;
» R = sortiraj(r)
R=
Možete sortirati vektor u opadajućem redoslijedu koristeći isti funkcija sortiranja:
» R1 = -sort(-r)
R1 =
9.4000 7.1000 1.3000 0.8000 -2.3000 -5.2000
Redoslijed elemenata u rastućem redoslijedu njihovih modula vrši se pomoću funkcije abs:
» R2 = sortiraj(abs(r))
R2 =
0.8000 1.3000 2.3000 5.2000 7.1000 9.4000
Pozivanje sortiranja sa dva izlazna argumenta rezultira formiranjem niza indeksa korespondencije između elemenata uređenog i originalnog niza:
" = sortiraj(r)
rs =
-5.2000 -2.3000 0.8000 1.3000 7.1000 9.4000
ind =
3 2 5 6 4 1
TEMA 5. SOFTVERSKA IMPLEMENTACIJA MATEMATIČKIH MODELA
Savremeni matematički modeli su složeni i za izvođenje proračuna na njima potrebno je koristiti računar. Stoga algoritme ili metode izračunavanja date u prethodnom poglavlju treba prevesti na neki programski jezik. Trenutno su jezici kao što su FORTRAN, C i PASCAL popularni za naučni razvoj. Ali za širok spektar korisnika, ovi jezici se smatraju složenim i stoga su sistemi kao što su EXCEL, MATLAB, MATHCAD, MAPLE itd., koji su razumljiviji stručnjacima u predmetnoj oblasti, postali široko rasprostranjeni. Fokusiraćemo se na MATLAB sistem koji se koristi u laboratorijskom radu ovog kursa.
^
5.1 Kratke karakteristike MATLAB-a
MATLAB sistem (skraćeno od MATrix LABoratory) je razvio The MathWorks, Inc. (SAD, Natick, Massachusetts) i predstavlja interaktivni sistem za izvođenje inženjerskih i naučnih proračuna, koji je fokusiran na rad sa nizovima podataka i omogućava pristup programima napisanim na Fortranu, C++. Sistem podržava operacije sa vektorima, matricama i nizovima podataka, podržava rad sa algebarskim polinomima, rješavanje diferencijalnih i razlika jednadžbi, rješavanje nelinearnih jednadžbi i optimizacijskih problema itd., kao i konstruiranje različitih tipova grafova, trodimenzionalnih površina i linija nivoa .
Operativno okruženje MATLAB sistema uključuje komandni prozor, alatnu traku, podsisteme za pregled radnog prostora i pristupnih staza, M-file editor/debugger, itd. Korisnik može sam pisati programe koristeći M-file editor, koji su formatirani kao M-fajlovi (M-datoteke).datoteke imaju ekstenziju .m). Svaki program se mora kreirati, uređivati (tj. prilagoditi) i izvršiti (tj. izračunati).
Za kreiranje novog programa u meniju ^File je odabrana opcija Novo i onda M-File; Kao rezultat, otvara se prozor za uređivanje M-fajla. U ovom prozoru se upisuje tekst programa. Nakon što je ovaj tekst otkucan, program treba da sačuvate sa imenom (za to u meniju File je odabrana opcija Sačuvaj kao).
Da biste pokrenuli program, idite na komandni prozor iu komandnu liniju, označenu na ekranu simbolima >> unesite naziv M-datoteke.
Da biste uredili već kreiranu M-datoteku, potrebno je da se vratite iz komandnog prozora u prozor editora sa tekstom programa.
^
Formiranje nizova u MATLAB-u
U MATLAB-u, glavni objekt su nizovi (matrice i vektori), za koje dimenzije nisu potrebne da budu eksplicitno specificirane. Da bi se formirao numerički niz, brojevi su naznačeni u uglastim zagradama, a separator između brojeva su razmaci. Simbol se koristi za odvajanje redova matrica ; . Primjer.
Matrica A = od 3 reda i 2 kolone je zapisana kao: A = .
Simbol se koristi za formiranje nizova : . Primjer.
Postavi vektor WITH, koji se sastoji od brojeva od 0 do 0,5 u koracima od 0,1: C = 0: 0,1: 0,5. Na ekranu će se pojaviti linija:
C = 0 0,1 0,2 0,3 0,4 0,5
Ako je korak 1, onda nije navedeno, na primjer, da navedete vektor B koji se sastoji od brojeva 3, 4, 5, 6, 7, možete napisati: B = 3: 7. Tada će se pojaviti ekran:
B = 3 4 5 6 7
Simbol :
se također koristi za odabir podblokova niza. Primjer. Odaberite prvi stupac matrice A =: A ( :
, 1).
Nizovi se mogu kombinovati. Neka x= 1, 2, 3, 4, a y= 5, 6, 7, 8. Zatim fragment programa za formiranje kombinovanog niza z bit će sljedeće:
x = 1:4;
y = 5:8;z = [x; y]
pojavit će se ekran: z =
Aritmetičke operacije. Koriste se aritmetički operatori sabiranja + , oduzimanje – , množenje * , divizije / , eksponencijacija ^.
p1) . ′ transpozicija po elementima (redovi se zamjenjuju stupcima, za složenekompleksna konjugacija se ne izvodi za matrice).
Na primjer, neka je A =, a zatim A . ′ = .
p1) .^ stepenovanje po elementima, A . ^B.
Na primjer, neka je A =, a zatim A .
^2 =
.
p1) ′ - transpozicija matrice. Za složene matrice, transponovanje se dopunjuje
složena konjugacija.
Na primjer, neka je A =, a zatim A′ =
.
p1) ^
podizanje matrice na stepen, A^p (samo za kvadratne matrice i za cijele brojeve p). Na primjer, neka je matrica A =
. Tada je A^2 =
p2) .*
po elementima množenje dva niza iste veličine.
Na primjer, neka je A =
B=
, zatim A .
*B =
Svi elementi niza se množe sa skalarom, na primjer, neka je A = . Izračunajte F =3*A. Dobijamo F =
.
p2) *
množenje matrice, A*B.
Na primjer, neka je A = B = . Tada je A * B =
.
p2) ./
podjela nizova po elementima. Nizovi moraju biti iste veličine ili je niz podijeljen skalarom. Na primjer, neka je A = . Zatim B ./
3 = .
p3) +
dodatak i -
oduzimanje za skalare, vektore i matrice.
Na primjer, neka je A =
i B =
. Zatim A -
B =
.
PS: Operacije tipa p1 se izvode prije p2, a p2 prije p3. Unutar svakog nivoa prioritet je isti, proračuni se vrše s lijeva na desno. Možete koristiti zagrade da odredite potreban redoslijed operacija
^
Neki specijalni karakteri
() - indikacija redosleda operacija. primjeri:
a) postaviti niz x od 0 do 3 u koracima od 0,1 i predstavljeno kao stupac: x=(0: 0,5: 2)′
b) izračunati
: y=(x+0.5)/2
- formiranje nizova (pogledajte odeljak „Formiranje nizova u MATLAB sistemu“)
%
- komentari počinju ovim simbolom. Mogu biti u obliku zasebnih linija ili pratiti bilo koju od naredbi.
;
ovaj simbol se koristi: a) za suzbijanje prikaza rezultata proračuna; b) odvojiti redove matrica.
:
- ovaj simbol se koristi za formiranje vektora, kao i za odabir redova ili stupaca niza.
pi
- broj π = 3,141592653897
ans
- rezultat operacije ako izlazna varijabla nije specificirana (u ovom slučaju MATLAB koristi varijablu ans).
inf
- ovaj simbol se pojavljuje na ekranu kada se, tokom izračunavanja, mreža bitova (“stvarno” ∞) prelije u jednoj od ćelija. Na primjer, kada se izvodi operacija dijeljenja nulom.
NaN
- posebna varijabla za označavanje nedefinirane vrijednosti, rezultat operacija kao što su: 0/0, inf/inf itd.
^
Osnovne matematičke funkcije
abs- apsolutna vrijednost, na primjer, neka x= [-2 4 –8,5], zatim abs( x) = .
sin, cos, tan itd. – trigonometrijske funkcije, argumenti (uglovi) su navedeni u radijanima. Na primjer, t= cos( x);
exp- eksponencijalna funkcija ( e x), Na primjer: y= exp( x);
log- prirodni logaritam, na primjer: c= log( d);
log10– decimalni logaritam, npr. z= log10( y);
sqrt - kvadratni korijen, na primjer: b= sqrt( a);
Neke grafičke funkcije
figure- funkcija za otvaranje grafičkog prozora na ekranu
xlabel, ylabel- funkcije za imenovanje x i y osi
naslov- funkcija za postavljanje naslova iznad grafikona
plot(x,y)- funkcija za konstruisanje dvodimenzionalnog grafa zavisnosti y = f(x) u kartezijanskim koordinatama (tip markera, boja i tip linije na grafikonu se biraju automatski);
plot(x1, y1, LineSpec1, x2, y2, LineSpec2,...)- funkcija za konstruisanje nekoliko zavisnosti na grafičkom prozoru, određujući marker, boju i tip linije za svaku liniju.
polarni (x,y)– funkcija za izgradnju zavisnosti y = f(x) u polarnim koordinatama.
mreža (x, y)- funkcija specificira pravokutnu mrežu na ravni ( x, y) u obliku dvodimenzionalnih nizova, koji su definisani datim vektorima x I y.
Primjer: [ X,Y] = mreža (1:0,5:2,10:14). Kao rezultat dobijamo:
X = 1 1.5 2 Y = 10 10 10
1 1.5 2 11 11 11
1 1.5 2 12 12 12
1 1.5 2 13 13 13
1 1.5 2 14 14 14
mreža (x,y,z)- funkcija prikazuje trodimenzionalnu površinu ograničenja mreže z = f(x, y).
surf(x,y,z)- funkcija prikazuje kontinuiranu površinu ograničenja mreže z = f(x, y).
^
Online pristup informacijama i dokumentaciji pomoći
Postoji nekoliko načina za dobijanje informacija o funkcijama MATLAB sistema.
1 . Tim naziv funkcije pomoći. Ukucano direktno u MATLAB komandni prozor. Na primjer: pomozi grijehu.
2
. Meni POMOĆ komandni prozor. Ovaj meni pruža potpune informacije pomoći o MATLAB sistemu, koji sadrži više detalja i primjera od naredbe help. Korisnik može pregledati kompletnu dokumentaciju za MATLAB sistem (podmeni Sadržaj), ili otvoriti listu svih funkcija po abecednom redu (podmeni Indeks), ili organizovati pretragu po nazivu (podmeni Pretraga). Također je moguće otvoriti listu funkcija po kategorijama (MATLAB Functions Listed by Category), otvoriti listu primjera po kategoriji (Indeks primjera dokumentacije) i drugim karakteristikama.
^
primjeri:
a) Pronađite funkcije linearne algebre. Otvorite niz prozora:
POMOĆ – MATLAB Pomoć – Pronalaženje funkcija i svojstava – Matlab funkcije navedene po kategorijama – Matematika – Linearna algebra
b) Pronađite grafičke funkcije za crtanje: POMOĆ – Pomoć za MATLAB – Pronalaženje funkcija i svojstava – Matlab funkcije navedene po kategorijama – Grafike – Osnovne grafike i grafovi.
3
. Drugi način za dobijanje informacija o MATLAB sistemu je pristup Web serveru kompanije The MathWorks.
^
5.2 Zadaci linearne algebre, izračunavanje funkcija i crtanje grafova
MATLAB sistem je orijentisan na rad sa nizovima i glavni problemi linearne algebre su u ovom sistemu predstavljeni u ekonomičnom obliku. Neki tipični problemi linearne algebre i njihova softverska implementacija su razmotreni u nastavku.
Primjer1. Pomnoži vektor
na vektor
.
Kao što znate, kada se množe vektori, prvi vektor mora biti red, a drugi vektor kolone i moraju imati iste dimenzije. Dakle, rješenje je zapisano u obliku
a =
b =
c
=
a*b
Or
a =
b = ′
c
=
a*b
% odgovora: With = 12.
PS: Ako to zapišete b= , tada se proračun ne vrši, jer bće se tumačiti kao vektor reda.
Primjer 2. Množenje matrice
na matricu
.
Da bi se ova operacija ispravno izvršila, broj elemenata u redovima matrice A mora biti jednak broju elemenata u kolonama matrice B. Program će biti napisan u obliku:
a = ;
b = ;
Na ekranu će se pojaviti sljedeće:
Primjer 3. Riješiti sistem linearnih jednačina
U matričnom obliku, ovaj sistem će imati oblik: A*x = B, gdje je:
Tada će rješenje biti zapisano kao:
^A= % postavljamo matricu koeficijenata za nepoznate
B= % postavlja vektor slobodnih termina
X=A\B% sistemskog rješenja (odgovor: X 1 =5, X 2 = 3, x 3
= 2)
Simbol \
koristi se za rješavanje sistema linearnih jednačina AX=B.
Primjer 4. Za matricu A(vidi primjer 3) pronađite determinantu i inverznu matricu ( A-1) i prebrojite proizvod E=A∙
A-1 . Rješenje:
A=
C = det(A) %det – funkcija izračunava determinantu date matrice
D = inv(A) %inv - funkcija izračunava matricu inverznu od date
Odgovor: C = -6; E = 1,0000 0 0
0.0000 1.0000 0.0000
0.0000 -0.0000 1.0000
U matematičkim modelima često je potrebno procijeniti vrijednosti izraza poput y = f(x) na različitim vrijednostima x a zatim predstaviti ove zavisnosti u grafičkom obliku. U MATLAB-u se takvi problemi lako rješavaju. Ispod su primjeri.
^
Primjer 5. U intervalu X= izračunaj vrijednosti:
y = e x I z = 1 + x + x 2 /2 + x 3 /6 + x 4 /24
za ravnomerno raspoređenih 31 bod. Izgradite zavisnosti y = f(x) I z = f(x) na jednom grafu (kartezijanske koordinate). Vrijednosti x, y, z ne prikazuju na ekranu.
Rješenje će biti napisano u obliku:x = (0: 0,1: 3)"; postavite vrijednosti X u rasponu od 0 do 3 u koracima od 0,1
y = exp(x); izračunajte vektorske vrijednosti at
z = 1,0 +x + (x.^2)/2 + (x.^3)/6 - (x.^4)/24; izračunajte vektorske vrijednosti z
otvorite grafički prozor
plot(x,y," –g ",x,z," –k ") iscrtaj funkciju y = cos(x)
xlabel(" koordinate x ") daje ime za os x
ylabel(" koordinate y ') daje ime za os y
title(" y=exp(x) "); dati naslov za grafikon
Primjer 6. U intervalu X =
izračunati vrijednosti y = 0,5 ln (x+1) za ravnomjerno raspoređenih 101 poen. Izgradite zavisnost y = f(x)
u polarnim koordinatama.
x= (0: pi/10: 10*pi)’;
y = 0,5*log( x + 1);
polarni ( x,
y); izgraditi graf funkcije y = 0,5ln(x+1)
MATLAB vam omogućava da lako kreirate trodimenzionalne dijagrame, tj. zavisnosti od tipa z = f(x, y), kao što je prikazano u sljedećem primjeru.
Primjer 7. Građevinska površina
at X= -1 do +1 u koracima od 0,2 i at y= -1 do +1 u koracima od 0,2.
Rješenje problema:
[x, y]=meshgrid([-1:0.2:1]);
z=x.*exp(- x.^2 - y.^2);
mreža ( x,y,z);
surfati ( x,y,z);
PS: Grafičke karakteristike su opisane gore u odjeljku “Neke grafičke karakteristike”.
^
5.3. Rješavanje nelinearnih algebarskih jednadžbi i aproksimirajuće funkcije
MATLAB sistem čini mnogo lakšim nego u poznatim programskim jezicima rješavanje sistema nelinearnih (algebarskih jednačina) i približnih funkcija specificiranih u tablici.
Primjer 8. Riješite jednačinu
sa početnom aproksimacijom x 0
= 5 i sa iteracijama prikazanim na ekranu:
Rješenje problema:
funkcija ex1
options = optimset(" Display "," iter ");
Fzero(@f, 5, opcije)
funkcija y = f(x)
y = x.^3-2*x-5;
PS: Prve 3 izjave su glavni program, posljednje 2 izjave su funkcija koja definira ovisnost
na različitim vrijednostima X.
Ispod su kratki opisi MATLAB funkcija koje se koriste za rješavanje problema.
fzero (@ime funkcije, x 0
,opcije)– traženje nule funkcije jedne varijable. Rješenje se traži u blizini date tačke x 0
pronalaženjem intervala u kojem funkcija mijenja predznak. Ako takav interval nije pronađen, vraća se Inf ili NaN. Parametar
opcije može podesiti prikaz međurezultata (iteracija) na ekranu i tačnost proračuna.
optimset(“Display”, “iter”) – funkcija za prikaz iteracija na ekranu.
-
prikazuje željeno rješenje i vrijednost funkcije koja odgovara ovom rješenju.
Možete saznati više o funkcijama koje se koriste u HELP MATLAB-u.
Primjer 9. Riješite sistem jednačina:
(5.1)
sa početnim aproksimacijama x 0 = 2,5; y 0 = 0,5 i sa iteracijama prikazanim na ekranu.
Da bismo to riješili, pomjerimo desnu stranu jednadžbe na lijevu stranu
, (5.2)
tako da su nule na desnoj strani. Zatim tražimo minimum funkcije koja se sastoji od sume ovih jednadžbi na kvadratu: . Budući da je zbir kvadrata uvijek pozitivan broj, minimum funkcije ne može biti manji od 0, a dostizanje vrijednosti f= 0 znači da su vrijednosti x I y, koji odgovara ovoj vrijednosti, postižu željena rješenja sistema (5.2).
Rješenje problema:
funkcija ex2
options = optimset("Display","iter");
Fminsearch (@eq1, , opcije)
funkcija f = eq1(x)
f = (x(1).^2 + x(2).^2 - 9).^2 + (x(1) + sin(x(2)) - 3).^2
PS: Postoji korespondencija između nepoznanica u jednadžbi (5.1) i programskih varijabli: x = x(1), y = x(2).
MATLAB funkcija koja se koristi za rješavanje problema:
fminsearch (@ime funkcije, [ početne aproksimacije varijabli ], opcije)– funkcija za pronalaženje minimalne vrijednosti funkcije mnogih varijabli.
^
Aproksimacija funkcije
Aproksimacija tabelarno specificirane funkcije polinomom n-tog stepena izvodi se metodom najmanjih kvadrata (vidi paragraf 2.4).
Primjer 10. Izvršiti aproksimaciju date funkcije tačke x= 0 do 0,7 u koracima od 0,1, y= 0,22 0,428 0,604 0,74 0,84 0,91 0,95 0,98 polinom 2. stepena. Konstruirajte grafove date funkcije tačke i aproksimirajući polinom:
Rješenje problema:
x=(0:0.1:0.7)" % niz x sastoji se od 8 brojeva
y=" % niz y sastoji se od 8 brojeva
p=polyfit(x,y,2)
table=
plot(x,y,"k*",x,f,"-g")
xlabel("koordinata x")
ylabel("koordinata y')
naslov( "Grafika y(x), f(x)")
PS: Broj brojeva u nizovima x I y mora biti isti; sto– naziv niza formiranog od 4 vektora: x, y, f i ( y-f). U ovom nizu ima 8 4 = 32 broja. Niz f takođe sadrži 8 brojeva
polyfit (x, y, stepen polinoma) - funkcija pronalazi koeficijente a i polinom p(x) stepeni n, koji aproksimira datu funkciju y(x):
p(x) = a 1
x n + a 2
x n – 1 + … + a n x+a n+1
polyval(p, x) - funkcija za izračunavanje vrijednosti polinoma str u datim tačkama x.
^
5.4 Rješavanje običnih diferencijalnih jednačina i izračunavanje integrala
MATLAB lako rješava obične diferencijalne jednadžbe (Cauchyjev problem) i izračunava definitivne integrale koristeći standardne funkcije.
Primjer 11. Riješite diferencijalnu jednadžbu koristeći standardnu funkciju ode45:
(5.3)
u intervalu x= 0 do 30 at y(0)= 2 for a = 0,24.
Hajde da prvo predstavimo jednačinu (5.3) kao sistem jednačina:
(5.4)
na početnim vrijednostima: y 1
(0) = 0; y 2
(0) = 2 da se isključi nezavisna varijabla s desne strane (5.3) x.
Rješenje problema.
funkcija ex_eqdif
Ode45(@dif1,,);
funkcija dy=dif1(t,y)
% pravie dijelovi difderensial. uravneniy
dy(2)=cos(y(1))-sin(y(1))-alfa*y(2);
PS: Funkcija dif1(t,y) određuje desnu stranu jednadžbe (5.4). Postoji korespondencija između nepoznanica u jednadžbi (5.4) i programskih varijabli: x = y(1), y = y(2).
ode45 (@
naziv funkcije , [
interval integracije ], [
početni uslovi ]
) - funkcija se koristi za rješavanje običnih ne-krutih diferencijalnih jednadžbi korištenjem Runge-Kutta metode 4. reda.
nule (m,n)- funkcija generiše niz nula veličine
(Gdje m– broj jednačina, n=1).
globalno– operator deklarira globalne varijable. Ako umjesto varijable alfa zamenite broj na desnoj strani, onda ne morate unositi globalnu varijablu.
Primjer 12. Riješite Lotka-Volterra sistem jednadžbi pomoću funkcije ode23:
(5.5)
at X=0 do 10 i početni uslovi: y 1
(0)
=
1; y 2
(0)
= 1. Parametri
= 0,01 i
= 0,02 postavljeno kao globalne vrijednosti. Grafičke funkcije y 1
(x), y 2
(x)).
Rješenje problema.
funkcija Lotka_Volterra
globalna alfa beta
alfa=0,01; beta=0,02;
Ode23(@lotka,,);
plot(t,y); %Grafikon y 1 (t) I y 2 (t)
funkcija dy=lotka(t,y)
globalna alfa beta
dy(1)=y(1)-alfa*y(1)*y(2);
dy(2)=-y(2)+beta*y(1)*y(2);
PS: Funkcija lotka(t,y) određuje desnu stranu jednadžbe (5.5). Postoji korespondencija između nepoznanica u jednadžbi (5.5) i programskih varijabli: y 1
= y(1), y 2
= y(2).
ode23 (@
naziv funkcije , [
interval integracije ], [
početni uslovi ]
) - funkcija se koristi za rješavanje običnih ne-krutih diferencijalnih jednadžbi korištenjem Runge-Kutta metode niskog reda.
^
Izračunavanje integrala
Primjer 13. Izračunaj integral:
(5.6)
koristeći Simpsonovu metodu (standardna četverostruka funkcija) i iscrtati integrand funkciju u intervalu X= u koracima od 0,1.
Rješenje problema:
funkcija int1
y=1./(x.^3-2*x-5);
plot(x,y); Izgradnja grafa y(x)
Q = quad(@myfun,0,2)
funkcija y = myfun(x)
y = 1./(x.^3-2*x-5);
PS: Funkcija integrand se izračunava u funkciji myfun(x) za različite vrijednosti X
quad(@subintegral_function_name, a, b)- numeričko izračunavanje integrala primenom adaptivne Simpsonove metode, gde su: a i b granice integracije.
Primjer 14. Izračunaj integral:
(5.7)
Simpsonovom metodom (standardna quad funkcija) sa y= 10 o (pretvoriti stepene u radijane). Za vrijednost y koristiti globalnu varijablu u programu.
Rješenje problema.
funkcija int2
Q = quad(@myfun,0,pi/2);
funkcija y = myfun(x)
y=1./sqrt(1-(sin(teta)*sin(x)).^2);
PS: Veličina y program odgovara globalnoj varijabli theta. Vrijednost integrala se dobija u varijabli Q.
^
Kontrolna pitanja
1. Šta je skalar, vektor, matrica? Navedite definicije i primjere.
2. Koje radnje se mogu izvesti s vektorima i matricama? Navedite primjere.
3. Kako se formiraju nizovi u MATLAB-u: jednodimenzionalni i dvodimenzionalni? Navedite primjere.
4. Definirati transponovani vektor i transponovanu matricu. Kako se formiraju u MATLAB-u? Navedite primjere.
5. Definirati determinantu i inverznu matricu. Kako se oni računaju u MATLAB-u? Navedite primjere.
6. Elementarne funkcije i njihovo snimanje u MATLAB-u. Navedite primjere.
7. Ručno (bez pomoći računara) izvršite sljedeće:
Pomnožite vektor P vektorom Y;
Pomnožite matricu G vektorom Y;
Pomnožite matricu G sa matricom F,
8. Napišite program u MATLAB-u za izvođenje radnji navedenih u pitanju 7.
9. Zadana matrica
. Odredi njenu inverznu matricu bez pomoći kompjutera - A -1 .
10. Pronađite determinantu matrice bez pomoći kompjutera
.
11. Dat sistem linearnih jednačina:
(1P)
ili u matričnom obliku Cּ X= B.
Kreirati MATLAB program za rješavanje ovog sistema sa određivanjem determinante matrice WITH.
12. Koristeći MATLAB, pronađite matricu inverznu matrici WITH(iz pitanja 11). Kako koristiti matricu WITH-1 pronađite nepoznate x 1 , x 2 , x 3 , x 4 iz sistema (1P)?
13. Rešite sistem jednačina koristeći MATLAB
(2P)
Pronađite razlog kvara ako sistem (2P) nije riješen. Odrediti determinantu matrice koeficijenata za nepoznate.
14. Za uslove pitanja 7 napišite program u MATLAB-u:
Množenje 1. reda matrice G sa 2. kolonom matrice F;
Množenjem 2. reda matrice F sa 2. kolonom matrice G.
15. Korištenje MATLAB-a za određivanje dužine puta kočenja ^S(m) kao funkcija brzine V f(gospođa):
gdje je brzina specificirana u intervalu V f= 10…40 (korak brzine je 2m/s), nacrtajte zavisnosti: S = f(V f )
I V f = φ(S).
16. Riješite grafički (koristeći MATLAB) jednačinu:
(3P)
u intervalu x= 0…10π u koracima od 0,1π. Koliko korijena ima jednačina (3P)?
17. Koristeći MATLAB u kartezijanskim koordinatama, konstruirajte kružnicu sa centrom u tački x = 1, y= 1 i poluprečnik jednak 1. Duž ose x izaberite korak Δ
x= 0,05.
18. Korišćenje MATLAB-a za izgradnju zavisnosti y = ln(x + 1) u kartezijanskim koordinatama u intervalu x= 0…4π sa korakom od 0,2π, kao i zavisnost r = ln(φ + 1) u polarnim koordinatama u istom intervalu i sa istim korakom φ
.
19. Korištenje MATLAB-a na jednom grafu u polarnim koordinatama sa koracima
= 0,1 u intervalu, konstruisati zavisnosti (spirale sa 3 zavoja):
A) r = 0,4φ
+ 0,03φ
2 (4P)
b) zavisnost (4P), ali uvijena u suprotnom smjeru.
20. Koristeći MATLAB, konstruirajte 3-dimenzionalnu površinu:
u području [ x, y] = [-1:0,1:1] [-2:0,1:2].
21. Koristeći MATLAB, konstruirajte 3-dimenzionalnu površinu:
u području [ x, y] = .
22. Korišćenje MATLAB-a korišćenjem programa fzero
x 0
= 2km; x f= 8 km.
27. Data je tabelarna zavisnost potrošnje goriva (za putnički automobil) od vremena rada.
polyfit, polyval) naći aproksimirajuću zavisnost G = f(t) polinom 3. stepena i odrediti prosječnu grešku aproksimacije.
28. Navedena je tabelarna zavisnost cijene putničkog automobila od radnog vremena.
t(godina) | 0 | 1 | 2 | 3 | 5 | 7 | 10 |
C ($) | 11500 | 8700 | 7200 | 6000 | 5500 | 5000 | 4600 |
Koristeći MATLAB paket (funkcije polyfit, polyval) pronaći aproksimativne zavisnosti C = f(t) polinome 2. i 3. stepena i uporediti maksimalne greške aproksimacije.
29. Korištenje MATLAB-a (funkcija ode45
(5P)
u intervalu x= 0…2 pri početnim uslovima: x 0
= 0, y 0
= 1. Prvo transformirajte jednačinu (5P) u sistem od 2 diferencijalne jednadžbe.
30. Korištenje MATLAB-a (funkcija ode23) riješiti običnu diferencijalnu jednačinu:
(6P)
u intervalu x= 0…5 pri početnim uslovima: x 0
= 0, y 0
= 2. Prvo transformirajte jednačinu (6P) u sistem od 2 diferencijalne jednadžbe.
31. Korištenje MATLAB-a (funkcija ode45
u intervalu t= 0…8π pri početnim uslovima: t =0; x 0
= 1; y 0
= 1.
32. Korištenje MATLAB-a (funkcija ode45) riješiti sistem običnih diferencijalnih jednačina:
u intervalu
= 0,3…4 pri početnim uslovima:
= 0,3; x 0
= 1; y 0
= 0.
33. Korištenje MATLAB-a (funkcija ode23) riješiti običnu diferencijalnu jednačinu:
(7P)
u intervalu t= 0…3s u početnim uslovima: t = 0, r 0
= 0,
i ω = 2π (rad/s). Prvo transformirajte jednačinu (7P) u sistem diferencijalnih jednačina prvog reda.
Lekcija #13.
Višedimenzionalni nizovi
Koncept višedimenzionalnih nizova
Korištenje operatora ":" u višedimenzionalnim nizovima
Pristup pojedinačnom elementu višedimenzionalnog niza
Uklanjanje dimenzije u višedimenzionalnom nizu
Kreiranje stranica ispunjenih konstantama i slučajnim brojevima
Kombinovanje nizova
Izračunavanje broja dimenzija niza i određivanje veličine dimenzija
Permutacije dimenzija niza
Pomak dimenzija niza
Uklanjanje dimenzija jedinice
U ovoj lekciji ćemo se dotaknuti pitanja vezanih za složenije tipove podataka, koji uključuju višedimenzionalne nizove.
Koncept višedimenzionalnih nizova
U MATLAB-u, dvodimenzionalni niz je poseban slučaj višedimenzionalnog niza. Višedimenzionalne nizove karakteriziraju dimenzije veće od dvije. Takvim se nizovima može dati vizuelna interpretacija. Dakle, matrica (dvodimenzionalni niz) može biti napisana na jednom listu papira u obliku redova i kolona koji se sastoje od elemenata matrice. Tada se sveska sa takvim listovima papira može smatrati trodimenzionalnim nizom, polica u ormaru sa sveskama može se smatrati četvorodimenzionalnim nizom, ormar sa mnogo polica može se smatrati petodimenzionalnim nizom, itd. U ovoj knjizi, gotovo nigdje, osim ovog odjeljka, nećemo se baviti nizovima, dimenzija koje su veće od dvije, ali je ipak korisno znati o mogućnostima MATLAB-a u smislu specificiranja i korištenja višedimenzionalnih nizova.
U našoj literaturi pojmovi „veličine“ i „dimenzije“ nizova su gotovo sinonimi. Međutim, oni imaju jasno različita značenja u ovoj knjizi iu MATLAB dokumentaciji i literaturi. Ispod dimenzija nizovi se odnose na broj dimenzija u prostornom prikazu nizova, a po veličina - broj redova i stupaca (mxn) u svakoj dimenziji niza.
Korištenje operatora ":" u višedimenzionalnim nizovima
Kada normalno specificirate nizove (koristeći tačku-zarez ";"), broj redova (redova) niza je za 1 veći od broja znakova ":", ali niz ostaje dvodimenzionalan. Operator ":" (dvotočka) olakšava izvođenje operacija za povećanje veličine nizova. Dajemo primjer formiranja trodimenzionalnog niza dodavanjem nove stranice. Neka nam je dat početni dvodimenzionalni niz M veličine 3x3:
» M=
M =
1 2 3
4 5 6
7 8 9
Da biste dodali novu stranicu iste veličine, možete proširiti M na sljedeći način:
» M(:.:.2)=
M(:.:.l) =
1 2 3
4 5 6
7 8 9
M(:.:.2) =
10 11 12
13 14 15
16 17 18
Pogledajmo šta sada sadrži niz M kada je eksplicitno specificiran:
» M
M(:,:.1)=
1 2 3
4 5 6
7 8 9
M(:.:.2) =
10 11 12
13 14 15
16 17 18
Kao što vidite, brojevi u izrazima M(:.:, 1) i M(:,: ,2) znače broj stranice.
Pristup pojedinačnom elementu višedimenzionalnog niza
Da biste pozvali centralni element prvo prve, a zatim i druge stranice, morate napisati sljedeće izraze:
» M(2.2,1)
Ans =
» MS2.2.2)
Ans =
Dakle, višedimenzionalni nizovi koriste ista pravila indeksiranja kao jednodimenzionalni i dvodimenzionalni nizovi. Proizvoljni element, na primjer, trodimenzionalnog niza je specificiran kao M(1 .j.k), gdje je 1 broj reda, j je broj kolone, a k je broj stranice. Ovaj element može biti izlaz, ili mu možete dodijeliti datu vrijednost x: M(1,j,k)=x.
Uklanjanje dimenzije u višedimenzionalnom nizu
Već smo primijetili mogućnost brisanja pojedinačnih stupaca dodjeljivanjem vrijednosti vektora praznog stupca. Ovu tehniku je lako proširiti na stranice i, općenito, na dimenzije višedimenzionalnog niza. Na primjer, prva stranica rezultirajućeg niza M može se izbrisati na sljedeći način:
» M(:.:.1)=
M =
10 11 12
13 14 15
16 17 18
Lako je vidjeti da je u ovom nizu ostala samo druga stranica i da je dimenzija niza smanjena za 1 - postala je dvodimenzionalna.
Kreiranje stranica ispunjenih konstantama i slučajnim brojevima
Ako postoji numerička konstanta iza znaka dodjele, tada će odgovarajući dio niza sadržavati elemente koji sadrže ovu konstantu. Na primjer, napravimo od niza M (vidi primjer iznad) niz čija druga stranica sadrži jedinice:
"M(:.:..2)=1
M(:.:,1) =
10 11 12
13 14 15
16 17 18
M(:.:.2) =
1 1 1
1 1 1
1 1 1
Sada zamijenimo prvu stranicu niza sa stranicom sa nula elemenata:
"M(:.:.1)=0
M(:.:.1)=
0 0 0
0 0 0
0 0 0
M(:.:,2) =
1 1 1
1 1 1
1 1 1
Korištenje funkcija jedinica, nula, rand i randn
Funkcije one (kreiranje nizova sa elementima jedinice), nule (kreiranje nizova sa elementima nula) i rand ili randn (kreiranje nizova sa elementima - slučajnih brojeva sa uniformnom i normalnom distribucijom, respektivno) takođe se mogu koristiti za kreiranje višedimenzionalnih nizova. Primjeri su dati u nastavku:
» E=jedinice (3.3.2)
E(:.:.1)=
1 1 1
1 1 1
1 1 1
E(:.:,2) =
1 1 1
1 1 1
1 1 1
» Z=nule(2,2,3) Z(:,:.l) =
Z(:.:.2) =
Z(:.:,3) =
» R=randn(3,2.2) R(:.:.l) =
1.6656-1.1465
0.1253 1.1909
0.2877 1.1892
R(:.:,2) =
0.0376-0.1867
0.3273 0.7258
0.1746 -0.5883
Ovi primjeri su sasvim očigledni i ne zahtijevaju posebne komentare. Imajte na umu, međutim, da je lako odrediti veličine niza za svaku dimenziju. Osim toga, treba napomenuti da ako je barem jedna dimenzija niza nula, tada će niz biti prazan:
» A=randn(3,3,3,0)
A =
Prazan niz: 3-bu-3-bu-3-by-0
Kao što možete vidjeti iz ovog primjera, prazan niz se vraća s odgovarajućim komentarom.
Kombinovanje nizova
Za kreiranje višedimenzionalnih nizova koristite specijalnu funkciju spajanja cat, opisanu ranije za matrice:
cat(DIM,A,B) - vraća rezultat kombinovanja dva niza A i B duž DIM dimenzije;
cat(2.A.B) - vraća niz [A.B], u kojem su redovi kombinovani (horizontalna konkatenacija);
cat(1, A.V) - vraća niz [A:B], u kojem su kolone kombinovane (vertikalna konkatenacija);
B=cat(DIM.Al,A2,...) - kombinuje višestruke ulazne nizove Al, A2,... duž DIM dimenzije.
Funkcije cat(DIM,C(:)) i cat(DIM.C.FIELD) respektivno obezbeđuju konkatenaciju (spajanje) ćelija niza ćelija (vidi lekciju 15) ili struktura niza struktura (vidi lekciju 14) koje sadrže numeričke matrice u jednu matricu. Slijede primjeri korištenja cat funkcije:
» M1=
» M2=
M2 =
» kat.Ml.M2)
Ans =
5 B
» mačka (2.Ml.M2)
ans=
1 2 5 6
3 4 7 8
» M-cat(3.Ml.M2) M(:,:.l) =
M(:,:,2) =
Rad sa dimenzijama
Izračunavanje broja dimenzija niza
Funkcija ndims(A) vraća veličinu niza A (ako je veća ili jednaka dva). Ali ako je ulazni argument Java niz ili niz Java nizova, onda bez obzira na veličinu niza, ova funkcija će vratiti 2. Sljedeći primjer ilustruje upotrebu funkcije ndims:
» M=rand(2:3:4:5):
» ndims(M)
Ans =
4
Izračunavanje veličine dimenzije niza
Da biste izračunali veličinu svake dimenzije niza, koristite funkciju veličine:
M = size(A.DIM) vraća veličinu dimenzije koju specificira DIM skalar kao vektor reda veličine 2. Za dvodimenzionalni ili jednodimenzionalni niz A, size(A.l) vraća broj redova, a size(A, 2) vraća broj kolona;
Za N-dimenzionalne nizove A sa n>2 veličine(A) vraća N-dimenzionalni vektor reda koji odražava organizaciju stranice niza, posljednja komponenta ovog vektora je jednaka N. Vektor ne sadrži podatke o jediničnim dimenzijama ( one kod kojih je vektor reda ili kolone, tj. veličina (A,DIM)==l). Izuzetak su Java-ini N-dimenzionalni javaarray nizovi, koji vraćaju veličinu niza najvišeg nivoa.
Općenito, kada je veličina ulaznog argumenta javaarray, vraćeni broj stupaca je uvijek 1, a broj redova (redova) jednak je veličini (dužini) javaarray-a.
Si ze(A) vraća veličinu prvih N dimenzija niza A;
D = veličina (A), za mxn matricu A vraća vektor reda od dva elementa u kojem je prva komponenta broj redova m, a druga komponenta broj kolona n;
Veličina(A) vraća broj redova i stupaca u različitim tipovima izlaza (izlazni argumenti u MATLAB terminologiji).
Permutacije dimenzija niza
Ako zamislimo višedimenzionalni niz u obliku stranica, onda je njihova permutacija permutacija dimenzija niza. Za dvodimenzionalni niz, permutacija često znači transpozicija- zamjena redova kolonama i obrnuto. Sljedeće funkcije generaliziraju transpoziciju matrice na slučaj višedimenzionalnih nizova i obezbjeđuju permutaciju dimenzija višedimenzionalnih nizova:
Permute (A, ORDER) - preuređuje dimenzije niza A redoslijedom koji je određen permutacijskim vektorom ORDER. Vektor ORDER je jedna od mogućih permutacija svih cijelih brojeva od 1 do N, Gdje N- dimenzija niza A;
ipermuteCA, ORDER) - inverzna operacija permute: permute(permute(A. ORDER), ORDER)=A
Slijede primjeri korištenja ovih funkcija i funkcije veličine:
"A=:
"B=;
» C=;
» D=mačka(3.A,B.C)
D(:,:,l) =
9 10
11 12
"veličina (D)
Ans =
2 2 3
» veličina (permute(D.))
ans=
3 2 2
»veličina(ipermute(D.))
Ans=
2 2 3
» ipermute(permute(D,),)
Ans(:. :,2) =
ans(:.:,3) =
9 10
11 12
Pomak dimenzija niza
Pomicanje dimenzija implementirano je funkcijom shiftdim:
B=shiftdim(X,N) - pomeranje dimenzija u nizu X za iznos N. Ako je M>0, onda se pomeranje dimenzija koje se nalaze na desnoj strani vrši ulevo, a N dimenzija prve na levoj strani su skupljeno do kraja niza, tj. dimenzije se kreću u krug u smjeru suprotnom od kazaljke na satu. Ako je M<0, сдвиг выполняется вправо, причем N первых размерностей, сдвинутых вправо, замещаются единичными размерностями;
Shiftdim(X) - Vraća niz B sa istim brojem elemenata kao niz X, ali sa uklonjenim početnim dimenzijama jedinice. Izlazni parametar NSHIFTS pokazuje broj uklonjenih dimenzija. Ako je X skalar, funkcija ne mijenja X, B, NSHIFTS.
Sljedeći primjer ilustrira upotrebu funkcije shiftdim:
» A=randn(1.2.3,4):
" =shiftdim(A)
B(:.:.l) =
2.1707-1.01060.5077
0.05920.6145 1.6924
B(:.:,2) =
0.5913 0.3803 -0.0195
0.6436-1.0091-0.0482
B(:.:.3) =
0.0000 1.0950 0.4282
0.3179-1.87400.8956
B(:.:,4) =
0.7310 0.0403 0.5689
0.5779 0.6771 -0.2556
Uklanjanje dimenzija jedinice
Funkcija squeeze(A) vraća niz sa uklonjenim svim dimenzijama jedinica. Dimenzija u kojoj je veličina (A. dim) == 1 naziva se jedinica. Ali ako
A je jednodimenzionalni ili dvodimenzionalni niz (matrica ili vektor), tada će funkcija vratiti isti niz A. Sljedeći primjer objašnjava kako squeeze funkcionira:
» A=randn(1.2.1.3.1):
"B=stisnuti (A)
0.6145 1.6924 -0.6436
0.5077 0.5913 0.3803
Obratite pažnju da petodimenzionalni niz A postaje 2-dimenzionalni niz veličine 2x3.
Šta smo novo naučili?
U ovoj lekciji naučili smo:
Kreirajte višedimenzionalne nizove.
Koristite operator ":" u višedimenzionalnim nizovima.
Pristup pojedinačnim elementima višedimenzionalnih nizova.
Uklonite dimenzije iz višedimenzionalnog niza.
Kreirajte nizove ispunjene konstantama i slučajnim brojevima.
Spojite nizove.
Izračunajte broj dimenzija niza i odredite veličinu svake dimenzije.
Preuredite, pomaknite i obrišite dimenzije jedinica u višedimenzionalnim nizovima.