Matlab-programmabeschrijving. De instructies in de lus worden alleen uitgevoerd als aan de voorwaarde na het woord while is voldaan. Bovendien moeten er onder de operators binnen de lus degenen zijn die de waarde van een van de variabelen veranderen. Matlab

De meeste ontwikkelaars hebben moeite met het begrijpen van zowel de syntaxis als de mogelijkheden ervan. Het punt is dat taal rechtstreeks verband houdt met populair softwareproduct, waarvan de kosten verbazingwekkende waarden kunnen bereiken. Dus, belangrijkste vraag: Is de Matlab-taal echt zo goed? En kan het nuttig voor je zijn?

Gebruik

Laten we niet beginnen met een standaard excursie in de geschiedenis en een discussie over de voor- en nadelen van de taal, maar met de MATLAB/Simulink-softwareomgeving - de enige plek waar de held van deze tekst nuttig kan zijn. Stel je eens voor grafische editor, waarin je al jouw ideeën kunt verwezenlijken zonder dat je al een aantal jaren ervaring en relevante opleiding achter de rug hebt. En nadat u eenmaal een diagram van de interactie tussen tools heeft gemaakt, krijgt u een script van hoge kwaliteit voor herhaald gebruik.

MATLAB is zo'n editor in de datawereld. De reikwijdte van de toepassing ervan is oneindig breed: IoT, financiën, geneeskunde, ruimtevaart, automatisering, robotica, draadloze systemen en nog veel, veel meer. Over het algemeen zijn er vrijwel onbeperkte mogelijkheden voor het verzamelen en visualiseren van gegevens, maar ook voor het voorspellen, maar alleen als u de mogelijkheid heeft om het juiste pakket aan te schaffen.

Wat de prijs betreft, er is bijna geen bovengrens, maar de ondergrens ligt rond de $ 99. Om zo'n krachtig product voor relatief weinig geld te bemachtigen, moet je een universiteitsstudent zijn. En natuurlijk krijg je een vrij beperkt product.

Kenmerken van de taal

De MATLAB-taal is een hulpmiddel dat interactie biedt tussen een operator (vaak niet eens een programmeur) met alle beschikbare mogelijkheden voor het analyseren, verzamelen en presenteren van gegevens. Het heeft duidelijke voor- en nadelen die kenmerkend zijn voor een taal die in een gesloten ecosysteem leeft.

Gebreken:

    Een langzame en overbelaste taal met operators, commando's en functies, waarvan het belangrijkste doel is om de visuele perceptie te verbeteren.

    Nauw gefocust. Er is niet meer softwareplatform, waar MATLAB nuttig zou zijn.

    Hoge softwarekosten. Als je geen student bent, bereid je dan voor om je zakken leeg te maken of de grens van de wet te overschrijden. En zelfs als je student bent, is de prijs redelijk.

    Lage vraag. Ondanks de grote belangstelling voor MATLAB op vrijwel elk gebied, maken slechts enkelen er daadwerkelijk en legaal gebruik van.

Voordelen:

    De taal is gemakkelijk te leren en heeft een eenvoudige en begrijpelijke syntaxis.

    Enorme kansen. Maar dit is eerder een voordeel van het product als geheel.

    Regelmatige updates In de regel vinden merkbare positieve transformaties minstens een paar keer per jaar plaats.

    De softwareomgeving maakt het mogelijk om deze om te zetten naar “snelle” code in C, C++.

Doelgroep

Natuurlijk heeft niet iedereen MATLAB nodig. Ondanks het breedste gebied applicaties is het moeilijk voor te stellen dat de gemiddelde applicatieontwikkelaar kennis van deze taal nodig heeft. MATLAB is uiterst nuttig op gebieden die bijzonder robuuste gegevensverwerking vereisen, zoals stuurautomaatsystemen in auto's of boordvoertuigen. elektronische systemen vliegtuig.

Dat wil zeggen, als u niet echt een programmeur bent, maar uw beroep op de een of andere manier verband houdt met de behoefte aan programmatische gegevensverwerking, dan kan een MATLAB/Simulink-product met de juiste taal uw dagelijkse taken aanzienlijk vereenvoudigen.

Literatuur

We sluiten de bespreking van de taal af, zoals altijd, met een lijst educatieve literatuur. Natuurlijk zul je onder hen geen boeken vinden die uitsluitend over de taal gaan, maar dit zal de perceptie van de taal alleen maar gemakkelijker maken:

Heeft u ervaring met MATLAB? En welke?

Voor degenen die programmeur willen worden - .

Dit venster is het belangrijkste in MatLAB. Daarin verschijnen symbolen van opdrachten die door de gebruiker op het weergavescherm worden getypt, de resultaten van het uitvoeren van deze opdrachten, tekst uitvoerbaar programma en informatie over programma-uitvoeringsfouten die door het systeem worden herkend.

Een teken dat MatLAB klaar is om het volgende commando te accepteren en uit te voeren is het verschijnen in laatste regel tekstveld venster met een ">>"-prompt gevolgd door een knipperende verticale balk.

Bovenaan het venster (onder de titel) bevindt zich een menubalk met de menu's Bestand, Bewerken, Weergave, Windows en Help. Om een ​​menu te openen, plaatst u de muisaanwijzer erop en drukt u op de linkerknop. De functies van de menuopdrachten zullen later in meer detail worden beschreven, in de sectie “ MatLab-interface en ploegen algemeen doel. M-boeken schrijven."

Hier merken wij alleen dat op om uit de omgeving te komen MatLAB opent u gewoon het menu Bestand en selecteert u daarin de opdracht MATLAB afsluiten, of sluit eenvoudigweg het opdrachtvenster door op de linkermuisknop te drukken wanneer de muiscursor op de afbeelding van de meest rechtse knop van dit venster staat (aangegeven door een schuine kruis).

1.2. Bewerkingen met cijfers

1.2.1. Het invoeren van reële getallen

Bij het invoeren van cijfers via het toetsenbord worden de algemene regels voor programmeertalen gevolgd hoog niveau:

om het fractionele deel van de mantisse van een getal te scheiden, wordt een decimaalpunt gebruikt (in plaats van een komma in de normale notatie);

de decimale exponent van een getal wordt geschreven als een geheel getal na het voorgaande symbool “e”;

tussen de mantisse van een getal en het symbool “e”(die de mantisse scheidt van de exponent) er mogen geen karakters zijn, inclusief het skip-symbool.

Als u de regel bijvoorbeeld in het MatLAB-opdrachtvenster invoert

en vervolgens na het indrukken van de toets<Еnter>In dit venster verschijnt een invoer:


Opgemerkt moet worden dat het resultaat wordt uitgevoerd in een vorm (formaat) die wordt bepaald door een vooraf ingesteld formaat voor het weergeven van getallen. Dit formaat kan worden ingesteld met behulp van het commando Voorkeuren menu Bestand(Afb. 1.3). Nadat u het hebt aangeroepen, verschijnt een venster met dezelfde naam op het scherm (Fig. 1.4). Een van de secties van dit venster heeft de naam Numeriek Formaat. Het is ontworpen om het formaat in te stellen en te wijzigen voor het weergeven van getallen die tijdens het berekeningsproces in het opdrachtvenster worden weergegeven. De volgende formaten zijn beschikbaar:

Kort (standaard) – korte invoer (standaard gebruikt);

Lang – lange toegang;

Hex – notatie als een hexadecimaal getal;

Bank – opname tot honderdsten;

Plus – alleen het teken van het nummer wordt vastgelegd;

Short E – korte notatie in floating point-formaat;

Long E – lange plaat in floating point-formaat;

Korte G – de tweede vorm van korte notatie in drijvende-kommaformaat;

Lange G – de tweede vorm van lange drijvende-kommanotatie;

Rationeel – notatie in de vorm van een rationale breuk.

Door met de muis het gewenste type weergave van getallen te selecteren, kunt u ervoor zorgen dat getallen vervolgens in precies deze vorm in het opdrachtvenster worden weergegeven.

Zoals blijkt uit Fig. 1.2, het nummer dat op het scherm wordt weergegeven, komt niet overeen met het ingevoerde nummer. Dit komt door het feit dat het standaardformaat voor het weergeven van getallen ( Kort) staat niet toe dat er meer dan 6 significante cijfers worden weergegeven. In feite wordt het ingevoerde nummer opgeslagen in MatLAB met alle ingevoerde cijfers. Als u bijvoorbeeld de Lange selectieknop met de muis selecteert E(dat wil zeggen: stel het opgegeven formaat in voor het weergeven van getallen), en door dezelfde stappen te herhalen, krijgen we:

waar alle cijfers al correct worden weergegeven (Fig. 1.5).

Dingen om te onthouden:

- het ingevoerde getal en de resultaten van alle berekeningen in het Ma-systeem tLAB worden opgeslagen in het pc-geheugen met een relatieve fout van ongeveer 2,10-16(d.w.z. met exacte waarden in 15 decimalen):

- het weergavebereik van de modulus van reële getallen ligt ertussen 10-308 en 10+308.

1.2.2. Eenvoudige rekenkundige bewerkingen

De volgende symbolen worden gebruikt in MatLAB-rekenkundige expressies: rekenkundige bewerkingen:

+ – toevoeging;

– – aftrekken;

* - vermenigvuldiging;

/ – verdeling van links naar rechts;

