V.G. Potemkin. Inleiding tot MATLAB. Eenvoudige variabelen en basisgegevenstypen in MatLab

3.3. Uitvoering van M-functies. Argumenten lijsten. Soorten argumenten. Gegevenstypen

De M-functie kan worden aangeroepen vanaf de MATLAB-opdrachtregel of vanuit andere M-bestanden, waarbij u ervoor moet zorgen dat u alle benodigde attributen specificeert - invoerargumenten tussen haakjes, uitvoerargumenten tussen vierkante haken.

Een naam toekennen. Wanneer een nieuwe naam verschijnt, controleert MATLAB:

  1. Of de nieuwe naam een ​​variabelenaam is.
  2. Of deze naam de naam is van een subfunctie, dat wil zeggen een functie die zich in hetzelfde M-bestand bevindt en wordt aangeroepen.
  3. Of het nu de naam is van een privéfunctie die zich in de privédirectory bevindt. Deze directory is alleen toegankelijk voor M-bestanden die een niveau hoger liggen.
  4. Is het de naam van een functie in het MATLAB-pad. In dit geval gebruikt het systeem het M-bestand dat als eerste in het toegangspad verschijnt.

Als er dubbele namen zijn, gebruikt MATLAB de voornaam volgens de bovenstaande hiërarchie met 4 niveaus. Opgemerkt moet worden dat het in MATLAB 5 is toegestaan ​​om een ​​functie opnieuw te definiëren volgens de regels van objectgeoriënteerd programmeren.

Functie oproep... Wanneer een M-functie wordt aangeroepen, vertaalt MATLAB de functie naar pseudocode en laadt deze in het geheugen. Dit voorkomt herhaald parseren. De pseudocode blijft in het geheugen totdat de opdracht wissen wordt gebruikt of de sessie wordt beëindigd.

De volgende wijzigingen aan de opdracht wissen zijn toegestaan:

Deze opdracht ontleedt het M-bestand gemiddelde.m en slaat de resulterende pseudocode op in een bestand met de naam gemiddelde.p. Dit voorkomt opnieuw parseren tijdens een nieuwe sessie. Omdat het parseren erg snel is, heeft het pcode-commando weinig effect op de uitvoeringssnelheid.
Het gebruik van een P-code is in twee gevallen aan te raden:

  • wanneer het nodig is om een ​​groot aantal M-bestanden te ontleden die nodig zijn om grafische objecten weer te geven in toepassingen die verband houden met de ontwikkeling van een grafische gebruikersinterface; in dit geval zorgt het gebruik van de P-code voor een flinke versnelling;
  • wanneer de gebruiker de algoritmen die in het M-bestand zijn geïmplementeerd, wil verbergen.

Regels voor het doorgeven van argumenten... Vanuit het oogpunt van een programmeur geeft MATLAB een argument door op basis van zijn waarde. In feite worden alleen die argumenten doorgegeven door waarde die veranderen wanneer deze functie wordt uitgevoerd. Als de functie de waarde van het argument niet verandert, maar het alleen gebruikt voor berekeningen, dan wordt het argument doorgegeven door middel van verwijzing, waardoor het geheugengebruik kan worden geoptimaliseerd.

Functie werkgebieden. Elke M-functie krijgt een extra geheugengebied toegewezen dat niet overlapt met het MATLAB-werkgebied. Dit gebied wordt het werkgebied van de functie genoemd. Elke functie heeft zijn eigen werkgebied.

Wanneer u met het MATLAB-systeem werkt, hebt u alleen toegang tot variabelen die zich in de werkruimte van het systeem of in de werkruimte van een functie bevinden. Als een variabele globaal wordt gedeclareerd, kan deze worden beschouwd als behorend tot meerdere werkgebieden.

Het aantal argumenten controleren. Met de functies nargin en nargout kunt u het aantal invoer- en uitvoerargumenten voor de aangeroepen functie bepalen. Deze informatie kan later worden gebruikt in voorwaardelijke uitspraken om het verloop van berekeningen te wijzigen.

Voorbeeld:

functie c = testarg1 (a, b)
als (nargin == 1)
c = a. ^ 2;
elseif (nargin == 2)
c = + b;
einde

Gegeven een enkel invoerargument, berekent de functie het kwadraat van de invoervariabele; wanneer twee argumenten worden gegeven, wordt een optelbewerking uitgevoerd.

Laten we een complexer voorbeeld bekijken - toewijzing van een deel van een tekenreeks vóór het scheidingsteken, dat kan worden gebruikt als een spatie of een ander teken. Bij het specificeren van één invoerargument, moet de functie een deel van de tekenreeks selecteren vóór het scheidingsteken, dat standaard wordt gebruikt met een spatie; alle spaties aan het begin van de regel worden verwijderd. Als er twee argumenten zijn opgegeven, moet het tweede argument een scheidingsteken zijn.

Deze functie is geformatteerd als de strtok M-functie, die zich in de strfun-directory bevindt.

De functie moet ten minste één invoerargument hebben

Als er één invoerargument is, wordt een spatie als scheidingsteken gebruikt.

Bepaal het begin van de geselecteerde subtekenreeks

Bepaal het einde van de geselecteerde subtekenreeks

Toewijzing van de rest van de lijn

Merk op dat de volgorde van de argumenten in de uitvoerlijst belangrijk is. Als er geen uitvoerargument is opgegeven bij het aanroepen van de M-functie, wordt standaard het eerste argument weergegeven. Voor de vorming en uitvoer van volgende argumenten is het nodig om een ​​geschikte aanroep naar de M-functie te organiseren.

