Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

Udhëzues për fillestarët e MatLab. Matlab shkurt për anglisht

Mësoni rreth ndërlikimeve të punës në MATLAB.

  • Operatori pikëpresje: Nëse një komandë përfundon me ";", atëherë rezultati i këtij operacioni nuk do të shfaqet në ekran. Kjo është e qartë kur ka një përkufizim të vogël, për shembull, y = 1. Problemi lind kur është e nevojshme të krijohet një matricë me dimensione të mëdha. Shenja ";" nuk nevojitet kur dalja është e nevojshme për përdoruesin, për shembull, kur punoni me grafikë.
  • Komanda e pastrimit: Ka disa komanda të dobishme që mund të thirren nga dritarja e komandës. Shkruani "clear" pas shenjës ">>". Kjo do të pastrojë të gjitha variablat aktuale, të cilat mund të ndihmojnë nëse haset një rezultat i çuditshëm. Ju gjithashtu mund të shkruani "e qartë" dhe emrin e ndryshores për të pastruar vlerën e një ndryshoreje të caktuar.
  • Llojet e variablave: Lloji i vetëm i ndryshores në MATLAB është një grup. Kjo do të thotë që variablat janë rregulluar si një listë vlerash. Lista më themelore e vlerave është një numër. Në rastin e MATLAB, nuk keni nevojë të specifikoni madhësinë e grupit kur krijoni një ndryshore. Për t'i caktuar një numër të vetëm një ndryshoreje, shkruani, për shembull, z = 1. Nëse dëshironi të shtoni një vlerë për z, thjesht shkruani z = 3. Ju mund t'i referoheni çdo vlere në grup duke shkruar z [i], ku i është numri i pozicionit në grup. Pra, nëse duhet të merrni vlerën 3 nga z, atëherë thjesht duhet të shkruani z.
  • "Sythe": Sythet përdoren kur një veprim duhet të kryhet disa herë. Ekzistojnë 2 lloje sythe në MATLAB: cikli for dhe cikli while. Të dy konstruktet janë të këmbyeshëm, megjithatë, është më e lehtë të krijosh një lak të pafund me konstruktin "while" sesa "for". Një shenjë e një cikli të pafund është që vetëm të dhënat që janë brenda ciklit dërgohen në dalje.
  • "Për sythe": për sythe në MATLAB duken si: "për i = 1: n / bëj veprime / fund" (një vijë e prapme do të thotë një rresht i ri). Ky cikël do të thotë "bëni veprimin" n herë. Pra, nëse cikli thotë "print Hello", dhe numri i interpretimeve është 5, atëherë "Hello" do të printohet 5 herë.
  • "While loops": në MATLAB duken si: "ndërsa shprehja është e vërtetë / bëj veprime / përfundon". Kjo do të thotë që veprimi kryhet për aq kohë sa shprehja është e vërtetë. Zakonisht, trupi i lakut përmban një deklaratë që ndryshon vlerën e shprehjes boolean në "false". Për të bërë një lak while nga një cikli for, duhet të shkruani "ndërsa i<=n / do действия / end".
  • Sythet e mbivendosur: Një lak i ndërthurur nëse është brenda një cikli tjetër. Duket kështu: "për i = 1: 5 / për j = 1: 5 / bëj veprime / fund / fund". Veprimi në numëruesin j do të kryhet pesë herë, pastaj vlera e i do të rritet me një, përsëri veprimi në numëruesin j do të kryhet 5 herë, e kështu me radhë.
  • Për më shumë informacion mbi çdo pjesë të këtij artikulli, ose MATLAB në përgjithësi, vizitoni

Deklarata e kushtëzuar nëse

Në rastin më të thjeshtë, sintaksa për këtë deklaratë if është:

nëse<выражение>
<операторы>
fund

Unë tërheq vëmendjen tuaj për faktin se, ndryshe nga gjuhët moderne të programimit, një koncept i tillë si operator i përbërë nuk përdoret. Blloku i operatorit të kushtëzuar duhet të përfundojë me fjalën e shërbimit fund.

Më poshtë është një shembull i zbatimit të funksionit të shenjës (), i cili kthen +1 nëse numri është më i madh se zero, -1 nëse numri është më i vogël se zero dhe 0 nëse numri është zero:

x = 5;
nëse x> 0
disp (1);
fund
nëse x< 0
disp (-1);
fund
nëse x == 0
disp (0);
fund

Analiza e shembullit të dhënë tregon se të tre këto kushte përjashtojnë njëra-tjetrën, d.m.th. kur njëra prej tyre nxitet, nuk ka nevojë të kontrolloni të tjerët. Zbatimi i një logjike të tillë do të rrisë shpejtësinë e ekzekutimit të programit. Kjo mund të arrihet duke përdorur konstruksionin

nëse<выражение>
<операторы1>% plotësohen nëse kushti është i vërtetë
tjetër
<операторы2>% plotësohen nëse kushti është i rremë
fund

Atëherë shembulli i mësipërm mund të shkruhet kështu:

X = 5;
nëse x> 0
disp (1);
tjetër
nëse x< 0
disp (-1);
tjetër
disp (0);
fund
fund

Ky program së pari kontrollon pozitivitetin e ndryshores x dhe nëse po, atëherë në ekran shfaqet vlera 1 dhe të gjitha kushtet e tjera shpërfillen. Nëse kushti i parë rezulton i gabuar, atëherë ekzekutimi i programit vazhdon me tjetër (ndryshe) në kushtin e dytë, ku ndryshorja x testohet për negativitet, dhe nëse kushti është i vërtetë, vlera -1 shfaqet në ekrani. Nëse të dyja kushtet janë false, atëherë shfaqet vlera 0.

Shembulli i mësipërm mund të shkruhet në një formë më të thjeshtë duke përdorur një ndërtim tjetër të operatorit if të gjuhës MatLab:

nëse<выражение1>
<операторы1>% ekzekutohen nëse shprehja 1 është e vërtetë
tjeter nese<выражение2>
<операторы2>% ekzekutohen nëse shprehja 2 është e vërtetë
...
tjeter nese<выражениеN>
<операторыN>% ekzekutohen nëse shprehja N është e vërtetë
fund