\ – verdeling van rechts naar links;

^ – machtsverheffing.

Het gebruik van MatLAB in de rekenmachinemodus kan worden gedaan door eenvoudigweg een reeks rekenkundige bewerkingen met getallen op de opdrachtregel te schrijven, dat wil zeggen een reguliere rekenkundige uitdrukking, bijvoorbeeld: 4,5^2*7,23 – 3,14*10,4.

Als u, na het invoeren van deze reeks via het toetsenbord, op de toets drukt , zal het resultaat van de uitvoering verschijnen in het opdrachtvenster in de vorm getoond in Fig. 1.6, d.w.z. het resultaat van de actie van de laatst uitgevoerde instructie wordt op het scherm weergegeven onder de naam van de systeemvariabele ans.

Over het algemeen voldoet de uitvoer van tusseninformatie naar het opdrachtvenster aan de volgende regels:

- als het operatorrecord niet eindigt met het symbool";", het resultaat van deze operator wordt onmiddellijk weergegeven in het opdrachtvenster;

- als de instructie eindigt met een teken";", het resultaat van zijn actie wordt niet weergegeven in het opdrachtvenster;

- als de operator geen toewijzingsteken bevat(= ), dat wil zeggen dat het eenvoudigweg een registratie is van een reeks acties op getallen en variabelen, de resultaatwaarde wordt toegewezen aan een speciale systeemvariabele met de naam ans;

- variabele waarde ontvangen ans kan onder deze naam in de volgende rekeninstructies worden gebruikt ans; Houd er rekening mee dat de waarde van de systeemvariabele ans verandert na de actie van de volgende operator zonder toewijzingsteken;

- in het algemeen ziet de vorm van presentatie van het resultaat in het opdrachtvenster er als volgt uit:

<Имя переменной> = <результат>.

Voorbeeld. Laten we zeggen dat we de uitdrukking (25+17)*7 moeten berekenen. Het kan op deze manier worden gedaan. Voer eerst de reeks 25+17 in en druk op . Het resultaat krijgen we in het formulier op het scherm ans = 42. Nu schrijven we de reeks op ans*7 en druk op . Wij krijgen ans = 294 (Afb. 1.7). Om te voorkomen dat het tussenresultaat van actie 25+17 wordt weergegeven, volstaat het om het symbool “;” toe te voegen na het schrijven van deze reeks. Dan hebben we de resultaten in de vorm weergegeven in figuur 1. 1.8.

Door MatLAB als rekenmachine te gebruiken, kunt u variabelenamen gebruiken om te schrijven tussenresultaten naar pc-geheugen. Gebruik hiervoor de toewijzingsbewerking, die wordt geïntroduceerd door het gelijkteken "=" in overeenstemming met het schema:<Имя переменной> = <выражение>[;]

De variabelenaam kan maximaal 30 tekens bevatten en mag niet overeenkomen met de namen van functies, systeemprocedures en systeemvariabelen. In dit geval maakt het systeem onderscheid tussen grote en kleine letters in variabelen. De namen "amenu", "Amenu", "aMenu" in MatLAB duiden dus verschillende variabelen aan.

De uitdrukking rechts van het toewijzingsteken kan slechts een getal zijn, rekenkundige uitdrukking, een reeks tekens (deze tekens moeten dan tussen apostrofs staan) of een tekenuitdrukking. Als de uitdrukking niet eindigt met een ";", nadat u op de toets hebt gedrukt<Еnter>in het opdrachtvenster verschijnt het uitvoeringsresultaat in de vorm:

<Variabele naam> = <resultaat>.

Rijst. 1.7. Rijst. 1.8.

Als u bijvoorbeeld de regel " X= 25 + 17", verschijnt er een invoer op het scherm (Fig. 1.9).

Het MatLAB-systeem heeft verschillende namen van variabelen die door het systeem zelf worden gebruikt en die zijn opgenomen in de gereserveerde namen:

i, j – denkbeeldige eenheid (vierkantswortel van –1); pi – getal p (opgeslagen als 3.141592653589793); inf – aanduiding van machine-oneindigheid; Na – aanduiding van een ongedefinieerd resultaat (bijvoorbeeld type 0/0 of inf/inf); eps – fout bij bewerkingen op drijvende-kommagetallen; ans – het resultaat van de laatste bewerking zonder toewijzingsteken; realmax en realmin zijn de maximaal en minimaal mogelijke waarden van het getal dat gebruikt kan worden.

Deze variabelen kunnen worden gebruikt in wiskundige uitdrukkingen.

1.2.3. Complexe getallen invoeren

De MatLAB-systeemtaal bevat, in tegenstelling tot veel programmeertalen op hoog niveau, ingebouwde rekenkunde met complexe getallen die zeer gemakkelijk te gebruiken is. Meest elementair wiskundige functies accepteer complexe getallen als argumenten, en de resultaten worden gevormd als complexe getallen. Deze functie van de taal maakt het erg handig en nuttig voor ingenieurs en wetenschappers.

Om de denkbeeldige eenheid in de MatLAB-taal aan te duiden, zijn twee namen i en j gereserveerd. Het invoeren van de waarde van een complex getal via het toetsenbord doet u door een regel als deze in het opdrachtvenster te schrijven:

<complexe variabelenaam> = <PM-waarde> + i[J] * <MP-waarde>,

waar DC het reële deel van een complex getal is, is MP het imaginaire deel. Bijvoorbeeld:

Uit het bovenstaande voorbeeld kunt u zien hoe het systeem complexe getallen op het scherm (en op print) weergeeft.

1.2.4. Basis wiskundige functies

De algemene vorm van het gebruik van een functie in MatLAB is:

<resultaat naam> = <functie naam>(<lijst met argumenten of hun waarden>).

De MatLAB-taal biedt de volgende elementaire rekenkundige functies.

Trigonometrische en hyperbolische functies

zonde (z) – sinus van het getal z;

zonde(z) – hyperbolische sinus;

asin (z) – boogsinus (in radialen, in het bereik van tot );

Azonde(z) – inverse hyperbolische sinus;

metS(z) – cosinus;

сosh(z) – hyperbolische cosinus;

aco's (z) – boogcosinus (in het bereik van 0 tot P);

zosch(z) – inverse hyperbolische cosinus;

bruinen (z) – raaklijn;

tanh (z) – hyperbolische tangens;

atan (z) – boogtangens (in het bereik van tot );

atap2 (X, Y) – boogtangens met vier kwadranten (hoek in het bereik van – P naar + P tussen de horizontale rechterstraal en de straal die door het punt met coördinaten gaat X En Y);

atanh (z) – inverse hyperbolische tangens;

sec (z) – secans;

sec (z) – secans hyperbolicus;

asec (z) – boogsecans;

asech (z) – inverse hyperbolische secans;

csc (z) – cosecant;

csch (z) – hyperbolische cosecans;

acsc (z) – boogcosecant;

acsch (z) – inverse hyperbolische cosecans;

kinderbed (z) – cotangens;

coth (z) – hyperbolische cotangens;

acot (z) – boog cotangens;

acoth (z) - inverse hyperbolische cotangens

Exponentiële functies

exp (z) – exponent van het getal z;

loggen(z) – natuurlijke logaritme;

loggen10 (z) – decimale logaritme;

sqrt(z) – vierkantswortel van het getal z;

abs (z) – modulus van het getal z.

Functies voor gehele getallen

fix (z) – afronden naar het dichtstbijzijnde gehele getal richting nul;

verdieping (z) – afgerond naar het dichtstbijzijnde gehele getal richting negatief oneindigheid;

ceil (z) – afgerond naar het dichtstbijzijnde gehele getal richting positieve oneindigheid;

rond (z) – normale afronding van het getal z naar het dichtstbijzijnde gehele getal;

mod(X,Y) – gehele deling X tot Y;

rem(X, Y) – berekening van de rest bij het delen van X door Y;

teken(z) – berekening van de signumfunctie van het getal z

(0 bij z = 0, –1 bij z< 0, 1 при z > 0)

1.2.5. Speciale wiskundige functies

Naast de elementaire functies biedt de MatLAB-taal een aantal speciale wiskundige functies. Hieronder vindt u een lijst en samenvatting deze functies. De gebruiker kan de regels voor toegang en gebruik ervan vinden in de beschrijvingen van deze functies, die op het scherm worden weergegeven als u de helpopdracht typt en de naam van de functie op dezelfde regel opgeeft.

Coördineren van transformatiefuncties

winkelwagen2 sph– transformatie Cartesische coördinaten bolvormig;

winkelwagen2 pol– conversie van cartesiaanse coördinaten naar polaire coördinaten;

pol2 winkelwagen– conversie van poolcoördinaten naar cartesiaans;

sph2 winkelwagen– conversie van sferische coördinaten naar cartesiaans.

Bessel-functies

besselj– Besselfunctie van de eerste soort;

Bessely– Besselfunctie van de tweede soort;

Besseli– gewijzigde Bessel-functie van de eerste soort;

besselk– gewijzigde Bessel-functie van de tweede soort.

Bètafuncties

bèta– bètafunctie;

betainc– onvolledige bètafunctie;

betaal– logaritme van de bètafunctie.

Gamma-functies

gamma– gammafunctie;

gammainc– onvolledige gammafunctie;

gammaln– logaritme van de gammafunctie.

Elliptische functies en integralen

