13/10/2007
Velkommen til en detaljeret gennemgang af MATLAB, et utroligt kraftfuldt værktøj til tekniske beregninger, dataanalyse og programmering. En af grundpillerne i ethvert programmeringssprog er dets operatorer, og MATLAB er ingen undtagelse. En operator er et symbol, der fortæller compileren, at den skal udføre specifikke matematiske eller logiske manipulationer. MATLAB er designet til primært at arbejde med hele matricer og arrays, hvilket gør dets funktioner ekstremt effektive til både skalar- og ikke-skalardata. At forstå disse operatorer er afgørende for at kunne skrive effektiv og præcis kode. I denne artikel vil vi udforske de forskellige typer af operatorer, symboler og specielle tegn, som MATLAB stiller til rådighed for at håndtere variable, funktioner og komplekse beregninger.

Aritmetiske Operatorer i MATLAB
Aritmetiske operatorer er de mest grundlæggende og anvendes til at udføre simple matematiske operationer som addition, subtraktion, multiplikation og division. I MATLAB skelnes der mellem to hovedtyper af aritmetiske operationer: matrix-operationer og array-operationer (også kaldet element-vise operationer). Forskellen er afgørende: matrix-operationer følger reglerne for lineær algebra, mens array-operationer udføres element for element. Array-operatorer er typisk kendetegnet ved et punktum (.) foran symbolet.
Nedenfor er en tabel, der opsummerer de vigtigste aritmetiske operatorer i MATLAB:
| Symbol | Rolle | Tilsvarende Funktion | Beskrivelse |
|---|---|---|---|
| + | Addition | plus | Lægger to tal, vektorer eller matricer sammen. |
| - | Subtraktion | minus | Trækker det andet operand fra det første. |
| * | Matrix-multiplikation | mtimes | Udfører matrix-multiplikation i henhold til lineær algebras regler. |
| .* | Element-vis multiplikation | times | Ganger de korresponderende elementer i to arrays. |
| / | Matrix-højredivision | mrdivide | Svarer til at løse ligningssystemet xA = B for x. |
| ./ | Element-vis højredivision | rdivide | Dividerer hvert element i det første array med det korresponderende element i det andet. |
| \ | Matrix-venstredivision | mldivide | Den mest almindelige måde at løse ligningssystemet Ax = B for x. |
| .\ | Element-vis venstredivision | ldivide | Dividerer hvert element i det andet array med det korresponderende element i det første. |
| ^ | Matrix-potens | mpower | Opløfter en matrix i en skalar potens. |
| .^ | Element-vis potens | power | Opløfter hvert element i et array i en potens. |
| ' | Transponering (kompleks konjugeret) | ctranspose | Transponerer en matrix og konjugerer komplekse elementer. |
| .' | Transponering | transpose | Transponerer en matrix uden at konjugere komplekse elementer. |
Skalarudvidelse (Scalar Expansion)
Et vigtigt koncept i MATLAB er skalarudvidelse. Med undtagelse af visse matrix-operatorer, skal begge operander i en aritmetisk operation have samme dimensioner. Hvis den ene operand er en skalar (et enkelt tal) og den anden er et array, anvender MATLAB automatisk skalaren på hvert element i arrayet. Dette er en utrolig nyttig egenskab.
Her er et eksempel, der bruger skalarudvidelse til at gange en matrix med en skalar:
A = magic(3) A = 8 1 6 3 5 7 4 9 2 3 * A ans = 24 3 18 9 15 21 12 27 6Relationelle Operatorer
Relationelle operatorer bruges til at sammenligne værdier. Resultatet af en sammenligning er altid en logisk værdi: 1 (sandt) eller 0 (falsk). Disse operatorer arbejder element-for-element, når de anvendes på arrays, og returnerer et logisk array af samme størrelse.
| Symbol | Rolle | Tilsvarende Funktion |
|---|---|---|
| == | Er lig med | eq |
| ~= | Er ikke lig med | ne |
| > | Større end | gt |
| >= | Større end eller lig med | ge |
| < | Mindre end | lt |
| <= | Mindre end eller lig med | le |
I dette eksempel sammenlignes to matricer, A og B. Resultatmatricen viser, hvor elementerne i A er lig med de korresponderende elementer i B.
A = [2 7 6; 9 0 5; 3 0.5 6]; B = [8 7 0; 3 2 5; 4 -1 7]; A == B ans = 3x3 logical array 0 1 0 0 0 1 0 0 0Resultatet er et logisk array, hvor 1 indikerer, at sammenligningen er sand på den pågældende position.