dhe shkruhet si më poshtë:

x = 5;
nëse x> 0
disp (1); % ekzekutohet nëse x> 0
otherif x< 0
disp (-1); % ekzekutohet nëse x< 0
tjetër
disp (0); % ekzekutohet nëse x = 0
fund

Me deklaratën e kushtëzuar if, mund të testoni për kushte më komplekse (të përbëra). Për shembull, duhet të përcaktoni: a bie ndryshorja x brenda intervalit të vlerave nga 0 në 2? Kjo mund të zbatohet duke kontrolluar njëkohësisht dy kushte: x> = 0 dhe x<=2. Если эти оба условия истинны, то x попадает в диапазон от 0 до 2.

Për të zbatuar kushtet e përbëra në MatLab, përdoren operatorë logjikë:

& - logjike DHE
| - logjik OSE
~ - logjike JO

Le të shohim një shembull të përdorimit të kushteve të përbëra. Supozoni se kërkohet të kontrollohet nëse ndryshorja x është në intervalin nga 0 në 2. Programi do të shkruhet si më poshtë:

x = 1;
nëse x> = 0 & x<= 2
tjetër
fund

Në shembullin e dytë, ne do të kontrollojmë që ndryshorja x nuk i përket diapazonit nga 0 në 2. Kjo arrihet duke shkaktuar një nga dy kushtet: x< 0 или x > 2:

x = 1;
nëse x< 0 | x > 2
disp ("x nuk i përket diapazonit nga 0 në 2");
tjetër
disp ("x i përket diapazonit 0 deri në 2");
fund

Duke përdorur operatorët logjikë DHE, OSE, JO, ju mund të krijoni një sërë kushtesh komplekse. Për shembull, mund të kontrolloni që ndryshorja x bie në intervalin nga -5 në 5, por nuk i përket diapazonit nga 0 në 1. Natyrisht, kjo mund të zbatohet si më poshtë:

x = 1;
nëse (x> = -5 & x<= 5) & (x < 0 | x > 1)
disp ("x i përket [-5, 5] por nuk përfshihet në");
tjetër
disp ("x ose nuk përfshihet në [-5, 5] ose në");
fund

Vini re se kllapat janë përdorur në gjendjen komplekse të përbërjes. Fakti është se përparësia e operacionit AND është më e lartë se përparësia e operacionit OR, dhe nëse nuk do të kishte kllapa, kushti do të dukej kështu: (x> = -5 dhe x<= 5 и x < 0) или x >1. Është e qartë se një kontroll i tillë do të jepte një rezultat të ndryshëm nga ai i pritur.

Kllapat përdoren në programim për të ndryshuar përparësinë e pohimeve. Ashtu si operatorët aritmetikë, edhe operatorët logjikë mund të ndryshohen sipas dëshirës së programuesit. Duke përdorur kllapa, kontrolli kryhet fillimisht brenda tyre, e më pas jashtë tyre. Kjo është arsyeja pse, në shembullin e mësipërm, atyre u kërkohet të arrijnë rezultatin e dëshiruar.

Prioriteti i operacioneve logjike është si më poshtë:

NOT (~) është prioriteti më i lartë;
Dhe (&) - prioritet i mesëm;
OSE (|) është prioriteti më i ulët.

Ndërsa deklarata e ciklit

Gjuha e programimit MatLab ka dy operatorë loop: while dhe for. Me ndihmën e tyre, për shembull, kryhet programimi i algoritmeve të përsëritura, llogaritja e shumës së një serie, përsëritja mbi elementët e grupit dhe shumë më tepër.

Në rastin më të thjeshtë, një lak në një program organizohet duke përdorur një deklaratë while, e cila ka sintaksën e mëposhtme:

derisa<условие>
<операторы>
fund

Këtu<условие>do të thotë një shprehje e kushtëzuar si ajo e përdorur në deklaratën if, dhe cikli while funksionon për aq kohë sa kushti është i vërtetë.

Duhet të theksohet se nëse kushti është false përpara fillimit të ekzekutimit të ciklit, atëherë deklaratat e përfshira në cikli nuk do të ekzekutohen as edhe një herë.

Këtu është një shembull se si funksionon cikli while për të llogaritur shumën e një serie:


i = 1; % shuma e numëruesit
nderkohe une<= 20 % цикл (работает пока i <= 20)

fund% fundi i ciklit
disp (S); % shfaqja e shumës 210 në ekran

Tani le të komplikojmë detyrën dhe të llogarisim shumën e serisë, tani për tani. Këtu, në operatorin e ciklit, fitohen dy kushte: ose numëruesi i arrin 20, ose vlera e shumës S do të kalojë 20. Kjo logjikë mund të zbatohet duke përdorur një shprehje të kushtëzuar të përbërë në operatorin e ciklit while:

S = 0; % vlera fillestare e shumës
i = 1; % shuma e numëruesit
nderkohe une<= 20 & S <= 20 % цикл (работает пока i<=10 и S<=20
S = S + i; % llogaritet shuma
i = i + 1; % numëruesi rritet me 1
fund% fundi i ciklit

Shembulli i dhënë tregon mundësinë e përdorimit të kushteve të përbëra në një cikli while. Në përgjithësi, të njëjtat kushte mund të shkruhen si një shprehje e kushtëzuar si në një deklaratë të kushtëzuar if.

Puna e çdo operatori loop, duke përfshirë while, mund të ndërpritet me forcë duke përdorur deklaratën break. Për shembull, programi i mëparshëm mund të rishkruhet si më poshtë duke përdorur deklaratën break:

S = 0; % vlera fillestare e shumës
i = 1; % shuma e numëruesit
nderkohe une<= 20 % цикл (работает пока i<=10
S = S + i; % llogaritet shuma
i = i + 1; % numëruesi rritet me 1
nëse S> 20% nëse S> 20,
pushim; % atëherë përfundon cikli
fund
fund% fundi i ciklit
disp (S); % shfaqja e shumës së 21 në ekran

Në këtë shembull, kushti i dytë për fundin e ciklit, kur S është më i madh se 20, shkruhet në vetë ciklin dhe duke përdorur deklaratën break, cikli del në funksionin disp () menjëherë pas ciklit while.

Operatori i kontrollit të ekzekutimit të ciklit të dytë vazhdim ju lejon të kapërceni ekzekutimin e fragmentit të programit pas tij. Për shembull, ju dëshironi të llogaritni shumën e elementeve të një grupi

a =;

duke përjashtuar elementin me indeks 5. Një program i tillë mund të shkruhet si më poshtë:

S = 0; % vlera fillestare e shumës
a =; % varg
i = 0; numëruesi i indeksit të grupit %
nderkohe une< length(a) % цикл (работает пока i меньше
% e gjatësisë së vargut a)
i = i + 1; % rrit numëruesin e indeksit me 1
nëse i == 5% nëse indeksi është 5
vazhdo; % atëherë nuk e llogarisim
fund
S = S + a (i); % numërohet shuma e elementeve
fund% fundi i ciklit
disp (S); % shfaqja e shumës 40 në ekran

Duhet theksuar se në këtë program indeksi i grupit i rritet para se të kontrollohet kushti. Kjo bëhet në mënyrë që vlera e indeksit të rritet me 1 në çdo përsëritje të ciklit. Nëse rritja e numëruesit i shkruhet si në shembujt e mëparshëm, d.m.th. pas llogaritjes së shumës, atëherë për shkak të deklaratës vazhdim, vlera e tij do të ndalonte në 5 dhe cikli while do të funksiononte "përgjithmonë".

Për operatorin e ciklit

Shpesh, kur organizohet një lak, kërkohet të përsëritet mbi vlerën e kundërt në një gamë të caktuar vlerash dhe me një hap të caktuar ndryshimi. Për shembull, për të përsëritur mbi elementet e një vektori (vargu), duhet të organizoni një numërues nga 1 në N me një hap 1, ku N është numri i elementeve në vektor. Për të llogaritur shumën e serisë, një numërues nga a në b vendoset gjithashtu me hapin e kërkuar. etj. Për faktin se detyra të tilla hasen shpesh në praktikën programuese, për zbatimin e tyre u propozua operatori for loop, i cili e bën më të lehtë dhe më vizual zbatimin e një cikli me numërues.

Sintaksa e deklaratës for loop është si më poshtë:

për<счетчик> = <начальное значение>:<шаг>:<конечное значение>
<операторы цикла>
fund

Le të shqyrtojmë funksionimin e këtij cikli duke përdorur shembullin e zbatimit të algoritmit për gjetjen e vlerës maksimale të një elementi në një vektor:

a =;
m = a (1); % vlera maksimale aktuale
për i = 1: gjatësia (a)% cikli nga 1 deri në fund të vektorit me
% në hapat e 1 (parazgjedhja)
nëse m< a(i) % если a(i) >m,
m = a (i); % pastaj m = a (i)
fund
fund% fundi i ciklit for
disp (m);

Në këtë shembull, cikli for vendos numëruesin i dhe ndryshon vlerën e tij nga 1 në 10 në rritje prej 1. Vini re se nëse madhësia e hapit nuk është e specifikuar në mënyrë eksplicite, ajo do të jetë si parazgjedhje në 1.

Në shembullin tjetër, merrni parasysh zbatimin e algoritmit për zhvendosjen e elementeve të një vektori në të djathtë, d.m.th. elementi i parafundit vihet në vend të të fundit, tjetri - në vend të parafundit etj. deri në elementin e parë:

a =;
disp (a);
për i = gjatësia (a): - 1: 2% lak nga 10 në 2 në rritje prej -1
a (i) = a (i-1); % zhvendosja e elementeve të vektorit a
fund% fundi i ciklit for
disp (a);

Rezultati i programit

3 6 5 3 6 9 5 3 1 0
3 3 6 5 3 6 9 5 3 1

Shembulli i mësipërm tregon se për të zbatuar një lak me një numërues nga një vlerë më e lartë në një më të ulët, duhet të specifikoni në mënyrë eksplicite hapin, në këtë rast, -1. Nëse kjo nuk është bërë, atëherë cikli do të përfundojë menjëherë punën e tij dhe programi nuk do të funksionojë siç duhet.

Zgjidhjet e ekuacioneve


Faqja © 2015-2019
Të gjitha të drejtat u përkasin autorëve të tyre. Kjo faqe nuk pretendon autorësinë, por ofron përdorim falas.
Data e krijimit të faqes: 12-12-2017

3.4. Operatorët e sistemit MATLAB 5. Kombinimi i operatorëve në shprehje aritmetike. Funksionet e integruara

Operatorët e sistemit MATLAB ndahen në tre kategori:

  • Operatorët aritmetikë ju lejojnë të ndërtoni shprehje aritmetike dhe të kryeni llogaritjet numerike.
  • Operatorët relacionalë ju lejojnë të krahasoni operandët numerikë.
  • Operatorët logjikë ju lejojnë të ndërtoni shprehje logjike.

Operatorët logjikë kanë përparësinë më të ulët ndaj operatorëve relacionalë dhe aritmetikë.

Operatorët aritmetikë. Kur punoni me një grup numrash, nivelet e mëposhtme të përparësisë përcaktohen midis veprimeve aritmetike:

niveli 1: transpozimi sipas elementit (. "), fuqizimi sipas elementit (. ^), transpozimi i matricës së konjuguar hermitian ("), fuqizimi i matricës (^);
niveli 2: mbledhje unare (+), zbritje unare (-);
niveli 3: shumimi i vargjeve (. *), ndarja djathtas (./), ndarja majtas e vargjeve (. \), shumëzimi matricor (*), zgjidhja e sistemeve të ekuacioneve lineare - operacioni (/), operacioni (\);
niveli 4: mbledhje (+), zbritje (-);
niveli 5: Operatori i formimit të vargjeve (:).

Brenda çdo niveli, operatorët kanë përparësi të barabartë dhe vlerësohen në rend nga e majta në të djathtë. Rendi i paracaktuar mund të ndryshohet duke përdorur kllapa.

Shembull

Le të jepen 2 vektorë

A =;
B =;

Rezultatet e operatorit

C = A./B. ^ 2
C = 0,7500 9,0000 0,2000
C = (A./B). ^ 2
C = 2.2500 81.0000 1.0000
krejtësisht të ndryshme.

Operatorët aritmetikë lejojnë përdorimin e shprehjeve të indeksit:

b = sqrt (A (2)) + 2 * B (1)
b = 7

Operatorët aritmetikë të sistemit MATLAB punojnë, si rregull, me vargje me të njëjtën madhësi. Për vektorët dhe vargjet drejtkëndore, të dy operandët duhet të jenë të njëjtën madhësi, përveç nëse njëri prej tyre është skalar. Nëse njëri nga operandët është skalar dhe tjetri jo, MATLAB supozon se skalari zgjerohet në madhësinë e operandit të dytë dhe operacioni i specifikuar zbatohet për secilin element. Ky operacion quhet zgjerim skalar.

Operatorët relacionalë... MATLAB përcakton 6 operatorët relacionalë të mëposhtëm:

  • < Меньше
  • <= Меньше или равно
  • > Më shumë
  • > = Më e madhe ose e barabartë
  • == E barabartë me identitetin
  • ~ = Jo i barabartë

Operatorët e marrëdhënieve kryejnë një krahasim sipas elementeve të dy vargjeve me dimensione të barabarta. Për vektorët dhe vargjet drejtkëndore, të dy operandët duhet të jenë të njëjtën madhësi, përveç nëse njëri prej tyre është skalar. Në këtë rast, MATLAB krahason skalarin me secilin element të operandit tjetër. Pozicionet ku kjo marrëdhënie është e vërtetë marrin një vlerë prej 1, ku false - 0.

Operatorët relacionalë zakonisht përdoren për të ndryshuar sekuencën e ekzekutimit të deklaratave të programit. Prandaj, ato përdoren më shpesh në trupin e deklaratave if, for, while, switch.

Operatorët relacionalë ekzekutohen gjithmonë në mënyrë elementare.

Shembull.

Le të krahasojmë dy vargjet duke përdorur kushtin A

A =;
B =;
A< B

ans =

1 0 0
0 1 1
1 0 1

Matrica që rezulton tregon pozicionet ku elementi A është më i vogël se elementi përkatës B.

Gjatë vlerësimit të shprehjeve aritmetike, operatorët relacionalë kanë një përparësi më të ulët se aritmetike, por më të lartë se operatorët logjikë.

Operatorët e marrëdhënieve mund të aplikohen në vargje shumëdimensionale për të cilët njëri nga dimensionet është zero, me kusht që të dy vargjet të jenë të njëjtën madhësi ose njëri prej tyre të jetë skalar. Megjithatë, shprehjet si A == zbatohen vetëm për vargje me madhësi 0x0 ose 1x1, dhe përndryshe hedhin një gabim.

Prandaj, mënyra më e gjithanshme për të kontrolluar nëse një grup është bosh është përdorimi i funksionit isempty (A).

Operatorët logjikë... Operatorët logjikë të sistemit MATLAB përfshijnë operatorët e mëposhtëm:

& DHE
| OSE
~ NR

Përveç këtyre operatorëve, direktoria bitfun përmban një numër funksionesh që kryejnë operacione logjike bit.

Operatorët logjikë zbatojnë krahasimin sipas elementeve të vargjeve me të njëjtat dimensione. Për vektorët dhe vargjet drejtkëndore, të dy operandët duhet të kenë të njëjtën madhësi, përveç nëse njëri prej tyre është skalar. Në rastin e fundit, MATLAB krahason skalarin me secilin element të operandit tjetër. Pozicionet ku kjo marrëdhënie është e vërtetë marrin një vlerë prej 1, ku false - 0.

Çdo operator logjik korrespondon me një grup të caktuar kushtesh që përcaktojnë rezultatin e një shprehjeje logjike:

  • Një shprehje logjike me operatorin AND (&) vlerësohet si e vërtetë nëse të dy operandët janë të vërtetë. Nëse elementet e një shprehjeje logjike janë numra, atëherë shprehja është e vërtetë nëse të dy operandët janë jozero.

Shembull
Le të jepen dy vektorë numerikë:
u =;
v =
;
dhe një shprehje boolean me operatorin AND (&):
U & v
ans =

1 0 1 0 0 1
  • Një shprehje logjike me operatorin OR (|) vlerësohet si e vërtetë nëse një ose të dy operandët janë logjikë. Shprehja është false vetëm nëse të dy operandët janë logjikisht false.
    Nëse elementet e shprehjes logjike janë numra, atëherë shprehja është false nëse të dy operandët janë zero.

Shembull
Ne përdorim vektorët u dhe v të përcaktuar më sipër dhe ekzekutojmë një shprehje boolean me operatorin OR (|):
U | v
ans =

1 1 1 1 0 1
  • Një shprehje Boolean me operatorin NOT (~) ndërton një mohim. Rezultati është logjikisht i gabuar nëse operandi është i vërtetë dhe i vërtetë nëse operandi është i gabuar. Nëse elementet e një shprehjeje logjike janë numra, atëherë çdo operand jozero bëhet zero dhe çdo operand zero bëhet një.

Shembull
Ne përdorim vektorin u të dhënë më sipër dhe ndërtojmë një shprehje logjike me operatorin NOT (~):
~ ju
ans =

0 1 0 0 1 0

Funksionet logjike... Përveç operatorëve logjikë, në sistemin MATLAB përfshihen një sërë funksionesh logjike:

  • Funksioni xor (a, b) zbaton operacionin EKSKLUZIVE OSE. Një shprehje EKSKLUZIVE OSE është e vërtetë nëse njëri nga operandët është TRUE dhe tjetri është FALSE. Për shprehjet numerike, funksioni kthen 1 nëse njëri prej operandëve është jozero dhe tjetri është zero.

Shembull
Konsideroni dy operandë numerikë a dhe b:
a = 1;
b = 1;
Pastaj operacioni xor jep rezultatin:
Xor (a, b)
ans = 0

  • Funksioni all kthen 1 nëse të gjithë elementët e vektorit janë të vërtetë ose jo zero.

Shembull
Le të jepet një vektor u dhe kërkohet të kontrollohet për kushtin "a janë të gjithë elementët më pak se 3?" Nëse plotësohet ky kusht, atëherë shfaqet mesazhi "Të gjithë elementët janë më pak se 3".

u =;
nëse të gjithë (u< 3)
Disp ("Të gjithë artikujt janë më pak se 3")
fund

Në këtë rast, nuk do të shfaqet asnjë mesazh, por nëse si vektor u marrim vektorin

u =

atëherë do të shfaqet një mesazh

ans = "Të gjithë elementët janë më pak se 3"

Në rastin e vargjeve, funksioni all kontrollon për kolona, ​​domethënë është i orientuar nga kolona.

Shembull

A =
të gjitha (A)

  • Funksioni any kthen 1 nëse të paktën një nga elementët e argumentit është jozero; përndryshe, kthehet 0. Në rastin e përpunimit të vargjeve, çdo funksion është i orientuar nga kolona.
  • Funksionet isnan dhe isinf kthejnë 1 për NaN dhe Inf, përkatësisht. Isfinite është e vërtetë vetëm për vlerat që nuk kanë vlera inf ose NaN.

Shembull
Konsideroni dy dy vargje numerike A dhe B
A =;
B =
;
Le të formojmë një grup C dhe të përdorim funksionet e mësipërme
C = A./B
C =

NaN Inf 0.3333
1.0000 NaN NaN
është e kufizuar (C) isnan (C) isinf (C)
ans =
0 0 1
1 0 0
ans =
1 0 0
0 1 1
ans =
0 1 0
0 0 0

Një listë e plotë e funksioneve logjike të sistemit MATLAB gjendet në drejtorinë ops.

Gjeni funksionin... Funksioni find përcakton indekset e elementeve të grupit që plotësojnë një kusht të caktuar boolean. Në mënyrë tipike, përdoret për të krijuar shabllone për krahasim dhe për të krijuar vargje indeksesh. Në formën e tij më të zakonshme, funksioni k = gjeni (x<условие>) kthen një vektor të indekseve të atyre elementeve që plotësojnë një kusht të caktuar.

A = magji (4)
A =

16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1

k = gjeni (A> 8);
A (k) = 100

A =

100 2 3 100
5 100 100 8
100 7 6 100
4 100 100 1

Një funksion si = gjeni (x) ju lejon të merrni indekset e elementeve jozero të një grupi drejtkëndor. Një funksion i formës = gjeni (x) gjithashtu kthen vlerat e tyre si një vektor s.

Kombinimi i operatorëve në shprehje aritmetike.

Tani mund të ndërtoni shprehje që përdorin çdo kombinim të operatorëve aritmetikë, logjikë dhe relacionalë.

Shembull
Konsideroni një shembull të një operatori krahasimi që krahason rezultatet e dy shprehjeve

(a * b)< (c*d)

Duke përdorur kllapa, mund të kontrolloni sekuencën e operacioneve

(A & B) == (C | D)

Kontrolli i sekuencës së ekzekutimit të deklaratave. Ekzistojnë katër operatorë kryesorë për kontrollin e sekuencës së ekzekutimit të udhëzimeve:

  • deklarata e kushtit if, në kombinim me deklaratat else dhe elseif, ekzekuton një grup deklaratash në përputhje me disa kushte logjike;
  • operatori switch, në kombinim me operatorët case dhe ndryshe, ekzekuton grupe të ndryshme instruksionesh në varësi të vlerës së ndonjë kushti logjik;
  • deklarata e kushtit while ekzekuton një grup instruksionesh një numër të pacaktuar herë, në përputhje me disa kushte logjike të përfundimit;
  • cikli for ekzekuton një grup deklaratash një numër të caktuar herë. Të gjitha deklaratat e kontrollit përfshijnë një deklaratë fundi për të treguar fundin e bllokut në të cilin deklarata e kontrollit është në fuqi.

Sintaksë:

Përshkrim:

Deklarata e kushtit if .... end vlerëson disa shprehje logjike dhe ekzekuton grupin përkatës të pohimeve në varësi të vlerës së kësaj shprehjeje. Nëse shprehja boolean është e vërtetë, atëherë MATLAB do të ekzekutojë të gjitha deklaratat midis if dhe end, dhe më pas do të vazhdojë ekzekutimin e programit në rreshtin pas përfundimit. Nëse kushti është i rremë, atëherë MATLAB i kalon të gjitha deklaratat midis if dhe end dhe vazhdon në rreshtin pas përfundimit.

Shembull.

nëse rem (a, 2) == 0
disp ("a është çift")
b = a / 2;
fund

Nëse kushti boolean përfshin një variabël që nuk është skalar, atëherë pohimi do të jetë i vërtetë nëse të gjithë elementët janë jozero.

Shembull.
Le të jepet matrica X; shkruani deklaratën e mëposhtme të kushtit:

nëse X
udhëzimet
fund

Ky operator është i barabartë me sa vijon:

nëse të gjitha (X (:))
udhëzimet
fund

Deklaratat if ... else ... fund dhe if ... elseif ... fundore krijojnë degë shtesë brenda trupit të deklaratës if:

  • Deklarata else nuk përmban një kusht boolean. Deklaratat e lidhura me të ekzekutohen nëse deklarata e mëparshme if (dhe ndoshta elseif) janë false. Deklarata elseif përmban një kusht boolean që vlerësohet nëse deklarata e mëparshme if (dhe ndoshta elseif) janë false. Deklaratat e lidhura me deklaratën elseif ekzekutohen nëse kushti përkatës boolean është i vërtetë.
  • Deklarata elseif mund të ripërdoret brenda një deklarate të kushtit if.

Shembull.
Le të hedhim një vështrim në fragmentin e programit:

nëse n< 0 % Если n < 0, вывести сообщение об ошибке.
disp ("Numri i futur duhet të jetë pozitiv");
elseif rem (n, 2) == 0% Nëse n është pozitive dhe çift, pjesëtojeni me 2.
a = n / 2;
tjetër
a = (n + 1) / 2; % Nëse n> 0 dhe tek, rriteni me 1 dhe pjesëtoni.
fund

Nëse shprehja e kushtëzuar në deklaratën if është një grup bosh, atëherë ky kusht është i gabuar. Kjo do të thotë, një operator kushti i formularit

nese nje
S1
tjetër
S0
fund

do të ekzekutojë instruksionet S0 vetëm kur A është një grup bosh.

Sintaksë:

kaloni<shprehje>
% shprehja është domosdoshmërisht një skalar ose varg

rast<vlera1>
udhëzimet
% ekzekutohen nëse< выражение> =< значение1>

rast <значение2>
udhëzimet
% ekzekutohen nëse<выражение> = < значение2>

...
ndryshe
udhëzimet
% ekzekutohen nëse<выражение>nuk përputhej me asnjë
% vlera

fund

Deklarata switch ... rasti 1 ... rasti k ... përndryshe ... fundi kryen degë, në varësi të vlerave të disa ndryshoreve ose shprehjeve.

Deklarata switch përfshin:

  • Një titull ndërprerës i ndjekur nga një shprehje e vlerësuar (skalar ose varg).
  • Një numër arbitrar i grupeve të rasteve; Titujt e grupeve përbëhen nga fjala rast e ndjekur nga kuptimi i mundshëm i shprehjes në një rresht. Rreshtat pasues përmbajnë udhëzime që ekzekutohen për vlerën e dhënë të shprehjes. Ekzekutimi vazhdon derisa të ndeshet deklarata e rastit tjetër ose ndryshe deklarata. Kjo përfundon ekzekutimin e bllokut të ndërprerësit.
  • Përndryshe grupi. Kreu përfshin vetëm fjalën ndryshe, duke filluar me rreshtin tjetër janë udhëzimet që ekzekutohen nëse vlera e shprehjes nuk është përpunuar nga asnjë nga grupet e rasteve. Ekzekutimi përfundon me një deklaratë fundi.
  • Deklarata përfundimtare është e fundit në bllokun e ndërprerësit.

Deklarata switch funksionon duke krahasuar vlerën e shprehjes së vlerësuar me vlerat e grupeve të rasteve. Për shprehjet numerike, deklarata e rastit ekzekutohet nëse<значение>== <выражение>... Për shprehjet e vargut, deklarata case vlerësohet në true nëse strcmp (vlera, shprehja) është e vërtetë.

Shembull.
Konsideroni një deklaratë switch me kushtet e mëposhtme: kontrollon variablin input_num; nëse input_num është -1, 0 ose 1, atëherë deklaratat e rastit shfaqin mesazhin e duhur. Nëse vlera e shprehjes input_num nuk është e barabartë me asnjërën nga këto vlera, atëherë ekzekutimi kalon në deklaratën ndryshe.

kaloni input_num
rasti -1
disp ("minus një")
rasti 0
disp ("nul")
rasti 1
disp ("plus një")
ndryshe
disp ("vlera të tjera")
fund

Një deklaratë switch mund të përdorë një kusht të shumëfishtë në një grup të vetëm rasti duke përfshirë një shprehje rasti nëse shprehja për atë kusht shkruhet si një grup qelizash:

kaloni var
rasti 1
disp ("1")
rasti (2,3,4)
disp ("2 ose 3 ose 4")
rasti 5
disp ("5")
ndryshe
disp ("diçka tjetër")
fund

Sintaksë:

derisa shprehje
udhëzimet

fund

Përshkrim:

Operatori i ciklit while ... end me një numër të pacaktuar operacionesh ekzekuton në mënyrë të përsëritur një instruksion ose një grup instruksionesh për sa kohë që shprehja e kontrollit është e vërtetë.

Nëse shprehja përdor një grup, atëherë të gjithë elementët e saj duhet të jenë të vërteta për të vazhduar ekzekutimin. Për të kthyer një matricë në një vlerë skalare, përdorni funksionet çdo dhe të gjitha.

Shembull.
Ky cikli me një numër të pacaktuar veprimesh gjen numrin e parë të plotë n për të cilin n! - shkruar si një numër që përmban 100 karaktere:

n = 1;
ndërsa prod (1: n)< 1e100
n = n + 1;
fund

Dalja nga cikli while mund të zbatohet duke përdorur deklaratën break.

Nëse në deklaratën while, kushti i kontrollit është një grup bosh, atëherë një kusht i tillë është i rremë, domethënë një deklaratë e formës ndërsa A, S1, end nuk do të ekzekutojë kurrë udhëzimet S1, nëse A është një grup bosh.

Sintaksë:

për<variabli i ciklit> =<начальное значение>: <приращение>:<конечное значение>
udhëzimet

fund

Përshkrim:

Operatori i ciklit fundor for .... ekzekuton një instruksion ose një grup instruksionesh një numër të paracaktuar herë. Si parazgjedhje, rritja është 1. Ju mund të specifikoni çdo rritje, duke përfshirë negative. Për indekset pozitive, ekzekutimi përfundon kur vlera e indeksit tejkalon<конечное значение>; për rritje negative, ekzekutimi përfundon kur indeksi bëhet më i vogël se<конечное значение>.

Shembull

Ky cikël kryhet pesë herë:
për i = 2: 6
x (i) = 2 * x (i-1);
fund

Lejohen sythe të mbivendosur të tipit:
për i = 1: m
për j = 1: n
A (i, j) = 1 / (i + j - 1);
fund
fund

Përdorimi i një vargu si variabël lak... Vargjet mund të përdoren si variabël në ciklin for.

Shembull.
Konsideroni një grup mхn A. Operatori i ciklit

për i = A
udhëzimet
fund

përcakton variablin e ciklit i si një vektor A (:, k). Për hapin e parë të lakut, k është 1; për të dytën, k është 2, dhe kështu me radhë derisa k të arrijë n. Kjo do të thotë, cikli ekzekutohet aq herë sa ka kolona në matricën A. Për çdo hap i është një vektor që përmban një nga kolonat e grupit A.

Funksionet e integruara.

Duke filluar në MATLAB 5, skedarët M mund të përmbajnë kode për më shumë se një funksion. Funksioni i parë në skedar është funksioni kryesor i quajtur me emrin e skedarit M. Funksionet e tjera brenda një skedari janë nënfunksione që janë të dukshme vetëm për funksionin kryesor dhe nënfunksione të tjera të të njëjtit skedar.

Çdo nënfunksion ka titullin e vet. Nënfunksionet ndjekin njëri-tjetrin vazhdimisht. Nënfunksionet mund të thirren në çdo mënyrë, ndërsa funksioni kryesor ekzekutohet i pari.

Nënfunksionet mesatare dhe mesatare llogaritin mesataren dhe medianën e listës hyrëse. Funksioni kryesor newsstats përcakton gjatësinë e listës dhe thërret nënfunksione që u kalojnë atyre gjatësinë e listës n. Funksionet brenda të njëjtit skedar M nuk mund të aksesojnë të njëjtat variabla nëse ato nuk deklarohen si variabla globale brenda funksioneve përkatëse, ose nuk u kalohen atyre si parametra. Vini re se ndihma mund të shohë vetëm funksionin kryesor dhe nuk sheh nënfunksione.

Kur një thirrje funksioni vjen nga një skedar M, MATLAB para së gjithash kontrollon nëse ky funksion është një nënfunksion. Meqenëse prania e nënfunksioneve kontrollohet së pari, mund të përdorni emrat e funksioneve të sistemit MATLAB si emër të nënfunksionit.

Drejtoritë private... Ato janë futur në MATLAB që nga versioni 5.0. Drejtoritë private janë një nëndrejtori e emërtuar private e drejtorisë mëmë. Skedarët M të drejtorisë private janë të aksesueshme vetëm për skedarët M të drejtorisë prindërore. Meqenëse skedarët në drejtorinë private nuk janë të dukshëm jashtë drejtorisë mëmë, ato mund të kenë të njëjtat emra si skedarët në drejtoritë e tjera në sistemin MATLAB. Kjo është e dobishme në rastet kur përdoruesi krijon versionet e tij të një funksioni duke e ruajtur origjinalin në një drejtori tjetër. Për shkak se MATLAB kërkon direktoriumin privat përpara drejtorive të funksioneve standarde MATLAB, ai fillimisht gjen funksionin nga direktoria private.

Puna laboratorike nr.6

Qëllimi i mësimit: familjarizohuni me operatorët e kushtëzuar dhe të ciklit, fitoni aftësi në përdorimin e tyre në llogaritjet ciklike dhe të degëzuara.

Operatorët e kushtëzuar dhe sythe në MatLab

Një hap i rëndësishëm në krijimin e programeve të plota në MatLab është studimi i operatorëve të degëzimit dhe ciklit. Me ndihmën e tyre, ju mund të zbatoni logjikën e ekzekutimit të algoritmeve matematikore dhe të krijoni llogaritje të përsëritura (përsëritëse, të përsëritura).

Deklarata e kushtëzuar nëse

Për të qenë në gjendje të zbatohet logjika në program, përdoren operatorë të kushtëzuar. Konceptualisht, këta operatorë mund të përfaqësohen si pika nodale, deri në të cilat programi bën zgjedhjen në cilin nga drejtimet e mundshme për të ecur përpara. Për shembull, duhet të përcaktoni nëse një variabël arg përmban një numër pozitiv ose negativ dhe të shfaqni mesazhin përkatës në ekran. Për ta bërë këtë, mund të përdorni deklaratën if (nëse), e cila kryen kontrolle të ngjashme.

Në rastin më të thjeshtë, sintaksa për këtë deklaratë if është:

nëse<выражение>

<операторы>

Nëse vlera e parametrit "shprehje" përputhet me vlerën "true", atëherë deklarata ekzekutohet, përndryshe ai anashkalohet nga programi. Duhet të theksohet se "shprehja" është një shprehje e kushtëzuar në të cilën kontrollohet një kusht. Tabela 2.1 paraqet variante të shprehjeve të thjeshta logjike të pohimit if.

Tabela 1. Shprehje të thjeshta Boolean

E vërtetë nëse a është më e vogël se b dhe e gabuar ndryshe.

E vërtetë nëse a është më e madhe se b dhe e gabuar ndryshe.

E vërtetë nëse a është e barabartë me b dhe e gabuar ndryshe.

E vërtetë nëse a është më e vogël ose e barabartë me b dhe e gabuar ndryshe.

E vërtetë nëse ndryshorja a është më e madhe ose e barabartë me ndryshoren b dhe e gabuar ndryshe.

E vërtetë nëse a nuk është e barabartë me b dhe e gabuar ndryshe.

Më poshtë është një shembull i zbatimit të funksionit të shenjës (), i cili kthen +1 nëse numri është më i madh se zero, -1 nëse numri është më i vogël se zero dhe 0 nëse numri është zero:

funksioni_shenja ime x = 5; nëse x> 0 disp (1); fundi nëse x< 0 disp(-1); end if x == 0 disp(0); end

Analiza e shembullit të dhënë tregon se të tre këto kushte përjashtojnë njëra-tjetrën, d.m.th. kur njëra prej tyre nxitet, nuk ka nevojë të kontrolloni të tjerët. Zbatimi i një logjike të tillë do të rrisë shpejtësinë e ekzekutimit të programit. Kjo mund të arrihet duke përdorur konstruksionin

nëse<выражение> <операторы1>% ekzekutohen nëse kushti tjetër është i vërtetë<операторы2>% plotësohen nëse kushti është i rremë

Atëherë shembulli i mësipërm mund të shkruhet kështu:

funksioni_shenja ime x = 5; nëse x> 0 disp (1); tjetër nëse x< 0 disp(-1); else disp(0); end end

Ky program së pari kontrollon pozitivitetin e ndryshores x dhe nëse po, atëherë në ekran shfaqet vlera 1 dhe të gjitha kushtet e tjera shpërfillen. Nëse kushti i parë rezulton i gabuar, atëherë ekzekutimi i programit vazhdon me tjetër (ndryshe) në kushtin e dytë, ku ndryshorja x testohet për negativitet, dhe nëse kushti është i vërtetë, vlera -1 shfaqet në ekrani. Nëse të dyja kushtet janë false, atëherë shfaqet vlera 0.

Shembulli i mësipërm mund të shkruhet në një formë më të thjeshtë duke përdorur një ndërtim tjetër të operatorit if të gjuhës MatLab:

nëse<выражение1> <операторы1>% ekzekutohen nëse shprehja1 është e vërtetë elseif<выражение2> <операторы2>% ekzekutohen nëse shprehja 2 ... elseif<выражениеN> <операторыN>% ekzekutohen nëse shprehja është e vërtetë N fund

dhe shkruhet si më poshtë:

funksioni_shenja ime x = 5; nëse x> 0 disp (1); % ekzekutohet nëse x> 0 elseif x< 0 disp(-1); % выполняется, если x < 0 else disp(0); % выполняется, если x = 0 end

Me deklaratën e kushtëzuar if, mund të testoni për kushte më komplekse (të përbëra). Për shembull, duhet të përcaktoni: a bie ndryshorja x brenda intervalit të vlerave nga 0 në 2? Kjo mund të zbatohet duke kontrolluar njëkohësisht dy kushte: x> = 0 dhe x<=2. Если эти оба условия истинны, то x попадает в диапазон от 0 до 2.

Për të zbatuar kushtet e përbëra në MatLab, përdoren operatorë logjikë:

& - logjike DHE

| - logjik OSE

~ - logjike JO

Le të shohim një shembull të përdorimit të kushteve të përbëra. Supozoni se kërkohet të kontrollohet nëse ndryshorja x është në intervalin nga 0 në 2. Programi do të shkruhet si më poshtë:

funksioni my_nëse x = 1; nëse x> = 0 & x<= 2 disp("x принадлежит диапазону от 0 до 2"); else disp("x не принадлежит диапазону от 0 до 2"); end

Në shembullin e dytë, ne do të kontrollojmë që ndryshorja x nuk i përket diapazonit nga 0 në 2. Kjo arrihet duke shkaktuar një nga dy kushtet: x< 0 или x > 2:

funksioni my_nëse x = 1; nëse x< 0 | x >2 disp ("x nuk i përket diapazonit nga 0 në 2"); else disp ("x i përket diapazonit 0 deri në 2"); fund

Duke përdorur operatorët logjikë DHE, OSE, JO, ju mund të krijoni një sërë kushtesh komplekse. Për shembull, mund të kontrolloni që ndryshorja x bie në intervalin nga -5 në 5, por nuk i përket diapazonit nga 0 në 1. Natyrisht, kjo mund të zbatohet si më poshtë:

funksioni my_nëse x = 1; nëse (x> = -5 & x<= 5) & (x < 0 | x >1) disp ("x i përket [-5, 5], por nuk përfshihet në"); else disp ("x ose nuk përfshihet në [-5, 5] ose në"); fund

Vini re se kllapat janë përdorur në gjendjen komplekse të përbërjes. Fakti është se përparësia e operacionit AND është më e lartë se përparësia e operacionit OR, dhe nëse nuk do të kishte kllapa, kushti do të dukej kështu: (x> = -5 dhe x<= 5 и x < 0) или x >1. Është e qartë se një kontroll i tillë do të jepte një rezultat të ndryshëm nga ai i pritur.

Kllapat përdoren në programim për të ndryshuar përparësinë e pohimeve. Ashtu si operatorët aritmetikë, edhe operatorët logjikë mund të ndryshohen sipas dëshirës së programuesit. Duke përdorur kllapa, kontrolli kryhet fillimisht brenda tyre, e më pas jashtë tyre. Kjo është arsyeja pse, në shembullin e mësipërm, atyre u kërkohet të arrijnë rezultatin e dëshiruar.

Prioriteti i operacioneve logjike është si më poshtë:

NOT (~) është prioriteti më i lartë;

Dhe (&) - prioritet i mesëm;

OSE (|) është prioriteti më i ulët.

Loops në matlab supozon se një komandë ose grup komandash duhet
përsërisni disa herë.

Mënyra më e lehtë për të krijuar një lak është përdorimi
shprehje për. Më poshtë është një shembull i thjeshtë ku llogaritet dhe shfaqet 10! = 10 * 9 * 8 ... * 2 * 1.

f = 1;
për n = 2: 10
f = f * n;
fund

f =
3628800

Një cikli matlab fillon me një deklaratë for dhe përfundon me një deklaratë fundi. Komanda
ndërmjet këtyre shprehjeve kryhet gjithsej nëntë herë, një herë për secilën
vlerat n nga 2 në 10. Për të ndërprerë daljen e ndërmjetme brenda lakut, ne
përdori një pikëpresje. Për të parë rezultatin përfundimtar, ju duhet
futni f pas përfundimit të ciklit. Nëse nuk përdorni pikëpresje, programi
MATLAB do të shfaqë çdo vlerë të ndërmjetme 2 !, 3 !, etj.

Në modulin Editor, komandat for dhe fund theksohen automatikisht
në blu. Ai jep lexueshmëri më të mirë nëse futni mes tyre
ata urdhëron (si e bëmë atë); moduli Editor e bën këtë
automatikisht. Nëse shkruani për në dritaren e komandës,
MATLAB nuk do të lëshojë një linjë të re komanduese >> derisa ju
shkruani komandën fund, e cila do të bëjë që programi MATLAB të plotësojë një cikli dhe
do të shfaqë një linjë të re komande.

  • Nëse përdorni një lak në një skedar M-script me një efekt jehonë në ekran, atëherë komandat do të pasqyrohen çdo herë në të gjithë ciklin. Ju mund ta parandaloni këtë duke futur një komandë echo off pak para deklaratës fundore dhe një komandë echo on menjëherë pas saj; atëherë çdo komandë në lak do të pasqyrohet një herë (përveç fundit).

Shënim: ekzistojnë tre lloje sythe në matlab, të cilat tregohen më poshtë

1. Cikli for në Matlab

a = 0;
për i = 1: 10
a = a + 1;
fund

2. Cikli while në Matlab

a = 0;
ndërsa a<10
a = a + 1;
fund

3. Loop nëse në Matlab

a = 10;
nëse a == 10
"rasti i parë"
tjetër
"rasti i dytë"
fund

ans =
rasti i parë

Prandaj, nga sa më sipër, mund të konkludojmë se ju duhet të shikoni shumë informacione dhe alternativa shtesë!


Artikujt kryesorë të lidhur