ellips– Jacobi-elliptische functies;

ellips– volledige elliptische integraal;

expineren– exponentiële integraalfunctie.

Foutfuncties

erf– foutfunctie;

erf– extra foutfunctie;

erfcx– geschaalde extra foutfunctie;

erflnv is de inverse foutfunctie.

Andere functies

gcd– grootste gemene deler;

leren– kleinste gemene veelvoud;

legende– gegeneraliseerde Legendre-functie;

log2– logaritme met grondtal 2;

pow2– het verheffen van 2 tot de opgegeven macht;

rat– weergave van een getal in de vorm van een rationale breuk;

ratten– weergave van getallen in de vorm van rationale breuken.

1.2.6. Elementaire bewerkingen met complexe getallen

De eenvoudigste bewerkingen met complexe getallen - optellen, aftrekken, vermenigvuldigen, delen en machtsverheffen - worden uitgevoerd met respectievelijk de gebruikelijke rekenkundige tekens +, –, *, /, \ en ^.

Voorbeelden van gebruik worden getoond in Fig. 1.11.

Opmerking. Het bovenstaande fragment gebruikt de functie weergave (van het woord “display”), dat ook berekeningsresultaten of wat tekst in het opdrachtvenster weergeeft. In dit geval wordt het numerieke resultaat, zoals u kunt zien, weergegeven zonder de naam van de variabele of aan te geven ans.

1.2.7. Complexe argumentfuncties

Bijna allemaal basis wiskundige functies gegeven in clausule 1.2.4, worden berekend voor complexe waarden van het argument en als gevolg hiervan worden complexe resultaatwaarden verkregen.

Hierdoor berekent de sqrt-functie bijvoorbeeld, in tegenstelling tot andere programmeertalen, de vierkantswortel van een negatief argument, en de functie buikspieren berekent, gegeven een complexe waarde van het argument, de modulus van een complex getal. Voorbeelden worden getoond in Fig. 1.12.

MatLAB heeft er meerdere extra functies, alleen berekend voor een complex argument:

echt (z) – selecteert het reële deel van het complexe argument z;

і mag (z) – benadrukt het denkbeeldige deel van het complexe argument;

hoek (z) – berekent de waarde van het argument van het complexe getal z (in radialen in het bereik van –p tot +p);

conj (z) – retourneert een getal dat complex geconjugeerd is met betrekking tot z.

Voorbeelden worden getoond in Fig. 1.13.

Rijst. 1.12. Rijst. 1.3.

Daarnaast heeft MatLAB een speciale functie cplxpair (V), die een gegeven vector V met complexe elementen zodanig sorteert dat de complexe geconjugeerde paren van deze elementen in oplopende volgorde in de resulterende vector worden gerangschikt echte onderdelen, en het element met een negatief imaginair deel wordt altijd als eerste geplaatst. De echte elementen completeren de complexe geconjugeerde paren. Bijvoorbeeld (in verder in de voorbeelden van opdrachten die vanaf het toetsenbord worden getypt, zal vetgedrukt worden geschreven, en het resultaat van hun uitvoering is in een normaal lettertype):

>> v = [ -1, -1+2i,-5,4,5i,-1-2i,-5i]

Kolommen 1 tot en met 4

1,0000 -1,0000 +2,0000i -5,0000 4,0000

Kolommen 5 tot en met 7

0 + 5.0000i -1.0000-2.0000i 0 - 5.0000i

>> disp(cplxpaar(v))

Kolommen 1 tot en met 4

1.0000 - 2.0000i -1.0000 + 2.0000i 0 - 5.0000i 0 + 5.0000i

Kolommen 5 tot en met 7

5.0000 -1.0000 4.0000

Geschiktheid van de meerderheid MatLAB-functies het werken met complexe getallen maakt het veel gemakkelijker om berekeningen te maken met reële getallen, waarvan het resultaat complex is, bijvoorbeeld het vinden van complexe wortels van kwadratische vergelijkingen.

1. Gultyaev AK. Simulatiemodellering V Windows-omgeving: Praktische gids. - Sint-Petersburg: CORONA-afdruk, 1999. - 288 p.

2. Gultyaev A.K MATLAB-omgeving: Opleiding. - Sint-Petersburg: PETER, 2000. - 430 p.

3. Dyakonov V.P. Handboek over het gebruik van het PC MatLAB-systeem. - M.: Fizmatlit, 1993. - 113 p.

4. Dyakonov V. Simulink 4. Speciaal naslagwerk. - Sint-Petersburg: Peter, 2002. – 518 p.

5. Dyakonov V., Kruglov V. Wiskundepakketten MatLAB-extensies. Speciaal naslagwerk. - Sint-Petersburg: Peter, 2001. - 475 p.

6. Krasnoproshina A. A., Repnikova N. B., Ilchenko A. A. Moderne analyse van besturingssystemen met behulp van MATLAB, Simulink, Control System: Textbook. - K.: "Korniychuk", 1999. – 144 p.

7. Lazarev Yu F. Cobs van programmeren in de MatLAB-omgeving: Uch. toelage. - K.: "Korniychuk", 1999. - 160 p.

8. Lazarev Yu. – K.: “Irina” (BHV), 2000. – 384 p.

9. Medvedev V. S., Potemkin V. G. Controlesysteemtoolbox. MatLAB 5 voor studenten. - G.: "DIALOG-MEPhI", 1999. – 287 p.

10. Potemkin VG MatLAB 5 voor studenten: referentie. toelage. - M.: "DIALOG-MEPhI", 1998. - 314 p.

Werken vanaf de MatLab-opdrachtregel is moeilijk als u veel opdrachten moet invoeren en deze regelmatig moet wijzigen. Het bijhouden van een dagboek met behulp van het dagboekcommando en het opslaan van de werkomgeving maakt het allemaal een beetje eenvoudiger. Het meest op een handige manier het uitvoeren van MatLab-opdrachten is te gebruiken M-bestanden, waarin u opdrachten kunt typen, ze allemaal tegelijk of in delen kunt uitvoeren, ze in een bestand kunt opslaan en ze in de toekomst kunt gebruiken. De M-file-editor is ontworpen om met M-bestanden te werken. Met deze editor kunt u uw eigen functies maken en deze oproepen, ook vanaf de opdrachtregel.

Vouw menu uit Bestand hoofdvenster van MatLab en in het item Nieuw selecteer een subitem M-bestand. Het nieuwe bestand wordt geopend in het M-file editorvenster.

Voer opdrachten in de editor in die leiden tot de constructie van twee grafieken in één grafisch venster:

x = ;
f = exp(-x);
subplot(1, 2, 1)
plot(x, f)
g = zonde(x);
subplot(1, 2, 2)
plot(x, g)

Sla nu het bestand met de naam mydemo.m op in een submap werk hoofdMatLab-map door te selecteren Opslaan als menu Bestand editor. Selecteer om alle opdrachten in het bestand uit te voeren Loop in het menu Foutopsporing. Er verschijnt een grafisch venster op het scherm Figuur Nr.1, met grafieken van functies. Als u besluit cosinus in plaats van sinus uit te zetten, wijzigt u eenvoudigweg de regel g = sin(x) in het M-bestand in g = cos(x) en voert u alle opdrachten opnieuw uit.

Opmerking 1

Als er tijdens het typen een fout wordt gemaakt en MatLab de opdracht niet kan herkennen, worden de opdrachten tot en met de foutief ingevoerde opdrachten uitgevoerd, waarna er een foutmelding in het opdrachtvenster verschijnt.

Erg handige gelegenheid geleverd door de M-file-editor is uitvoering van enkele commando's. Sluit het grafische venster Figuur Nr.1. Selecteer met de muis terwijl u de linkerknop ingedrukt houdt, of met de pijltoetsen terwijl u de toets ingedrukt houdt , de eerste vier opdrachten van het programma en voer deze vanaf punt uit Evalueer Selectie menu Tekst. Houd er rekening mee dat er in het grafische venster slechts één grafiek werd weergegeven die overeenkomt met de uitgevoerde opdrachten. Houd er rekening mee dat u, om sommige opdrachten uit te voeren, deze moet selecteren en op moet drukken . Voer de resterende drie programmaopdrachten uit en controleer de status van het grafische venster. Oefen zelf, typ enkele voorbeelden uit eerdere labs in de M-file editor en voer ze uit.

Individuele M-vijlblokken zijn leverbaar opmerkingen, die bij uitvoering worden overgeslagen, maar handig zijn bij het werken met een M-bestand. Opmerkingen in MatLab beginnen met een procentteken en worden automatisch groen gemarkeerd, bijvoorbeeld:

% sin(x) uitzetten in een apart venster

De M-file editor kan meerdere bestanden tegelijkertijd geopend hebben. De overgang tussen bestanden wordt uitgevoerd met behulp van bladwijzers met bestandsnamen onderaan het editorvenster.

Opening bestaand M-bestand wordt gedaan met behulp van het item Open menu Bestand werkomgeving of M-file-editor. U kunt het bestand ook in de editor openen met behulp van de MatLab-bewerkingsopdracht vanaf de opdrachtregel, waarbij u de bestandsnaam als argument opgeeft, bijvoorbeeld:

Met het bewerkingscommando zonder argument wordt een nieuw bestand gemaakt.
Alle voorbeelden die in deze en de volgende labs voorkomen, kunnen het beste worden getypt en opgeslagen in M-files, aangevuld met commentaar, en uitgevoerd vanuit de M-file editor. Het gebruik van numerieke methoden en programmeren in MatLab vereist het maken van M-bestanden.

2. Soorten M-bestanden

Er zijn twee soorten M-bestanden in MatLab: programma bestand(Script M-Files) met een reeks opdrachten, en bestandsfunctie(Functie M-Files), die door de gebruiker gedefinieerde functies beschrijven.

U hebt het bestandsprogramma (bestandsprocedure) gemaakt bij het lezen van de vorige paragraaf. Alle variabelen die in het bestandsprogramma zijn gedeclareerd, worden na uitvoering ervan beschikbaar in de werkomgeving. Voer het bestandsprogramma uit paragraaf 2.1 uit in de M-bestandseditor en voer het whos-commando in opdrachtregel om de inhoud van de werkruimte te bekijken. Een beschrijving van de variabelen verschijnt in het opdrachtvenster:

"Wie
Naam Grootte Bytes Klasse
f 1x71 568 dubbele array
g 1x71 568 dubbele array
x 1x71 568 dubbele array
Het eindtotaal is 213 elementen met 1704 bytes

Variabelen die in één bestandsprogramma zijn gedefinieerd, kunnen in andere bestandsprogramma's worden gebruikt en in opdrachten die vanaf de opdrachtregel worden uitgevoerd. Het uitvoeren van opdrachten in een bestandsprogramma gebeurt op twee manieren:

  • Vanuit de M-file-editor zoals hierboven beschreven.
  • Vanaf de opdrachtregel of een ander bestandsprogramma, waarbij u de naam van het M-bestand als opdracht gebruikt.

Het gebruik van de tweede methode is veel handiger, vooral als het gemaakte bestandsprogramma in de toekomst herhaaldelijk zal worden gebruikt. In feite wordt het gemaakte M-bestand een commando dat MatLab begrijpt. Sluit alle grafische vensters en typ mydemo op de opdrachtregel. Er verschijnt een grafisch venster dat overeenkomt met de opdrachten van het programmabestand mydemo.m. Na het invoeren van het mydemo-commando voert MatLab de volgende acties uit.

  • Controleert of de ingevoerde opdracht de naam is van een van de variabelen die in de runtime zijn gedefinieerd. Als een variabele wordt ingevoerd, wordt de waarde ervan weergegeven.
  • Als de invoer geen variabele is, zoekt MatLab naar het ingevoerde commando tussen de ingebouwde functies. Als de opdracht een ingebouwde functie blijkt te zijn, wordt deze uitgevoerd.

Als er geen variabele of ingebouwde functie wordt ingevoerd, begint MatLab te zoeken naar een M-bestand met de opdrachtnaam en extensie M. De zoektocht begint met huidige map(Huidige map), als het M-bestand daarin niet wordt gevonden, doorzoekt MatLab de mappen die zijn geïnstalleerd in zoek paden(Pad). Het gevonden M-bestand wordt uitgevoerd in MatLab.

Als geen van de bovenstaande acties tot succes heeft geleid, wordt er een bericht weergegeven in het opdrachtvenster, bijvoorbeeld:

» mijndem
??? Ongedefinieerde functie of variabele "mydem".

Normaal gesproken worden M-bestanden opgeslagen in de gebruikersdirectory. Om ervoor te zorgen dat het MatLab-systeem ze kan vinden, moeten de paden zo worden ingesteld dat ze de locatie van de M-bestanden aangeven.

Opmerking 2

Houden eigen M-bestanden buiten de hoofdmap van MatLab volgt om twee redenen. Ten eerste, wanneer u MatLab opnieuw installeert, kunnen bestanden die zich in submappen van de hoofdmap van MatLab bevinden, vernietigd worden. Ten tweede worden, wanneer MatLab wordt gestart, alle bestanden in de submap Toolbox op een optimale manier in het geheugen van de computer geplaatst om de prestaties te verbeteren. Als u het M-bestand naar deze map hebt geschreven, kunt u het alleen gebruiken nadat u MatLab opnieuw hebt opgestart.

3. Paden instellen

In MatLab-versies 6 .X bepaald huidige map en zoekpaden. Het instellen van deze eigenschappen gebeurt via de overeenkomstige dialoogvensters of via opdrachten vanaf de opdrachtregel.

De huidige map wordt bepaald in het dialoogvenster Huidig Directory werkomgeving. Het venster is aanwezig in de werkruimte als de optie is geselecteerd Huidig Directory menu Weergave werkomgeving.
De huidige directory wordt uit de lijst geselecteerd. Als het niet in de lijst staat, kunt u het vanuit het dialoogvenster toevoegen Blader voor Map opgeroepen door op de knop rechts van de lijst te klikken. De inhoud van de huidige map wordt weergegeven in de bestandstabel.

Zoekpaden worden gedefinieerd in het dialoogvenster Set Pad padnavigator, toegankelijk vanaf het punt Set Pad menu Bestand werkomgeving.

Om een ​​catalogus toe te voegen, klikt u op de knop Toevoegen Map Blader voor Pad selecteer de gewenste map. Het toevoegen van een map met al zijn submappen gebeurt door op de knop te klikken Toevoegen met submappen. MATLAB zoekopdracht pad. De zoekvolgorde komt overeen met de locatie van de paden in dit veld; het pad waarvan het pad zich bovenaan de lijst bevindt, wordt als eerste doorzocht. U kunt de zoekvolgorde wijzigen of zelfs het pad naar een map verwijderen door de map in het veld te selecteren MATLAB zoekopdracht pad en bepaal de positie met behulp van de volgende knoppen:
Beweging naar Bovenkant - naar de bovenkant van de lijst gaan;
Beweging Omhoog - één positie omhoog gaan;
Verwijderen - verwijderen uit lijst;
Beweging Omlaag - één positie omlaag gaan;
Beweging naar Onderkant - onderaan de lijst plaatsen.

4. Commando's voor het instellen van paden.

Stappen om paden in MatLab 6 in te stellen .X worden gedupliceerd door teams. De huidige map wordt ingesteld met het cd-commando, bijvoorbeeld cd c:\users\igor. Het cd-commando, dat zonder argument wordt gegeven, drukt het pad naar de huidige map af. Om paden in te stellen, gebruikt u de opdracht path, aangeroepen met twee argumenten:

pad (pad, "c:\users\igor") - voegt de map c:\users\igor toe met de laagste zoekprioriteit;
pad ("c:\users\igor",pad) - voegt de map c:\users\igor toe met de hoogste zoekprioriteit.

Als u de opdracht path zonder argumenten gebruikt, wordt er een lijst met zoekpaden op het scherm weergegeven. U kunt een pad uit de lijst verwijderen met de opdracht rmpath:

rmpath("c:\users\igor") verwijdert het pad naar de directory c:\users\igor uit de lijst met paden.

Opmerking 3

Verwijder mappaden niet onnodig, vooral niet de paden waarvan u het doel niet zeker weet. Verwijdering kan ertoe leiden dat sommige van de in MatLab gedefinieerde functies niet meer beschikbaar zijn.

Voorbeeld. Maak in de hoofdmap van de schijf D(of een andere schijf of map waar leerlingen hun eigen mappen mogen maken) een map met je achternaam, bijvoorbeeld WORK_IVANOV, en schrijf daar het M-bestand mydemo.m onder de naam mydemo3.m. Stel bestandspaden in en demonstreer de bestandstoegankelijkheid vanaf de opdrachtregel. Vermeld de resultaten in uw laboratoriumrapport.

Oplossingsoptie:

1. In de hoofdmap van de schijf D de directory WORK_IVANOV wordt aangemaakt.
2. Het M-bestand mydemo.m wordt naar de directory WORK_IVANOV geschreven onder de naam mydemo3.m.
3. Er wordt een dialoogvenster geopend Set Pad menu Bestand MatLab werkomgeving.
4. De knop wordt ingedrukt Toevoegen Map en in het dialoogvenster dat verschijnt Blader voor Pad de map WORK_IVANOV is geselecteerd.
5. Het toevoegen van een map met al zijn submappen gebeurt door op de knop te klikken Toevoegen met Submappen. Het pad naar de toegevoegde map verschijnt in het veld MATLAB zoekopdracht pad.
6. Druk op de toets om het pad te onthouden Redden dialoogvenster Set Pad.
7. De juistheid van alle acties wordt gecontroleerd door de opdracht mydemo3 vanaf de opdrachtregel te typen. Er verschijnt een grafisch venster op het scherm.

5. Bestandsfuncties

De hierboven besproken bestandsprogramma's zijn een reeks MatLab-opdrachten; ze hebben geen invoer- of uitvoerargumenten. Om numerieke methoden te gebruiken en bij het programmeren van uw eigen applicaties in MatLab, moet u bestandsfuncties kunnen samenstellen die produceren noodzakelijke acties met invoerargumenten en retourneer het resultaat in uitvoerargumenten. Deze subsectie bevat verschillende eenvoudige voorbeelden om u te helpen begrijpen hoe u met bestandsfuncties kunt werken. Bestandsfuncties en bestandsprocedures worden aangemaakt in de M-file editor.

5.1. Bestandsfuncties met één invoerargument

Stel dat het bij berekeningen vaak nodig is om de functie te gebruiken