Logiske Operatorer
Logiske operatorer udfører booleske operationer og er fundamentale for kontrolstrukturer som if-sætninger og while-løkker. De returnerer også logiske værdier (1 eller 0). MATLAB tilbyder tre typer logiske operatorer.
1. Element-vise Logiske Operatorer
Disse operatorer arbejder på korresponderende elementer i logiske arrays. Operanderne skal have samme dimensioner, medmindre den ene er en skalar. Bemærk, at MATLAB konverterer enhver endelig, ikke-nul numerisk værdi til logisk1 (sandt) i en logisk sammenhæng.
- & (Logisk AND): Returnerer
1, hvis begge elementer er sande (ikke-nul). - | (Logisk OR): Returnerer
1, hvis mindst et af elementerne er sandt. - ~ (Logisk NOT): Inverterer den logiske værdi af hvert element.
- xor (Eksklusiv OR): Returnerer
1, hvis kun ét af elementerne er sandt.
2. Bit-vise Operatorer
Disse funktioner udfører logiske operationer på de enkelte bits i ikke-negative heltal. De er nyttige i lavniveau-programmering og datamanipulation.
bitand(a,b): Udfører en bit-vis AND.bitor(a,b): Udfører en bit-vis OR.bitxor(a,b): Udfører en bit-vis XOR.bitcmp(a): Returnerer bit-vis komplement.
3. Short-Circuit Operatorer
Disse operatorer (&& for AND og || for OR) arbejder på skalære, logiske udtryk. Deres "short-circuiting" adfærd betyder, at de kun evaluerer det andet operand, hvis det første operand ikke allerede afgør resultatet. For eksempel, i udtrykket A && B, vil B ikke blive evalueret, hvis A er falsk. Dette er ekstremt nyttigt for at undgå fejl, f.eks. ved at tjekke om en divisor er nul, før man dividerer.
- && (Short-Circuit AND): Returnerer
1(sandt), hvis begge udtryk evalueres til sandt. - || (Short-Circuit OR): Returnerer
1(sandt), hvis mindst ét af udtrykkene evalueres til sandt.
Specielle Tegn i MATLAB
Ud over operatorer har MATLAB en række specielle tegn, der hver især har en unik funktion i syntaksen. At kende disse er afgørende for at kunne læse og skrive MATLAB-kode effektivt.

@(At-tegn): Bruges til at oprette funktion-håndtag (function handles) og til at referere til metoder i superklasser..(Punktum): Anvendes som decimaltegn, til element-vise operationer (f.eks..*), og til at tilgå felter i en struktur (struct) eller egenskaber i et objekt....(Ellipsis): Bruges til at fortsætte en lang kommando på den næste linje.,(Komma): Adskiller argumenter i funktionskald eller elementer på samme række i en matrix.:(Kolon): Et meget alsidigt tegn. Bruges til at skabe vektorer (f.eks.1:10), til indeksering (f.eks.A(:,1)for at vælge alle rækker i første kolonne), og i for-løkker.;(Semikolon): Bruges til at afslutte en række i en matrix-definition og til at undertrykke outputtet af en kommando. Uden semikolon vil resultatet af en linje blive vist i kommandovinduet.( )(Parenteser): Angiver rækkefølgen af operationer, omslutter argumenter til funktioner og bruges til indeksering af arrays.[ ](Kantede parenteser): Bruges til at konstruere vektorer og matricer.{ }(Tuborgklammer): Bruges til at konstruere og tilgå elementer i celle-arrays (cell arrays).%(Procenttegn): Angiver, at resten af linjen er en kommentar og skal ignoreres af compileren.!(Udråbstegn): Gør det muligt at udføre en kommando i operativsystemets shell direkte fra MATLAB.
Ofte Stillede Spørgsmål (FAQ)
Hvad er den primære forskel mellem matrix-multiplikation (*) og element-vis multiplikation (.*)?
Matrix-multiplikation (A * B) følger reglerne for lineær algebra, hvor antallet af kolonner i A skal matche antallet af rækker i B. Resultatet er en ny matrix, hvor hvert element er summen af produkterne af rækker og kolonner. Element-vis multiplikation (A .* B) kræver, at A og B har samme dimensioner. Den ganger blot hvert element i A med det tilsvarende element i B. Valget afhænger fuldstændigt af det matematiske problem, du løser.
Hvornår skal jeg bruge short-circuit operatorerne (&& og ||)?
Du bør bruge && og ||, når du arbejder med skalære logiske betingelser, især i kontrolstrukturer som if og while. Deres primære fordel er, at de kan forhindre fejl ved kun at evaluere det andet udtryk, når det er nødvendigt. For eksempel i if (x ~= 0 && y/x > 5), vil y/x aldrig blive evalueret, hvis x er nul, hvilket forhindrer en division-med-nul fejl.
Hvad betyder semikolon (;) i slutningen af en linje?
Et semikolon i slutningen af en kommando undertrykker outputtet. Hvis du udelader det, vil MATLAB vise resultatet af kommandoen i kommandovinduet. Det er god praksis at bruge semikolon efter de fleste linjer i et script for at holde outputtet rent og kun vise de resultater, du eksplicit beder om med f.eks. disp() funktionen.
Kan MATLAB-funktioner arbejde med skalardata?
Ja, absolut. Selvom MATLAB er optimeret til matrix- og array-operationer, fungerer næsten alle funktioner og operatorer perfekt med skalardata (enkelte tal). En skalar kan i MATLAB-sammenhæng betragtes som en 1x1 matrix.
Hvis du vil læse andre artikler, der ligner En Komplet Guide til MATLAB-Operatorer, kan du besøge kategorien Sundhed.