Argumenten lijsten.

Met de functies varargin en varargout kunt u een willekeurig aantal invoer- en uitvoerargumenten doorgeven. Het MATLAB-systeem verpakt alle opgegeven invoer- en uitvoerargumenten in een celarray. Elke cel kan elk type en elke hoeveelheid gegevens bevatten.

Voorbeeld
De testvar-functie accepteert een willekeurig aantal vectoren met twee elementen als invoer en geeft de lijnen weer die ze verbinden.

functie testvar (varargin)

voor i = 1: lengte (varargin)
x (i) = varargin (i) (1);
y (i) = varargin (i) (2);
einde

xmin = min (0, min (x));
ymin = min (0, min (y));
as ()
plot (x, y)

De testvar-functie kan dus werken op invoerlijsten van verschillende lengtes.

Voorbeeld:

testvar (,,,,,)
testvar ([- 1 0],,,)

Vorming van de invoerarray varargin. Aangezien de varargin-lijst de invoerargumenten in een celarray opslaat, moeten de celindices worden gebruikt om de gegevens op te halen. De celindex heeft twee componenten:
- index tussen accolades;
- index tussen haakjes.

Voorbeeld:

y (i) = varargin (i) (2);
Hier geeft de index tussen accolades (i) het adres van de i-de cel van de varargin-array aan, en de index tussen haakjes (2) geeft het tweede element in de cel aan.

De uitvoerarray varargout vormen... Met een willekeurig aantal uitvoerargumenten moeten ze worden verpakt in een varargout-celarray. Gebruik de nargout-functie om het aantal uitvoerargumenten voor een functie te bepalen.

Voorbeeld
De volgende functie gebruikt een array met twee kolommen als invoer, waarbij de eerste kolom de reeks x-coördinaatwaarden is en de tweede de reeks y-coördinaatwaarden is. De functie splitst de array in afzonderlijke vectoren, die als invoer aan de testvar-functie kunnen worden doorgegeven.

functie = testvar2 (arrayin)
voor i = 1: nagot
varargout (i) = arrayin (i, :);
einde

De toewijzingsinstructie in de for-lus gebruikt de celarraytoewijzingssyntaxis. De linkerkant van de toewijzingsoperator gebruikt accolades om aan te geven dat gegevens als een arraytekenreeks aan een cel zijn toegewezen.

De volgende operatoren kunnen worden gebruikt om de functie testvar2 aan te roepen:

een = ";
= testvar2 (a)

p1 = 16
p2 = 2 7
p3 = 3 8
p4 = 4 9
p5 = 5 0

Celmatrices gebruiken in argumentlijsten... De varargin- en varargout-argumenten moeten de laatste zijn in hun respectievelijke argumentlijsten. Bij het aanroepen van een functie moeten de argumenten voorafgaand aan varargout binnen de functie worden geëvalueerd.

Voorbeeld
De functiekoppen hieronder tonen het juiste gebruik van varargin- en varargout-lijsten:

functie = voorbeeld1 (a, b, varargin)
functie = voorbeeld2 (x1, y1, x2, y2, vlag)

Variabele soorten.

Lokale en globale variabelen... Het gebruik van variabelen in een M-bestand verschilt niet van het gebruik van variabelen op de opdrachtregel, namelijk:

  • variabelen hoeven niet te worden gedeclareerd; voordat u een waarde aan een variabele toewijst, moet u ervoor zorgen dat aan alle variabelen aan de rechterkant waarden zijn toegewezen;
  • elke toewijzingsbewerking creëert, indien nodig, een variabele of wijzigt de waarde van een bestaande variabele;
  • variabelenamen beginnen met een letter gevolgd door een willekeurig aantal letters, cijfers en underscores; MATLAB maakt onderscheid tussen hoofdletters en kleine letters;
  • variabelenaam mag niet langer zijn dan 31 tekens. Om precies te zijn, de naam kan langer zijn, maar MATLAB houdt alleen rekening met de eerste 31 tekens.

Elke M-functie, gedefinieerd als een M-bestand, heeft typisch zijn eigen lokale variabelen, die verschillen van de variabelen van andere functies en variabelen van het werkgebied. Als echter meerdere functies en werkruimte een variabele als globaal verklaren, gebruiken ze allemaal een enkele kopie van die variabele. Elke toewijzing aan deze variabele is van toepassing op alle functies waar deze globaal is gedeclareerd.

Voorbeeld.
Laten we zeggen dat het nodig is om de invloed van de coëfficiënten a en b te bestuderen voor het roofdier-prooimodel beschreven door de Lotke-Volterra-vergelijkingen:

Laten we een M-bestand lotka.m maken:

functie yp = lotka (t, y)
% LOTKA Lotke-Volterra-vergelijkingen voor het roofdier-prooimodel

wereldwijde ALPHA BTA
ja =;

Voer vervolgens via de opdrachtregel de operators in:

wereldwijde ALPHA BTA
ALPHA = 0,01;
BETA = 0,02;
= ode23 ("lotka2" ,,);
plot (t, y)

Het globale commando verklaart de variabelen ALPHA en BETA als globaal en daarom beschikbaar in de lotka.m-functie. Ze kunnen dus vanaf de opdrachtregel worden gewijzigd en nieuwe oplossingen worden verkregen zonder het lotka.m M-bestand te bewerken.