Het is zinvol om een ​​bestandsfunctie één keer te schrijven en deze vervolgens aan te roepen op de plek waar deze functie moet worden berekend. Open een nieuw bestand in de M-file editor en typ de aanbiedingstekst

functie f = mijnplezier(x)
f= exp(-x)*sqrt((x^2+1)/(x^4+0,1));

Het woord functie op de eerste regel geeft dat aan dit bestand bevat een functiebestand. De eerste regel is functiekop, welke huizen functie naam en lijsten met invoer- en uitvoerargumenten. In het voorbeeld dat in de lijst wordt getoond, is de functienaam myfun, is één invoerargument x en één uitvoerargument f. Daarna komt de titel functie lichaam(in dit voorbeeld bestaat het uit één regel), waar de waarde ervan wordt berekend. Het is belangrijk dat de berekende waarde naar f wordt geschreven. De puntkomma is opgenomen om te voorkomen dat onnodige informatie op het scherm wordt weergegeven.

Sla het bestand nu op in uw werkmap. Houd er rekening mee dat het selecteren van een item Redden of Redden als menu Bestand zorgt ervoor dat er een dialoogvenster verschijnt waarin u het bestand kunt opslaan in het veld Bestand naam die al de naam myfun bevat. Wijzig het niet, maar sla het functiebestand op in een bestand met de voorgestelde naam.

Nu kan de gemaakte functie op dezelfde manier worden gebruikt als de ingebouwde sin, cos en andere, bijvoorbeeld vanaf de opdrachtregel:

» y =mijnplezier(1.3)
J =
0.2600

Eigen functies kunnen worden opgeroepen vanuit een bestandsprogramma en vanuit een andere bestandsfunctie.

Waarschuwing

De map die het functiebestand bevat, moet actueel zijn, of het pad ervan moet aan het zoekpad worden toegevoegd, anders zal MatLab de functie eenvoudigweg niet vinden, of in plaats daarvan een andere met dezelfde naam aanroepen (als deze zich in doorzoekbare mappen bevindt).

De bestandsfunctie die in de lijst wordt weergegeven, heeft er één aanzienlijk nadeel. Het proberen om functiewaarden uit een array te evalueren resulteert in een fout in plaats van een array van waarden, zoals gebeurt bij het evalueren van ingebouwde functies.

» x = ;
» y = mijn plezier(x)
??? Fout bij gebruik van ==> ^
Matrix moet vierkant zijn.
Fout in ==> C:\MATLABRll\work\myfun.m
Op regel 2 ==> f = exp(-x)*sqrt((x^2+1)/(x^4+1));

Als je hebt geleerd hoe je met arrays moet werken, zal het elimineren van deze tekortkoming niet moeilijk zijn. U hoeft alleen elementgewijze bewerkingen te gebruiken bij het berekenen van de waarde van een functie.
Wijzig de functietekst zoals weergegeven in de volgende lijst (vergeet niet om de wijzigingen op te slaan in het bestand myfun.m).

functie f = mijnplezier(x)
f = exp(-x).*sqrt((x.^2+1)./(x.^4+0,1));

Het argument voor de myfun-functie kan nu een getal of een vector of matrix van waarden zijn, bijvoorbeeld:

» x = ;
» y = mijn plezier(x)
J =
0.2600 0.0001

De variabele y, waarin het resultaat van het aanroepen van de myfun-functie wordt geschreven, wordt automatisch een vector van de vereiste grootte.

Teken de myfun-functie op een segment vanaf de opdrachtregel of gebruik een bestandsprogramma:

x = ;
y = mijn plezier(x);
plot(x, y)

MatLab biedt een andere manier om met bestandsfuncties te werken: deze worden gebruikt als argumenten voor sommige opdrachten. Om bijvoorbeeld een grafiek te plotten, gebruikt u de speciale functie fplot, die de reeks hierboven gegeven opdrachten vervangt. Bij het aanroepen van fplot wordt de naam van de functie waarvan de grafiek moet worden geplot, tussen apostrofs geplaatst, de plotlimieten worden aangegeven in een rijvector van twee elementen

fplot("mijn plezier", )

Teken myfun-grafieken met behulp van plot en fplot op dezelfde assen, met behulp van hold on. Houd er rekening mee dat een grafiek die is opgebouwd met fplot het gedrag van de functie nauwkeuriger weerspiegelt, omdat fplot zelf de argumentstap selecteert en deze in secties reduceert snelle verandering weergegeven functie. Vermeld de resultaten in uw laboratoriumrapport.

5.2. Bestandsfuncties met meerdere invoerargumenten

Het schrijven van bestandsfuncties met meerdere invoerargumenten verschilt praktisch niet van het schrijven met één argument. Alle invoerargumenten worden in een lijst geplaatst, gescheiden door komma's. De volgende lijst bevat bijvoorbeeld een bestandsfunctie die de lengte van de straalvector van een punt in de driedimensionale ruimte berekent
Lijst van een bestandsfunctie met verschillende argumenten

functie r = straal3(x, y, z)
r = sqrt(x.^2 + y.^2 + z.^2);

» R = straal3(1, 1, 1)
R=
1.732

Naast functies met meerdere invoerargumenten kunt u met MatLab functies maken die meerdere waarden retourneren, d.w.z. met meerdere uitvoerargumenten.

5.3. Bestandsfuncties met meerdere uitvoerargumenten

Bestandsfuncties met meerdere uitvoerargumenten zijn handig bij het evalueren van functies die meerdere waarden retourneren (in de wiskunde worden ze genoemd vectorfuncties). Uitvoerargumenten worden toegevoegd aan de lijst met uitvoerargumenten, gescheiden door komma's, en de lijst zelf staat tussen vierkante haakjes. Een goed voorbeeld is een functie die de in seconden opgegeven tijd omzet in uren, minuten en seconden. Deze bestandsfunctie wordt weergegeven in de volgende lijst.

Lijst van de functie voor het omrekenen van seconden naar uren, minuten en seconden

functie = hms(sec)
uur = verdieping(sec/3600);
minuut = verdieping((sec-uur*3600)/60);
seconde = sec-uur*3600-minuut*60;

Bij het aanroepen van bestandsfuncties met meerdere uitvoerargumenten moet het resultaat naar een vector met de juiste lengte worden geschreven:

» [N, M, S] = hms(10000)
H=
2
M =
46
S=
40

6. Basisprincipes van programmeren in MatLab

De bestandsfuncties en het programmabestand die in de voorgaande subsecties zijn gebruikt, zijn het meest eenvoudige voorbeelden programma's worden alle daarin opgenomen MatLab-opdrachten opeenvolgend uitgevoerd. Om nog veel meer op te lossen serieuze taken Het is vereist om programma's te schrijven waarin acties cyclisch worden uitgevoerd of, afhankelijk van bepaalde omstandigheden, verschillende delen van de programma's worden uitgevoerd. Laten we eens kijken naar de belangrijkste operators die de volgorde van uitvoering van MatLab-opdrachten specificeren. Operators kunnen zowel in bestandsprocedures als in functies worden gebruikt, waardoor u programma's met complexe vertakte structuren kunt maken.

6.1. Loop-operator voor

De instructie is ontworpen om uit te voeren gegeven nummer repetitieve handelingen. Gemakkelijkst te gebruiken voor exploitant als volgt uitgevoerd:

voor tellen = start:stap:finale
MatLab-opdrachten
einde

Hier is count een lusvariabele, start is de beginwaarde, final is de eindwaarde en stap is de stap waarmee het aantal wordt verhoogd elke keer dat de lus wordt betreden. De lus eindigt zodra de telling groter wordt dan de definitieve waarde. Een lusvariabele kan niet alleen gehele waarden aannemen, maar ook reële waarden van elk teken. Laten we eens kijken naar het gebruik van de for-lusoperator aan de hand van enkele typische voorbeelden.
Laat het nodig zijn om een ​​familie van curven af ​​te leiden voor , die wordt gespecificeerd door een functie, afhankelijk van de parameter voor parameterwaarden van -0,1 tot 0,1.
Typ de tekst van de bestandsprocedure in de M-file-editor en sla deze op in het bestand FORdem1.m, en voer deze uit voor uitvoering (vanuit de M-file-editor of vanaf de opdrachtregel door de opdracht FORdem1 erin te typen en op te drukken ):

% bestandsprogramma voor het construeren van een familie van curven
x = ;
voor a = -0,1:0,02:0,1
y = exp(-a*x).*sin(x);
wacht even
plot(x, y)
einde

Opmerking 4

De M-bestandseditor stelt automatisch voor om instructies in de lus te plaatsen, ingesprongen vanaf de linkerrand. Gebruik deze functie om het werken met programmatekst eenvoudiger te maken.

Als resultaat van het uitvoeren van FORdem1 zal een grafisch venster verschijnen dat de vereiste reeks curven bevat.

Schrijf een bestandsprogramma om de som te berekenen

Het algoritme voor het berekenen van de som maakt gebruik van de accumulatie van het resultaat, d.w.z. eerst is de som nul ( S= 0), en vervolgens in een variabele k er wordt een eenheid ingevoerd en 1/ wordt berekend k!, wordt toegevoegd S en het resultaat wordt opnieuw ingevoerd S. Volgende k wordt met één verhoogd, en het proces gaat door totdat de laatste term 1/10 is!. Het Fordem2-bestandsprogramma dat in de volgende lijst wordt weergegeven, berekent het vereiste bedrag.

