Nizovi različitih dimenzija matlab. Numerički nizovi. Izračunavanje broja dimenzija niza

Nizovi različitih dimenzija matlab.  Numerički nizovi.  Izračunavanje broja dimenzija niza
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žene

kompleksna 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.