Om met globale variabelen te werken, moet u:

  • declareer een variabele als globaal in elke M-functie die deze variabele nodig heeft. Om een ​​werkruimtevariabele globaal te laten zijn, moet u deze vanaf de opdrachtregel als globaal declareren;
  • gebruik in elke functie het globale commando voordat de variabele voor het eerst voorkomt; het wordt aanbevolen om het globale commando aan het begin van het M-bestand te gebruiken.

Namen van globale variabelen zijn over het algemeen langer en beschrijvender dan namen van lokale variabelen en worden vaak met een hoofdletter geschreven. Dit is optioneel, maar wordt aanbevolen om de leesbaarheid in MATLAB-code te behouden en de kans te verkleinen dat per ongeluk een globale variabele wordt overschreven.

Speciale variabelen. Sommige M-functies retourneren speciale variabelen die belangrijk zijn bij het werken in de MATLAB-omgeving:

ans Het laatste resultaat; als er geen uitvoervariabele is opgegeven, gebruikt MATLAB de variabele ans.
eps Precisie met drijvende komma; wordt bepaald door de lengte van de mantisse en voor PC eps = 2.220446049250313e-016
realmax Het maximale getal met drijvende komma dat op een computer kan worden weergegeven; voor pc realmax = 1.797693134862316e + 308.
realmin Het kleinste getal met drijvende komma dat op een computer kan worden weergegeven; voor pc realmin = 2.225073858507202e-308.
pi Een speciale variabele voor het getal p: pi = 3.141592653589793e + 000.
ik, j Speciale variabelen om de denkbeeldige eenheid aan te duiden
info Een speciale variabele om het oneindigheidssymbool aan te duiden?
NaN Een speciale variabele om een ​​ongedefinieerde waarde aan te duiden - het resultaat van bewerkingen zoals: 0/0, inf / inf.
computer Een speciale variabele om het type computer aan te geven dat wordt gebruikt; voor pc - PCWIN.
flops Een speciale variabele om het aantal drijvende-kommabewerkingen aan te geven.
versie Een speciale variabele om het versienummer van het MATLAB-systeem in gebruik op te slaan.

De bijbehorende M-functies die deze speciale variabelen genereren, bevinden zich in de elmat-directory en worden ondersteund door een online-help.

Gegevens typen.

MATLAB definieert zes basisgegevenstypen, die elk een multidimensionale array zijn. De zes klassen zijn double, char, sparse, uint8, cell en struct. De tweedimensionale versies van deze arrays worden matrices genoemd, waarnaar MATLAB zijn naam ontleent aan MATRIX LAB.

Het diagram van het behoren van een of ander object van het MATLAB-systeem tot een van de klassen is als volgt (Fig. 3.1):

Meestal heb je waarschijnlijk maar met twee van deze datatypes te maken: een array van doubles en een array van karakters (char), of alleen een string. Dit komt omdat alle berekeningen in MATLAB dubbele precisie zijn en de meeste functies werken op arrays of strings met dubbele precisie.

Andere datatypes zijn bedoeld voor speciale toepassingen als werken met schaarse matrices (sparse), beeldverwerking (uint8), werken met grote arrays (cells en struct).

Het variabeletype kan niet worden ingesteld op numeriek of matrix. Deze typen worden virtuele typen genoemd en dienen alleen om variabelen met gemeenschappelijke kenmerken te groeperen.

Het uint8-type is voor het efficiënt opslaan van gegevens in het geheugen. Alleen basisbewerkingen voor indexeren en vergroten/verkleinen kunnen worden toegepast op dit gegevenstype, maar er kunnen geen wiskundige bewerkingen worden uitgevoerd. Om dit te doen, moeten dergelijke arrays worden geconverteerd naar dubbel type.

Uw eigen typen maken en methoden toevoegen voor ingebouwde typen. De onderstaande tabel bevat het zevende gegevenstype, UserObject. Met MATLAB kunt u uw eigen gegevenstypen maken en ermee werken naar analogie met ingebouwde typen.

Voor ingebouwde gegevenstypen kunt u een methode op dezelfde manier overschrijven als voor een object. Als u bijvoorbeeld een sorteerbewerking wilt specificeren voor een array van het type uint8, moet u een methode maken (sort.m of sort.mex) en deze in de speciale @ uint8-directory plaatsen.

De volgende tabel beschrijft de gegevenstypen in meer detail.