Lijst van het Fordem2-bestandsprogramma voor het berekenen van het bedrag

% bestandsprogramma voor het berekenen van het bedrag
% 1/1!+1/2!+ … +1/10!

% Reset S om het bedrag te accumuleren
S = 0;
% accumulatie van hoeveelheid in cyclus
voor k = 1:10
S = S + 1/faculteit(k);
Einde
% voert het resultaat uit naar het opdrachtvenster S

Typ het programmabestand in de M-file editor, sla het op in de huidige map in het bestand Fordem2.m en voer het uit. Het resultaat wordt weergegeven in het opdrachtvenster, omdat in de laatste regel van het bestandsprogramma S bevat geen puntkomma om de waarde van de variabele weer te geven S

Merk op dat andere regels van het bestandsprogramma die ervoor zouden zorgen dat tussenwaarden op het scherm worden afgedrukt, worden afgesloten met een puntkomma om de uitvoer naar het opdrachtvenster te onderdrukken.

De eerste twee regels met commentaar zijn niet per ongeluk gescheiden lege regel van de rest van de programmatekst. Dit zijn de gegevens die worden weergegeven wanneer de gebruiker de helpopdracht vanaf de opdrachtregel gebruikt om informatie te verkrijgen over wat Fordem2 aan het doen is

>> help Fordem2
bestandsprogramma voor het berekenen van de som
1/1!+1/2!+ … +1/10!

Bij het schrijven van bestandsprogramma's en bestandsfuncties mogen opmerkingen niet worden genegeerd!
Alle variabelen die in het bestandsprogramma worden gebruikt, worden beschikbaar in de werkomgeving. Het zijn zogenaamde globale variabelen. Aan de andere kant kan het bestandsprogramma alle variabelen gebruiken die in de werkomgeving zijn ingevoerd.

Beschouw het probleem van het berekenen van de som, vergelijkbaar met het vorige, maar afhankelijk van de variabele X

Om dit bedrag in het Fordem2-bestandsprogramma te berekenen, moet u de regel binnen de for-lus wijzigen in

S = S + x.^k/faculteit(k);

Voordat u het programma uitvoert, moet u een variabele definiëren X op de opdrachtregel met behulp van de volgende opdrachten:

>>x=1,5;
>>Fordem2
S=
3.4817

Als X kan een vector of een matrix zijn, aangezien in het Fordem2-bestandsprogramma element-voor-element bewerkingen werden gebruikt bij het accumuleren van de som.

Voordat u Fordem2 start, moet u een variabele toewijzen X een bepaalde waarde, en om de som te berekenen, bijvoorbeeld uit vijftien termen, moet u wijzigingen aanbrengen in de tekst van het bestandsprogramma. Het is veel beter om een ​​universele bestandsfunctie te schrijven die de waarde als invoerargumenten gebruikt X en de bovengrens van het bedrag, en het weekend - de waarde van het bedrag S(X). Het sumN-functiebestand wordt weergegeven in de volgende lijst.

Lijst van de bestandsfunctie voor het berekenen van de som

functie S = somN(x, N)
% bestandsfunctie om de som te berekenen
% x/1!+x^2/2!+ … +x^N/N!
% verbruik: S = somN(x, N)

% reset S om het bedrag te accumuleren
S = 0;
% accumulatie van hoeveelheid in cyclus
voor m = 1:1:N
S = S + x.^m/faculteit(m);
einde

De gebruiker kan meer te weten komen over het gebruik van de functie sumN door help sumN op de opdrachtregel te typen. De eerste drie regels met commentaar worden weergegeven in het opdrachtvenster, gescheiden van de tekst van de bestandsfunctie door een lege regel.

Merk op dat bestandsfunctievariabelen niet globaal zijn (m in sumN bestandsfunctie). Als u probeert de waarde van variabele m te bekijken vanaf de opdrachtregel, resulteert dit in een bericht dat m niet is gedefinieerd. Als er in de werkomgeving een globale variabele bestaat met dezelfde naam, gedefinieerd vanaf de opdrachtregel of in een bestandsfunctie, dan is deze op geen enkele manier gerelateerd aan de lokale variabele in de bestandsfunctie. In de regel is het beter om uw eigen algoritmen als bestandsfuncties op te maken, zodat de variabelen die in het algoritme worden gebruikt de waarden van de globale variabelen van de gelijknamige werkomgeving niet veranderen.

For-lussen kunnen in elkaar worden genest, maar de variabelen van de geneste lussen moeten verschillend zijn.

De for-lus is handig bij het uitvoeren van herhaalde soortgelijke acties waarvan het aantal vooraf is bepaald. Met een flexibelere while-lus kunt u deze beperking omzeilen.

6.2. While-lusoperator

Laten we een voorbeeld bekijken van het berekenen van een som, vergelijkbaar met het voorbeeld uit de vorige paragraaf. Je moet de som van een reeks voor een gegeven vinden X(serie-uitbreiding):
.

De som kan worden opgeteld zolang de termen niet te klein zijn; laten we zeggen dat meer modulo hier niet voldoende is, omdat het aantal termen van tevoren onbekend is. De oplossing is om een ​​while-lus te gebruiken, die wordt uitgevoerd zolang aan de lusvoorwaarde is voldaan:

while-lusconditie
MatLab-opdrachten
einde

In dit voorbeeld bepaalt de lusvoorwaarde dat de huidige term groter is dan . Om deze voorwaarde te schrijven, gebruikt u het groter dan-teken (>). De tekst van de bestandsfunctie mysin, die de som van een reeks berekent, wordt gegeven in de volgende lijst.

Lijst van de mysin-bestandsfunctie die sinus berekent door reeksuitbreiding

functie S = mysin(x)
% Berekening van sinus door serie-uitbreiding
% Gebruik: y = mysin(x), -pi

S = 0;
k = 0;
terwijl abs(x.^(2*k+1)/faculteit(2*k+1))>1.0e-10
S = S + (-1)^k*x.^(2*k+1)/faculteit(2*k+1);
k = k + 1;
einde

Houd er rekening mee dat de while-lus, in tegenstelling tot de for-lus, geen lusvariabele heeft, dus moesten we k aan nul toewijzen vóór het begin van de lus, en k met één verhogen binnen de lus.
De while-lusvoorwaarde kan meer dan alleen het > teken bevatten. Om de voorwaarden voor het uitvoeren van een cyclus in te stellen, zijn ook andere relationele bewerkingen uit Tabel 1 geldig. 1.

Tabel 1. Relationele operaties

Het instellen van complexere voorwaarden gebeurt met behulp van logische operatoren. De voorwaarde bestaat bijvoorbeeld uit de gelijktijdige vervulling van twee ongelijkheden en , en wordt geschreven met logische exploitant En

en(x >= -1, x< 2)

of gelijkwaardig met &

(x >= -1) & (x< 2)

Logische operatoren en voorbeelden van hun gebruik worden gegeven in de tabel. 2.

Tabel 2. Logische operatoren

Exploitant

Schrijven naar MatLab

Gelijkwaardige invoer

Logische "EN"

en (x< 3, k == 4)

(X< 3) & (k == 4)

Logische "OF"

Of(x == 1,x == 2)

(x== 1) | (x== 2)

Ontkenning "NIET"

Bij het berekenen van de som van een oneindige reeks is het zinvol om het aantal termen te beperken. Als de reeks uiteenloopt omdat de termen ervan niet naar nul neigen, wordt mogelijk nooit aan de voorwaarde voor de kleine waarde van de huidige term voldaan en zal het programma in een lus terechtkomen. Voer de sommatie uit door een limiet voor het aantal termen toe te voegen aan de while-lusvoorwaarde van de mysin-bestandsfunctie:

terwijl (abs(x.^(2*k+1)/faculteit(2*k+1))>1.0e-10)&(k<=10000))

of in een gelijkwaardige vorm

terwijl en(abs(x.^(2*k+1)/faculteit(2*k+1))>1.0e-10), k<=10000)

De organisatie van herhaalde acties in de vorm van cycli maakt het programma eenvoudig en begrijpelijk, maar het is vaak nodig om een ​​of ander blok opdrachten uit te voeren, afhankelijk van bepaalde omstandigheden, d.w.z. gebruik algoritmevertakking.

6.3. Voorwaardelijke if-instructie

Voorwaardelijke operator als Hiermee kunt u een vertakkingsalgoritme maken voor het uitvoeren van opdrachten, waarin, wanneer aan bepaalde voorwaarden wordt voldaan, het overeenkomstige blok MatLab-operatoren of opdrachten wordt uitgevoerd.

De if-instructie kan in zijn eenvoudige vorm worden gebruikt om een ​​blok opdrachten uit te voeren wanneer aan een bepaalde voorwaarde is voldaan, of in een if-elseif-else-constructie om vertakkingsalgoritmen te schrijven.
Stel dat we de uitdrukking moeten evalueren. Stel dat u een berekening uitvoert in het domein van de reële getallen en een waarschuwing wilt weergeven dat het resultaat een complex getal is. Voordat u de functie berekent, moet u de waarde van het argument x controleren en een waarschuwing weergeven in het opdrachtvenster als de modulus van x niet groter is dan één. Hier moet u een voorwaardelijke if-instructie gebruiken, waarvan het gebruik er in het eenvoudigste geval als volgt uitziet:

als voorwaarde
MatLab-opdrachten
einde

Als aan de voorwaarde is voldaan, worden de MatLab-opdrachten tussen if en end geïmplementeerd, en als niet aan de voorwaarde wordt voldaan, vindt de overgang naar de opdrachten na end plaats. Bij het schrijven van een voorwaarde worden de bewerkingen uit de tabel gebruikt. 1.

De bestandsfunctie die de waarde van het argument controleert, wordt weergegeven in de volgende lijst. Het waarschuwingscommando wordt gebruikt om een ​​waarschuwing in het opdrachtvenster weer te geven.

Lijst van de Rfun-bestandsfunctie die de waarde van een argument controleert

functie f = Rfun(x)
% berekent sqrt(x^2-1)
% drukt een waarschuwing af als het resultaat complex is
% gebruik y = Rfun(x)

% argumentcontrole
als buikspieren(x)<1
waarschuwing("complex resultaat")
einde
% functie-evaluatie
f = sqrt(x^2-1);

Het aanroepen van Rfun vanuit een argument kleiner dan één zal resulteren in een waarschuwingsbericht dat wordt weergegeven in het opdrachtvenster:

>> y = Rfun(0,2)
het resultaat is complex
j=
0 + 0,97979589711327i

De Rfun-bestandsfunctie waarschuwt alleen dat de waarde ervan complex is, en alle berekeningen ermee gaan door. Als het complexe resultaat een rekenfout betekent, moet u stoppen met het uitvoeren van de functie met fout commando in plaats van te waarschuwen.

6.4. Filiaalexploitant if-elseif-else

Over het algemeen ziet de toepassing van de if-elseif-else-filiaaloperator er als volgt uit:

als voorwaarde 1
MatLab-opdrachten
elseif-voorwaarde 2
MatLab-opdrachten
elseif-voorwaarde 3
MatLab-opdrachten
. . . . . . . . . . .
elseif voorwaarde N
MatLab-opdrachten
anders
MatLab-opdrachten
einde

Afhankelijk van de implementatie van een of andere van N voorwaarden, wordt de corresponderende tak van het programma uitgevoerd als geen van de N voorwaarden, waarna de MatLab-opdrachten die na else zijn geplaatst, worden geïmplementeerd. Na het uitvoeren van een van de vertakkingen vertrekt de operator. Er kunnen zoveel takken zijn als je wilt, of slechts twee. In het geval van twee vertakkingen wordt de trailing else gebruikt en wordt de elseif overgeslagen. De verklaring moet altijd eindigen met end.
Een voorbeeld van het gebruik van de if-elseif-else-instructie wordt gegeven in de volgende lijst.

functie ifdem(a)
% voorbeeld van het gebruik van de if-elseif-else-instructie

als (een == 0)
waarschuwing("a is gelijk aan nul")
andersals a == 1
waarschuwing("a is gelijk aan één")
andersals a == 2
waarschuwing("a is gelijk aan twee")
andersals a >= 3
waarschuwing("a, groter dan of gelijk aan drie")
anders
waarschuwing("a is minder dan drie, en niet gelijk aan nul, één, twee")
einde

6.5. Filiaalexploitant schakelaar

Een switch-instructie kan worden gebruikt om meervoudige selectie of vertakking uit te voeren . Het is een alternatief voor de if-elseif-else-instructie. Over het algemeen ziet het gebruik van een switchoperator er als volgt uit:

switch switch_expressie
casuswaarde 1
MatLab-opdrachten
casuswaarde 2
MatLab-opdrachten
. . . . . . . . . . .
zaakwaarde N
MatLab-opdrachten
geval (waarde N+1, waarde N+2, ...)
MatLab-opdrachten
. . . . . . . . . . . .
geval (waarde NM+1, waarde NM+2,…)
anders
MatLab-opdrachten
einde

IN gegeven exploitant Eerst wordt de waarde van de switch_expression berekend (dit kan een scalaire numerieke waarde of een tekenreeks zijn). Deze waarde wordt vervolgens vergeleken met de waarden: waarde 1, waarde 2, ..., waarde N, waarde N+1, waarde N+2, ..., waarde NM+1, waarde NM+2, ... ( Dit kan ook numeriek of string zijn). Als er een match wordt gevonden, worden de MatLab-opdrachten na het overeenkomstige case-sleutelwoord uitgevoerd. Anders worden de MatLab-opdrachten tussen de sleutelwoorden else en end uitgevoerd.

Er kan een willekeurig aantal regels met het trefwoord hoofdlettergebruik zijn, maar anders mag er slechts één regel met het trefwoord zijn.

Na het uitvoeren van een van de vertakkingen wordt de schakelaar afgesloten en worden de in andere gevallen opgegeven waarden niet gecontroleerd.

Het gebruik van een schakelaar wordt geïllustreerd aan de hand van het volgende voorbeeld:

functie demschakelaar(x)
a = 10/5 + x
schakelaar een
geval -1
waarschuwing("a = -1")
geval 0
waarschuwing("a = 0")
geval 1
waarschuwing("a = 1")
geval (2, 3, 4)
waarschuwing("a is gelijk aan 2 of 3 of 4")
anders
waarschuwing("a is niet gelijk aan -1, 0, 1, 2, 3, 4")
einde

>>x=-4
demschakelaar(x)
een =
1
waarschuwing: a = 1
>>x=1
demschakelaar(x)
een =
6
waarschuwing: a is niet gelijk aan -1, 0, 1, 2, 3, 4

6.6. Operator van lusonderbreking pauze

Bij het organiseren van cyclische berekeningen moet ervoor worden gezorgd dat er geen fouten optreden binnen de lus. Stel dat u bijvoorbeeld een array x krijgt die uit gehele getallen bestaat, en u wilt deze genereren nieuwe reeks y volgens de regel y(i) = x(i+1)/x(i). Uiteraard kan het probleem worden opgelost met behulp van een for-lus. Maar als een van de elementen van de oorspronkelijke array nul is, zal deling resulteren in inf, en daaropvolgende berekeningen kunnen nutteloos zijn. Deze situatie kan worden voorkomen door de lus te verlaten als de huidige waarde van x(i) nul is. Het volgende programmafragment demonstreert het gebruik van de break-instructie om een ​​lus te onderbreken:

voor x = 1:20
z = x-8;
als z==0
pauze
einde
y = x/z
einde

Zodra de variabele z 0 wordt, wordt de lus beëindigd.

Met de break-instructie kunt u de uitvoering vroegtijdig beëindigen voor lussen en terwijl. Buiten deze lussen werkt de break-instructie niet.

Wanneer de break-instructie in een geneste lus wordt gebruikt, verlaat deze alleen de binnenste lus.

Scripts

Naast het werken op de opdrachtregel is er nog een andere manier om opdrachten uit te voeren. Dit is programma's schrijven.

Script is een reeks MATLAB-opdrachten geschreven in een bestand met de extensie “.m”. Dit zijn gewone tekstbestanden. U kunt elke teksteditor gebruiken om ze te schrijven.

Om een ​​script te maken, is het over het algemeen voldoende om een ​​gewone teksteditor bij de hand te hebben. We zullen de editor gebruiken die in de MATLAB-omgeving is ingebouwd. Gebruik de knop Nieuw script in de linkerbovenhoek om een ​​nieuw script te maken. Nadat u op deze knop heeft geklikt, verschijnt er een venster teksteditor(Figuur 5).

Figuur 5. MATLAB-code-editor Laten we een klein programma maken:

fprintf("Hallo wereld!\n")

Nu moet je dit script opslaan, hiervoor klik je op de knop “Opslaan” aan de linkerkant bovenste hoek, waarna MATLAB zal aanbieden om het in de huidige map ("Huidige map") op te slaan. Laten we het script de naam "Example1.m" geven en het opslaan. Het is raadzaam om het script in de huidige map op te slaan, zodat MATLAB zoekt naar scripts die kunnen worden uitgevoerd

in mappen die worden vermeld in de interne MATLAB-padvariabele. Deze lijst bevat ook de huidige map, weergegeven in de MATLAB-omgeving aan de rechterkant in een speciaal zwevend gebied. Standaard wordt het script in de huidige map opgeslagen, zodat u het meteen kunt oproepen. U kunt het script uitvoeren door de naam (de naam van het m-bestand waarin het is opgeslagen) in de opdrachtregel in te voeren en op "Enter" of de knop "Uitvoeren" in de code-editor te drukken. In beide gevallen wordt het opdrachtvenster weergegeven volgende uitvoer:

>> Voorbeeld1 Hallo wereld!

Laten we naar een ander voorbeeld kijken. Er is een script:

x = 0:0,02:2*pi; a = 0,3;

y = a * sin(x) + b * cos(x); plot(x, y)

Laten we het opslaan in het bestand Voorbeeld2.m en het uitvoeren. Als gevolg hiervan zal MATLAB de grafiek van de functie y = a sin(x)+ b cos(x) berekenen en weergeven.

We merken ook op dat na het uitvoeren van het script de variabelen x, a, b en y in het venster “Werkruimte” verschenen. Om uit te leggen waarom dit gebeurde, kijken we naar het zeer belangrijke concept in MATLAB van een werkruimte.

Werkruimte in MATLAB

De MATLAB-werkruimte is het geheugengebied waarin de systeemvariabelen. Er zijn twee soorten werkruimten in MATLAB:

basiswerkruimte - basiswerkruimte;

functiewerkruimte - functiewerkruimte.

Alle variabelen in een werkruimte bestaan ​​in de werkruimte vanaf het moment dat ze worden gedeclareerd tijdens het werken met de werkruimte totdat ze expliciet worden verwijderd met de opdracht clear of tot het einde van de levensduur van de werkruimte, zoals het sluiten van MATLAB voor de basiswerkruimte.

Wanneer het script wordt uitgevoerd, wordt er geen nieuw bestand gemaakt werkgebied, maar werkt met de werkruimte van waaruit deze werd aangeroepen.

Wanneer we een script aanroepen vanuit het opdrachtvenster, werkt het met de basiswerkruimte, dus alle variabelen die we hebben gemaakt voordat we het script aanroepen, zijn ervoor beschikbaar. Als het script meer variabelen aanmaakt, blijven deze daarna beschikbaar

de voltooiing ervan.

Opmerkingen

Goede toon schriftelijk programmacode wordt beschouwd als commentaar op de code die u schrijft. Opmerkingen hebben op geen enkele wijze invloed op de werking van het programma en dienen ter aanvulling van de informatie. Opmerkingen helpen andere mensen uw algoritme te begrijpen en helpen u de essentie te herinneren van wat u hebt geschreven na een bepaalde periode waarin u al bent vergeten wat u hebt geprogrammeerd. MATLAB gebruikt het symbool "%" om het begin van een opmerking aan te geven.

% Gelijkmatig verdeeld genereren willekeurige getallen

% Berekening van de wiskundige verwachting van gegenereerde getallen

% Gegevens weergeven in een grafiek

% 50 willekeurige getallen

% Genereer en wijs een willekeurige vector toe

waarden van de variabele r

% Geef de gegenereerde vector weer in de grafiek

% Teken een lijn

tot (0, m) en (n, m)

% Bereken het rekenkundig gemiddelde van de waarden

vector r

verhaallijn(,)

title("Gemiddelde van willekeurige uniforme gegevens") % Titel van diagram

Functies

Een andere variëteit MATLAB-programma's- functies. In tegenstelling tot scripts creëert een functie, wanneer hij wordt aangeroepen, een nieuwe werkruimte, zodat variabelen die buiten de code worden gedeclareerd, niet zichtbaar zijn binnen de functie. Daarom worden invoer- en uitvoerparameters gebruikt om de functie met externe code te communiceren. Laten we eens kijken naar de algemene syntaxis voor het declareren van een functie:

functie = functienaam(x1,...,xM) operator_1 operator_2

operator_n einde

De functie is opgenomen in een apart m-bestand.

Een functie begint met het trefwoord functie gevolgd door vierkant

namen van uitvoervariabelen worden gescheiden door komma's tussen haakjes. Vervolgens komt het teken “=” en de naam van de functie. De functienaam volgt dezelfde regels als de namen van variabelen. We merken ook op dat de naam van de functie moet overeenkomen met de naam van het bestand waarin deze is gedefinieerd. Na de functienaam worden de namen van de invoerparameters gescheiden door komma's tussen haakjes.

De volgende regels bevatten de hoofdtekst van de functie (alle geldige MATLAB-expressies).

De functie eindigt met het trefwoord end, maar dit is optioneel en kan worden weggelaten.

Houd er ook rekening mee dat als een functie slechts één parameter retourneert, deze niet tussen vierkante haakjes hoeft te staan, bijvoorbeeld:

functie s = triaArea(a, b)

% het berekenen van de oppervlakte van een rechthoekige driehoek

% a, b - benen van de driehoek

s = een * b / 2; einde

Als een functie helemaal geen parameters retourneert, dan onmiddellijk na het functiesleutelwoord luidt de naam functies, bijvoorbeeld:

functie hallowereld()

% voorbeeld van een functie zonder invoer- en uitvoerparameters disp("Hallo wereld!");

De volgende syntaxis wordt gebruikt om een ​​functie aan te roepen:

Functienaam(z1,...,zM)

waarbij k1, ..., kN de variabelen zijn waar de uitvoerwaarden van de functie zullen worden geschreven, az1,..., zM de argumenten van de functie zijn.

Als de functie slechts één parameter retourneert, kunnen de vierkante haakjes worden weggelaten, bijvoorbeeld:

s = triaArea(1,2)

Werkelijke en formele parameters van de functie

Het is belangrijk om onderscheid te maken tussen feitelijke en formele parameters van een functie:

werkelijke parameter - het argument dat aan de functie wordt doorgegeven wanneer deze wordt aangeroepen;

formele parameter - een argument dat wordt opgegeven bij het declareren of definiëren van een functie.

Laten we het uitleggen dit verschil door voorbeeld.

De MATLAB-omgeving kent verschillende werkingsmodi. Het eenvoudigste is om opdrachten rechtstreeks in het opdrachtvenster in te voeren ( Commandovenster).

MATLAB-opdrachtvenster

Als het niet zichtbaar is in de programma-interface, open het dan. U kunt het opdrachtvenster vinden via het menu Bureaublad Commandovenster.

Laten we bijvoorbeeld de opdrachten één voor één in dit venster invoeren:

X=; y = sqrt(x); plot(y);

en druk op de Enter-toets ( Binnenkomen). Het programma maakt onmiddellijk een variabele X, creëert een variabele Y, berekent de waarden ervan voor een bepaalde functie en plot deze vervolgens.

Met behulp van de pijlen omhoog en omlaag op het toetsenbord in het opdrachtvenster kunnen we schakelen tussen de ingevoerde opdrachten, deze onmiddellijk wijzigen en door op te drukken Binnenkomen verzenden naar de MATLAB-omgeving voor uitvoering. Met de pijlen naar links en naar rechts kunt u door de ingevoerde opdracht navigeren en deze bewerken. Als er een puntkomma aan het einde van de opdracht staat, wordt het resultaat berekend, maar niet weergegeven in het opdrachtvenster; anders wordt het resultaat van de opdracht onmiddellijk weergegeven. Voor elke functie in de MATLAB-omgeving is er gedetailleerde ingebouwde hulp. Bijvoorbeeld om hulp te krijgen bij een opdracht verhaallijn, selecteer deze opdracht, klik er met de rechtermuisknop op en selecteer in het contextmenu dat wordt geopend Hulp bij selectie of druk op de toets F1.

Hulp krijgen bij MATLAB-opdrachten

Comfortabel? Ongetwijfeld. En nog belangrijker: heel snel. Al deze acties duren enkele seconden.

Maar wat als je meer nodig hebt? complexe organisatie ploegen? Als u bepaalde opdrachten cyclisch wilt uitvoeren? Het één voor één handmatig invoeren van opdrachten en vervolgens langdurig door de geschiedenis zoeken kan behoorlijk vervelend zijn.

2 Samenwerken met de redacteur in MATLAB-omgeving

Om het leven van een wetenschapper, ingenieur of student gemakkelijker te maken, is er een editorvenster ( Editor). Laten we het editorvenster openen via het menu Bureaublad Editor.

In het editorvenster kunt u nieuwe variabelen maken, grafieken bouwen, programma's (scripts) schrijven, componenten maken voor uitwisseling met andere omgevingen, applicaties maken met gebruikersinterface(GUI), en bestaande bewerken.

Wij binnen op dit moment geïnteresseerd in het schrijven van een programma met functies voor hergebruiken in de toekomst. Dus laten we naar het menu gaan Bestand bewerker en selecteer Nieuw M-bestand.


M-bestanden in de MATLAB-omgeving zijn bestanden die programmatekst (scripts) of door de gebruiker gedefinieerde functies bevatten.

Laten we in de editor schrijven eenvoudige functie teken_plot:

functie teken_plot(x)% Stel de eerste functie in: y = log(x); % We bouwen de eerste grafiek: subplot(1, 2, 1), plot(x, y); % Stel de tweede functie in: y = sqrt(x); % We bouwen de tweede grafiek: subplot(1, 2, 2), plot(x, y);

Ga terug naar het opdrachtvenster.

U kunt uw opdrachtgeschiedenis wissen onnodige informatie heeft ons niet afgeleid. Om dit te doen, klikt u met de rechtermuisknop op het opdrachtinvoerveld en selecteert u het item in het contextmenu dat wordt geopend Wis het opdrachtvenster.

We hebben nog steeds variabele X uit het vorige experiment; we hebben deze niet gewijzigd of verwijderd. Daarom kunt u onmiddellijk het opdrachtvenster openen:

Tekenplot(x);

U zult zien dat MATLAB onze functie uit het bestand zal lezen en uitvoeren, waarbij een grafiek wordt getekend.


Als MATLAB een melding geeft bij het uitvoeren van een programma, Ongedefinieerde functie of methode "draw_plot" voor invoerargumenten van het type "double".(dat wil zeggen dat er een onbekende functie wordt aangeroepen), klik op de groene pijlknop in het editorvenster ( Loop) of via het editormenu: Foutopsporing Voer draw_plot.m uit. MATLAB zal melden dat de map met ons programmabestand (draw_plot.m) niet de werkmap is. Klik op de knop in het dialoogvenster Toevoegen aan pad zodat MATLAB de map aan het werkpad toevoegt en ons M-bestand kan gebruiken. Hierna zou het programma normaal moeten starten.