Klas Voorbeeld Beschrijving
Dubbele [ 1 2; 3 4]
5 + 6i
Numerieke matrix dubbele precisie (dit is het meest voorkomende type variabele in MATLAB
Char "Hallo" Reeks tekens(elk teken is 16 bits lang), vaak een string genoemd.
schaars Speye (5) Spaarmatrix dubbele precisie (alleen 2D). De schaarse structuur wordt gebruikt om matrices op te slaan met een klein aantal niet-nul elementen, waardoor het mogelijk is om slechts een klein deel van het geheugen te gebruiken dat nodig is om de volledige matrix op te slaan. Sparse matrices vereisen het gebruik van speciale methoden voor het oplossen van problemen.
Cel (17 "hallo" oog (2)) celarray... De elementen van deze array bevatten andere arrays. Met celarrays kunt u gerelateerde gegevens, mogelijk van verschillende groottes, in één enkele structuur combineren.
structuur A.dag = 12; A.kleur = "Rood"; A.mat = magie (3); Reeks records... Het bevat de veldnamen. De velden zelf kunnen arrays bevatten. Net als arrays van cellen, combineren arrays van records gerelateerde gegevens en informatie erover.
Uint8 Uint8 (magie (3)) Een array van 8-bits gehele getallen zonder teken... Hiermee kunt u gehele getallen opslaan in het bereik van 0 tot 255 in 1/8 van het geheugen dat nodig is voor een array met dubbele precisie. Er zijn geen wiskundige bewerkingen gedefinieerd voor deze arrays.
GebruikerObject inline ("zonde (x)") Door de gebruiker gedefinieerd gegevenstype.

Beschrijving van het diagram:... Verbindingslijnen in het diagram (Fig. 3.1) bepalen of een bepaald datatype tot een of meer klassen behoort.

Voorbeeld
Een schaarse matrix heeft ook dubbele en numerieke typen. Operators
isa (S ", schaars")
isa (S ", dubbel")
isa (S ", numeriek")

retourneer de waarden 1 (true), dat wil zeggen, S is een numerieke schaarse matrix met dubbele precisie.

Merk op dat het matrixtype bovenaan de grafiek staat. Dit betekent dat alle MATLAB-gegevens arrays zijn.

Elk gegevenstype kan zijn eigen functies en verwerkingsoperators, of met andere woorden methoden, toegewezen krijgen. Onderliggende gegevenstypen in het diagram onder het bovenliggende type worden ook ondersteund door de bovenliggende methoden. Daarom wordt een array van het type double ondersteund door de methoden die worden gebruikt voor het type numeriek.

In de tabel staan ​​enkele van deze methoden:

Klas Methode
Array Berekening van grootte, lengte, afmeting (ndims), aaneenschakeling van arrays (), transponeren, multidimensionale indexering (subsindex), herdefinitie (reshape) en permute-afmetingen van een multidimensionale array.
celarray Indexeren met accolades (e1,…, en) en de lijstitems scheiden met komma's.
String Char Tekenreeksfuncties (strcmp, lager), automatische conversie naar dubbel typen om methoden van klasse dubbel toe te passen.
Dubbele Rekenkundige en logische bewerkingen, wiskundige functies, functies uit matrices.
Numeriek Zoeken (vinden), verwerking van complexe getallen (reëel, imag), vorming van vectoren, selectie van rijen, kolommen, array-subblokken, scalaire expansie.
schaars Bewerkingen op schaarse matrices.
Array van Struct-records Toegang tot de inhoud van het veld .field (het scheidingsteken van de lijstitems is een komma).
Uint8 Opslagbewerking (meestal gebruikt met RFP Image Processing Toolbox)
GebruikerObject Gebruiker gedefinieerde

Lege arrays. Vroege versies van MATLAB stonden een enkele lege 0x0-arrayvorm toe, aangeduid als. MATLAB 5 ondersteunt arrays waarin één, maar niet alle dimensies nul zijn, dat wil zeggen arrays met de afmetingen 1x0, 10x0x20 of gedefinieerd als leeg.

De vierkante haken blijven de 0x0-array vertegenwoordigen. Lege arrays van verschillende groottes kunnen worden gemaakt met behulp van de nullen, enen, rand of oogfuncties. Als u bijvoorbeeld een lege array met de grootte 0x5 wilt vormen, kunt u de toewijzingsoperator . gebruiken
E = nullen (0,5).

Het belangrijkste doel van lege arrays is dat elke bewerking die is gedefinieerd voor een array (matrix) met de grootte m × n het juiste resultaat oplevert voor het geval dat m of n gelijk is aan nul. De grootte van de array (matrix) van het resultaat moet overeenkomen met de waarde van de functie berekend op nul.

Bijvoorbeeld, de operator
C =
vereist dat arrays A en B hetzelfde aantal rijen hebben. Dus als array A m x n is en B m x p is, dan is C m x (n + p) array. Het resultaat is correct als een van de parameters m, n of p nul is.

Veel bewerkingen in MATLAB creëren een rijvector of kolomvector. In dit geval kan het resultaat een lege rijvector zijn
r = nullen (1, 0),
of een lege kolomvector
C = nullen (0, 1).

MATLAB 5 ondersteunt MATLAB 4-systeemregels voor if- en while-instructies. Een voorwaardelijke operator zoals
als A, S1, else, S0, end
voert operator S0 uit wanneer A een lege array is.

Sommige MATLAB-functies zoals sum, prod, min en max verkleinen het resultaat: als het argument een array is, is het resultaat een vector; als het argument een vector is, dan is het resultaat een scalair.

Voor deze functies worden met een lege invoerarray de volgende resultaten verkregen:
som () = 0;
prik () = 1;
maximaal () =;
min () =.

Er is een speciaal soort variabelen in MATLAB waarvan de waarde, met uitzondering van de ans variabele, niet kan worden gewijzigd. Deze variabelen worden systeemvariabelen genoemd. Ze zijn ontworpen om efficiënter te werken bij berekeningen en om berichten van het systeem weer te geven wanneer de gebruiker het probleem verkeerd heeft geformuleerd. De tabel geeft een overzicht van de systeemvariabelen die in MATLAB worden gebruikt.

MATLAB systeemvariabele notatie

Complexe getallen

In het MATLAB-systeem zijn complexe getallen, net als echte, van het dubbele type. Daarom is er geen aparte labeling nodig om het werk met complexe getallen te markeren. De opname gaat als volgt: 3 + 7i; -7,1 + 0,831E + 2 * ik; 5-3j. Het voorbeeld laat zien dat een van de letters kan worden gebruikt om de denkbeeldige eenheid aan te duiden: i of j. MATLAB gebruikt standaard letter i .

Hieronder ziet u een voorbeeld van het berekenen van de vierkantswortel van -1

>> b = vierkante (a)

Voor complexe getallen kunt u dezelfde functies gebruiken als voor reële getallen, behalve in de voor de hand liggende gevallen waarin de functie geen complex argument kan hebben. De functie rem (x, y) berekent bijvoorbeeld de rest van x gedeeld door y, dus het gebruik van een complex getal als argument resulteert in een fout:

>> een = 2 + 3 * ik;

>> rem (a, 3)

Fout bij gebruik van ==> rem

Argumenten moeten reëel zijn.

Daarnaast zijn er ook een aantal functies die alleen van toepassing zijn op complexe variabelen.

Functies van complexe variabelen

Bijvoorbeeld:

>> buikspieren (2 + 3i)

>> conj (2 + 3i)

2.000 - 3.0000i

>> isrealistisch (x)

In het laatste voorbeeld retourneerde de functie isreal het getal 0, omdat variabele x is niet geldig.

1. ELEMENTEN VAN M-TAAL MATLAB

De elementen in de M-taal die worden gebruikt om het rekenproces in MATLAB te besturen, zijn constanten, variabelen, functies, opdrachten en besturingsstructuren. Deze elementen, mogelijk in verschillende verbindingen met speciale connectoren, worden zowel op de opdrachtregel als in programma's gebruikt.

1.1. CONSTANTEN INMATLAB

Een constante in MATLAB staat voor informatie die niet verandert gedurende de gehele communicatiesessie. Constanten kunnen door de gebruiker worden gedefinieerd (door de gebruiker gedefinieerd) en door het systeem gedefinieerd (door het systeem gedefinieerd). Door de gebruiker gedefinieerde constanten worden door de gebruiker gespecificeerd en worden slechts één keer gebruikt - op het moment dat ze worden vermeld in de uitvoerbare opdrachtregel. Bijvoorbeeld 16, -38,654, -1.e-23, 1 + 2i, "Dit is een symboolconstante".

Systeemconstanten zijn permanent in het systeem gedefinieerd en hebben speciale aanduidingen waarmee ze worden aangeduid, bijvoorbeeld pi (= 3.1416), eps (= 2.2204e-016), realmin (= 2.2251e-308), realmax (= 1.7977 e + 308 ), i, j (jºi).

1.2. VARIABELEN INMATLAB

Een variabele in MATLAB wordt bepaald door de identifier, het type en de locatie in het geheugen van de computer. Om een ​​variabele in MATLAB te definiëren, moet u de identifier (naam) van de variabele selecteren (begint met een Latijnse letter, dan - Latijnse letters, cijfers, speciale tekens) en deze variabele gebruiken in de opdrachtregeloperator die de waarde van de variabele instelt (eenvoudige toewijzing, verwijzing naar enkele functies, enz.).

  1. Numerieke variabelen: gewone (reële) of complexe getallen, vectoren, matrices en multidimensionale arrays. Een reëel getal krijgt 8 bytes toegewezen, een complex - 16. Gehele getallen en reële getallen verschillen niet.

A) reële getallen

A = 2 A = 2,0 B = -143,298 C = 1,23e-2

B) complexe getallen

Q = 1 + 3i r = -4,6-7,45i S = 2 + 5j

reëel (Q) - substantiedeel van het complexe getal,

imag (Q) - denkbeeldig deel van een complex getal,

abs (Q) - absolute waarde van het ingestelde aantal,

conj (Q) - geconjugeerd complex getal,

hoek (Q) - de fasewaarde (hoek) van het complexe getal in radialen.

C) vectoren

rij vectoren

a = 1: 3: 10 b = c = linspace (13.53.5)

kolom vectoren

aa = a ’bb = cc = linspace (13.53.5)’ dd = (15:45) ’

voor vectoren met complexe componenten: als y een complexe vector is, dan is y. 'een kolomvector met dezelfde componenten, en is y' een kolomvector met componenten - vervoeg complexe getallen.

D) matrices: M (i, j) - een element van de i-de rij en de j-de kolom; M (k) is het kde element van de matrix uitgerekt tot een kolom.

A = --- een 1 2

A (2,2) (= 4) A (3) (= 2) -а A = (1 3 2 4)

A (3,4) = 10 --- а 1 2 0 0

maat (A) (=) = maat (A) (m = 3, n = 4)

A = A (:) -à rekken in een kolom - de matrix wordt een vector!

hervorm (A, 3,4) -а verandert de vector terug in een 3x4 matrix

A (,:) = -à verwijdert de 1e en laatste rij uit de matrix

A (:,) = à verwijdert alle kolommen behalve de laatste

Enkele speciale matrices:

oog (m, n) zijn enen op de hoofddiagonaal, de rest zijn nullen (oog (m) is de vierkante mxm identiteitsmatrix)

enen (m, n) - matrix van enen

nullen (m, n) - matrix van nullen

rand (m, n) - een mxn-matrix gevuld met willekeurige getallen van 0 tot 1

C = rond (1 + 100 * rand (10,10)) is een 10x10 matrix gevuld met willekeurige gehele getallen van 1 tot 100.

Eenvoudige matrixbewerkingen:

diag (A) is een vector van elementen op de hoofddiagonaal van de matrix A,

diag (diag (A)) is een vierkante diagonale matrix met diagonale elementen, zoals in A, en nullen.

triu (A) tril (A) is een matrix met bovenste of onderste delen van A, opgevuld met nullen.

  1. Symbolische variabelen

cvb = 'Moskou is de hoofdstad van Rusland'

De tekenreeks is beperkt tot enkele apostrofs (op de toets met de Russische letter "e") en wordt in kleur gemarkeerd.

Elk teken is 2 bytes en wordt behandeld als een afzonderlijk element van de tekenreeksvector. Dus als we de transponeerbewerking cvb ' instellen, krijgen we een kolomvector met 31 elementen.

U kunt symbolische variabelen vertalen naar getallen en vice versa.

Ze worden meestal gebruikt bij het weergeven van resultaten, grafieken, labels, berichten.

Controle over variabelen.

Methode 1 - in het venster Werkruimte

Methode 2 - het who-commando - geeft een lijst met variabelen die op een bepaald moment in de tijd zijn gedefinieerd.

Methode 3 - wiens commando - geeft meer volledige informatie over variabelen (Name Size Bytes Class)

Geheugen opschonen.

clear - volledige clearing van alle variabelen (of clear variabelen)

clear var1, var2,… - wissen van individuele variabelen var1, var2,….

1.3. FUNCTIES INMATLAB

Functies in MATLAB zijn programma's die een aantal veelvoorkomende bewerkingen op gegevens uitvoeren. Om deze bewerkingen uit te voeren en de vereiste resultaten te verkrijgen, volstaat het om de naam van de functie op te geven en eventueel enkele initiële gegevens op te geven. Er worden hier dus 3 concepten geassocieerd met het concept van een functie (zoals in elke andere taal): een functienaam, een invoergegevensset (varargin) en een uitvoergegevensset (varargout). Daarnaast worden de concepten van het aantal inputs (nargin) en het aantal outputs (nargout) gedefinieerd.

Functies in MATLAB zijn onderverdeeld in gebruikergedefinieerd (gedefinieerd door de gebruiker) en systeemgedefinieerd (gedefinieerd in het systeem en vereisen geen programmering). Hoe u aangepaste functies kunt maken, wordt besproken bij het overwegen van programmeerproblemen. Na het maken en debuggen verschilt de aangepaste functie niet van de systeemfunctie.

Systeemfuncties worden ingedeeld in ingebouwde en bibliotheekfuncties. Bibliotheekfuncties worden in het systeem opgeslagen in de vorm van M-taalprogramma's die zijn geschreven in bestanden met dezelfde naam als de functienaam en met de extensie * .m. De teksten van deze programma's zijn beschikbaar voor gebruikers (de \ toolbox \ matlab \ directory in de MATLAB installatielocatie). U kunt bijvoorbeeld een m-bestand openen om te bekijken met een functie voor het berekenen van de waarde van de decimale logaritme (\toolbox\matlab\elfun\log10.m). Wanneer ze worden uitgevoerd, worden de operators van deze programma's eerst vertaald in instructies van het uitvoerende systeem van de computer (geïnterpreteerd), en vervolgens worden ze uitgevoerd. Ingebouwde functies worden in gecompileerde vorm in het systeem opgeslagen, hoeven niet te worden vertaald en werken daarom sneller dan bibliotheekfuncties. De systeemdirectory voor dergelijke functies bevat bestanden met dezelfde naam als bibliotheekbestanden, maar met alleen opmerkingen over het gebruik van functies. U kunt bijvoorbeeld een bestand openen dat verband houdt met de exponentfunctie (\toolbox\matlab\elfun\exp.m).

1.4. UITDRUKKINGEN INMATLAB

Een uitdrukking is een taalconstructie die taalelementen (constanten, variabelen, functies) bevat die aan elkaar zijn gekoppeld met behulp van verbindende tekens die de bewerkingen specificeren die worden uitgevoerd bij het berekenen van de waarde van een uitdrukking. Er zijn numerieke (Nexpression), symbolische (Cexpression) en logische (Lexpression) expressies, afhankelijk van het resultaat dat wordt verkregen na het uitvoeren van de bewerkingen die in de expressie zijn opgenomen.

Net als andere programmeertalen heeft MATLAB de mogelijkheid om met variabelen te werken. Variabelen zijn benoemde objecten die een soort gegevens opslaan. Variabelen kunnen numeriek, vector of symbolisch zijn, afhankelijk van het type gegevens dat ze opslaan. De variabele heeft een naam genaamd identificatie... De gegevens kunnen van waarde veranderen, de identifier blijft hetzelfde.

Laat u bij het kiezen van een naam voor een variabele leiden door de volgende regels.

■ Een variabelenaam kan een willekeurig aantal tekens bevatten, maar alleen de eerste 63 tekens worden onthouden en geïdentificeerd (dit aantal als het maximaal mogelijke aantal tekens in een variabelenaam wordt geretourneerd door de functie name lengthmax).

■ Een variabelenaam moet altijd beginnen met een letter en kan elke combinatie van letters, cijfers en onderstrepingstekens (_) bevatten.

■ Spaties en speciale tekens (zoals +, -, *, /) zijn niet toegestaan ​​in variabelenamen.

■ De variabelenaam mag niet hetzelfde zijn als de namen van andere MATLAB-variabelen, functies, procedures en systeemvariabelen.

■ Variabelenamen maken onderscheid tussen hoofdletters en kleine letters (dwz Abc en abc zijn verschillende namen).

Voordat u een variabele gebruikt, kunt u controleren of de naam die u kiest geldig is. Hiervoor wordt de volgende functie gebruikt:

isvarnaam variabele_naam

waar variabele_naam is de naam van de variabele waarvan u wilt controleren of deze correct is. Deze functie retourneert 1 als de naam geldig is, anders 0. De naam 12_abc_3 8 is bijvoorbeeld ongeldig omdat deze begint met een cijfer, dus deze functie retourneert 0.

>> isvarnaam 12_abc_3 8

Er zijn verschillende gereserveerde variabelenamen in MATLAB. Variabelen met zulke namen heten systemisch. Ze worden ingesteld nadat het systeem is opgestart en kunnen worden gebruikt in wiskundige uitdrukkingen. Systeemvariabelen kunnen worden overschreven, d.w.z. ze kunnen indien nodig verschillende waarden toegewezen krijgen.

Hieronder volgen de belangrijkste MATLAB-systeemvariabelen.

■ i, j is de denkbeeldige eenheid (vierkantswortel van -1) die wordt gebruikt om het denkbeeldige deel van complexe getallen te specificeren.

■ pi - getal π (π = 3.141592653589793).

■eps - onnauwkeurigheid van bewerkingen met getallen met drijvende komma, d.w.z. het interval tussen 1,0 en het eerstvolgende getal met drijvende komma (gelijk aan 2.2204e-16 of 2-52).

■ ans is het resultaat van de laatste niet-ondertekende toewijzingsbewerking.

■ inf - aanduiding van machine oneindig.

■ NaN - afkorting van woorden Niet a Getal (geen getal), gebruikt om een ​​ongedefinieerd resultaat aan te geven (zoals 0/0 of Inf / Inf).

■ realmin - minimaal modulo reëel getal (2 .22 51е-308, of 2 -1022).

■ realmax - het maximale reële modulo-getal (1.7977е + 3 08 of 2 1023).

In MATLAB worden, in tegenstelling tot andere programmeertalen, variabele typen niet vooraf gedeclareerd. Het volstaat om een ​​waarde van een bepaald type aan een variabele toe te kennen. Bijvoorbeeld, toewijzen aan een variabele een waarde 5, voer de uitdrukking in op de opdrachtregel een= 5 (als opdracht operator het gelijkteken is van toepassing) en druk op , waarna het programma direct de waarde van deze variabele toont.

>> een=5

Zoals u kunt zien, hoeft het MATLAB-programma in dit geval de variabele ans niet toe te wijzen om het resultaat weer te geven, aangezien de variabele is ingesteld A.

Als u niet wilt dat de waarde onmiddellijk op het scherm wordt weergegeven na het toekennen van een waarde aan een variabele, beëindigt u de toewijzing met een puntkomma (;) en drukt u pas daarna op .

De puntkomma gaat verder dan toewijzingsbewerkingen. Als u dit teken opgeeft aan het einde van een uitdrukking die in de opdrachtregel is ingevoerd, wordt het resultaat van de evaluatie niet onmiddellijk op het scherm weergegeven. In plaats daarvan verschijnt een prompt voor het volgende commando ("). Aan een variabele kan een getal, een rekenkundige uitdrukking, een tekenreeks (tussen apostrofs) of een tekenuitdrukking worden toegewezen.

Om de efficiëntie van het programma te verbeteren, moet u mogelijk alle variabelen die in de huidige sessie worden gebruikt, of slechts enkele ervan uit het computergeheugen wissen. Om het geheugen van variabelen in MATLAB te wissen, wordt de functie wissen gebruikt, die de syntaxis heeft:

· Clear - vernietiging van alle variabelen;

· Wis x - vernietiging van de variabele x;

Wis a b c - vernietiging van een familie van variabelen ( argumenten voor het clear-commando volgen onmiddellijk de opdrachtnaam en worden gescheiden door spaties).

Gebruik de opdracht c1c om de volledige inhoud van het MATLAB-opdrachtvenster te wissen. Na het selecteren van deze opdracht wordt alleen de informatie die in het opdrachtvenster is ingevoerd, verwijderd, maar de waarden van de werkruimtevariabelen worden niet beïnvloed. Dit kan worden geverifieerd door in de opdrachtregel de naam van een van de variabelen in de huidige sessie te typen.

Einde van het werk -

Dit onderwerp hoort bij de sectie:

Speciale karakters en hun doel

Communicatietaal met matlab .. symbolen en taaloperatoren .. taaloperatoren zijn symbolen voor bewerkingen op gegevens die operanden worden genoemd in matlab. Alle algemeen aanvaarde worden toegepast ..

Als u aanvullend materiaal over dit onderwerp nodig heeft, of u heeft niet gevonden wat u zocht, raden we u aan de zoekopdracht in onze database te gebruiken:

Wat doen we met het ontvangen materiaal:

Als dit materiaal nuttig voor u bleek te zijn, kunt u het opslaan op uw pagina op sociale netwerken:

Zoals in alle programmeertalen biedt MatLab de mogelijkheid om met variabelen te werken. Bovendien hoeft de gebruiker zich geen zorgen te maken over welke waarden de variabele zal aannemen (complex, reëel of alleen gehele getallen). Om bijvoorbeeld de waarde 1.45 aan de variabele z toe te kennen, volstaat het om z = 1.45 op de opdrachtregel te schrijven en MatLab zal onmiddellijk de waarde z weergeven:

»Z = 1.45
z =
1.4500

Hier wordt het gelijkteken gebruikt als opdracht operator. Het is vaak niet erg handig om het resultaat na elke opdracht te krijgen. Daarom biedt MatLab de mogelijkheid om de toewijzingsoperator te beëindigen met een puntkomma om de uitvoer van het resultaat naar het opdrachtvenster te onderdrukken. Een variabelenaam kan elke reeks letters en cijfers zijn zonder spatie, beginnend met een letter. Kleine letters en hoofdletters zijn verschillend, bijvoorbeeld MZ en mz zijn twee verschillende variabelen. Het aantal tekens dat door MatLab wordt waargenomen in een variabelenaam is 31.
Zoek als oefening in het gebruik van variabelen de betekenis van de volgende uitdrukking:

Typ de volgende reeks opdrachten (let op de puntkomma in de eerste twee toewijzingsinstructies om de weergave van tussenliggende waarden op het scherm te onderdrukken):

"X = sin (1,3 * pi) / log (3,4);
»Y = sqrt (tan (2,75) / tanh (2,75));
» z= (x + y) / (x-y)
Z =
0,0243 - 0,9997i

De laatste toewijzingsopdracht eindigt niet met een puntkomma om onmiddellijk de waarde van de oorspronkelijke uitdrukking te krijgen. Natuurlijk kan men de hele formule in één keer invoeren en hetzelfde resultaat krijgen:

»(Sin (1,3 * pi) / log (3,4) + sqrt (tan (2,75) / tanh (2,75))) /…
(sin (1,3 * pi) / log (3,4) -sqrt (tan (2,75) / tanh (2,75))) ans =
0,0243 - 0,9997i

Merk op hoe de eerste invoer compacter en duidelijker is dan de tweede! In de tweede versie paste de formule niet op één regel in het opdrachtvenster en moest hij in twee regels worden geschreven, waarvoor drie punten aan het einde van de eerste regel werden gezet.

Om lange formules of opdrachten in de opdrachtregel in te voeren, plaatst u drie stippen (op een rij, zonder spaties), drukt u op de toets en ga door met het typen van de formule op de volgende regel. Zo kun je een uitdrukking op meerdere regels plaatsen. MatLab evalueert de hele uitdrukking of voert een commando uit na het klikken op in de laatste regel (waarin er geen drie opeenvolgende punten zijn).

MatLab onthoudt de waarden van alle variabelen die tijdens een sessie zijn gedefinieerd. Als, na het invoeren van het bovenstaande voorbeeld, nog wat berekeningen zijn gemaakt en het nodig werd om de waarde uit te voeren NS, dan moet je gewoon typen NS bij de opdrachtprompt en druk op :

"X
-0.6611

De hierboven gedefinieerde variabelen kunnen ook in andere formules worden gebruikt. Als u nu bijvoorbeeld de uitdrukking moet evalueren

,

voer dan gewoon het volgende commando in:

"(X-y) ^ (3/2)
ans =
-0,8139 + 0,3547i

Het aanroepen van functies in MatLab is flexibel genoeg. U kunt bijvoorbeeld e3.5 berekenen door de exp-functie vanaf de opdrachtregel aan te roepen:

»Exp (3.5)
ans =
33.1155

Een andere manier is om de toewijzingsoperator te gebruiken:

»T = exp (3.5)
t =
33.1155

Stel dat een deel van de berekeningen met variabelen is gedaan, en de rest zal moeten worden voltooid tijdens de volgende werksessie met MatLab. In dit geval moet u de variabelen opslaan die in de productieomgeving zijn gedefinieerd.

Variabelen bekijken

Als u met een voldoende groot aantal variabelen werkt, moet u weten welke variabelen al zijn gebruikt en welke niet. Hiervoor wordt het who-commando gebruikt, dat een lijst met gebruikte variabelen weergeeft in het MatLab-commandovenster:

"WHO
Uw variabelen zijn:
al a2 a3

Met de opdracht whos kunt u meer gedetailleerde informatie over variabelen krijgen in de vorm van een tabel:

Eindtotaal is 3 elementen met 24 bytes

De eerste kolom, Naam, bevat de namen van de gebruikte variabelen. Wat in de kolom Grootte staat, wordt in wezen bepaald door het basisprincipe van het werk van MatLab. MatLab-software alle gegevens worden gepresenteerd in de vorm van arrays. De variabelen al, a2 en a3 zijn één voor één tweedimensionale arrays. Elk van de variabelen is acht bytes, zoals aangegeven in de kolom Bytes. Ten slotte geeft de laatste kolom van de klasse het type variabelen aan - dubbele array, d.w.z. een reeks dubbele precisiegetallen. De regel onder de tabel zegt dat er uiteindelijk drie elementen zijn, d.w.z. variabelen zijn vierentwintig bytes. Het blijkt dat de weergave van alle gegevens in MatLab in de vorm van arrays bepaalde voordelen biedt.
Gebruik het commando clear om alle variabelen uit het geheugen te verwijderen. Als u een lijst met variabelen opgeeft in de argumenten (gescheiden door een spatie), dan worden alleen deze uit het geheugen bevrijd, bijvoorbeeld:

»Wis al a3
"WHO
Uw variabelen zijn:
a2

Vanaf versie 6.0 is er een handig hulpmiddel verschenen om de variabelen van de werkomgeving te bekijken - de Werkruimte, om over te schakelen naar welke bladwijzer met dezelfde naam moet worden geactiveerd. Dit venster bevat een tabel die lijkt op de tabel die wordt weergegeven door het whos-commando. Dubbelklikken op de rij die overeenkomt met elke variabele toont de inhoud ervan in een apart venster, wat vooral handig is bij het werken met arrays. Vensterwerkbalk Werkruimte stelt u in staat om onnodige variabelen te verwijderen, de werkomgeving op te slaan en te openen.