MATLAB - Kurzanleitung
MATLAB (Matrixlabor) ist eine hochrangige Programmiersprache der vierten Generation und eine interaktive Umgebung für die numerische Berechnung, Visualisierung und Programmierung.
MATLAB wird von MathWorks entwickelt.
Es ermöglicht Matrixmanipulationen; Zeichnen von Funktionen und Daten; Implementierung von Algorithmen; Erstellung von Benutzeroberflächen; Schnittstelle zu Programmen, die in anderen Sprachen geschrieben sind, einschließlich C, C ++, Java und FORTRAN; Daten analysieren; Algorithmen entwickeln; und Modelle und Anwendungen erstellen.
Es verfügt über zahlreiche integrierte Befehle und mathematische Funktionen, die Sie bei mathematischen Berechnungen, beim Generieren von Plots und beim Ausführen numerischer Methoden unterstützen.
MATLABs Macht der Computermathematik
MATLAB wird in allen Facetten der Computermathematik verwendet. Im Folgenden sind einige häufig verwendete mathematische Berechnungen aufgeführt, bei denen sie am häufigsten verwendet werden:
- Umgang mit Matrizen und Arrays
- 2-D- und 3-D-Plot und Grafiken
- Lineare Algebra
- Algebraische Gleichungen
- Nichtlineare Funktionen
- Statistics
- Datenanalyse
- Kalkül und Differentialgleichungen
- Numerische Berechnungen
- Integration
- Transforms
- Kurvenanpassung
- Verschiedene andere Sonderfunktionen
Eigenschaften von MATLAB
Im Folgenden sind die Grundfunktionen von MATLAB aufgeführt:
Es ist eine Hochsprache für die numerische Berechnung, Visualisierung und Anwendungsentwicklung.
Es bietet auch eine interaktive Umgebung für iteratives Erkunden, Entwerfen und Lösen von Problemen.
Es bietet eine umfangreiche Bibliothek mathematischer Funktionen für lineare Algebra, Statistik, Fourier-Analyse, Filterung, Optimierung, numerische Integration und Lösung gewöhnlicher Differentialgleichungen.
Es bietet integrierte Grafiken zur Visualisierung von Daten und Tools zum Erstellen benutzerdefinierter Diagramme.
Die Programmierschnittstelle von MATLAB bietet Entwicklungstools zur Verbesserung der Wartbarkeit der Codequalität und zur Maximierung der Leistung.
Es bietet Tools zum Erstellen von Anwendungen mit benutzerdefinierten grafischen Oberflächen.
Es bietet Funktionen zur Integration von MATLAB-basierten Algorithmen in externe Anwendungen und Sprachen wie C, Java, .NET und Microsoft Excel.
Verwendung von MATLAB
MATLAB wird häufig als Rechenwerkzeug in Wissenschaft und Technik verwendet und umfasst die Bereiche Physik, Chemie, Mathematik und alle technischen Bereiche. Es wird in einer Reihe von Anwendungen verwendet, darunter -
- Signalverarbeitung und Kommunikation
- Bild- und Videoverarbeitung
- Kontroll systeme
- Test und Messung
- Computational Finance
- Computational Biology
Einrichtung der lokalen Umgebung
Das Einrichten der MATLAB-Umgebung ist mit wenigen Klicks erledigt. Das Installationsprogramm kann hier heruntergeladen werden .
MathWorks bietet das lizenzierte Produkt, eine Testversion und eine Studentenversion. Sie müssen sich auf der Website anmelden und ein wenig auf ihre Genehmigung warten.
Nach dem Herunterladen des Installationsprogramms kann die Software mit wenigen Klicks installiert werden.
Grundlegendes zur MATLAB-Umgebung
Die MATLAB-Entwicklungs-IDE kann über das auf dem Desktop erstellte Symbol gestartet werden. Das Hauptarbeitsfenster in MATLAB heißt Desktop. Wenn MATLAB gestartet wird, wird der Desktop in seinem Standardlayout angezeigt.
Der Desktop verfügt über die folgenden Bedienfelder:
Current Folder - In diesem Bereich können Sie auf die Projektordner und -dateien zugreifen.
Command Window- Dies ist der Hauptbereich, in dem Befehle über die Befehlszeile eingegeben werden können. Dies wird durch die Eingabeaufforderung (>>) angezeigt.
Workspace - Der Arbeitsbereich zeigt alle Variablen an, die aus Dateien erstellt und / oder importiert wurden.
Command History - In diesem Bereich werden Befehle angezeigt oder zurückgegeben, die über die Befehlszeile eingegeben wurden.
Richten Sie GNU Octave ein
Wenn Sie bereit sind, Octave auf Ihrem Computer (Linux, BSD, OS X oder Windows) zu verwenden, laden Sie bitte die neueste Version von Download GNU Octave herunter . Sie können die angegebenen Installationsanweisungen für Ihre Maschine überprüfen.
Die MATLAB-Umgebung verhält sich wie ein superkomplexer Taschenrechner. Sie können Befehle an der >> Eingabeaufforderung eingeben.
MATLAB ist eine interpretierte Umgebung. Mit anderen Worten, Sie geben einen Befehl und MATLAB führt ihn sofort aus.
Praktische Übung
Geben Sie einen gültigen Ausdruck ein, z.
5 + 5
Und drücken Sie ENTER
Wenn Sie auf die Schaltfläche Ausführen klicken oder Strg + E eingeben, führt MATLAB diese sofort aus und das zurückgegebene Ergebnis lautet:
ans = 10
Nehmen wir noch einige Beispiele auf -
3 ^ 2 % 3 raised to the power of 2
Wenn Sie auf die Schaltfläche Ausführen klicken oder Strg + E eingeben, führt MATLAB diese sofort aus und das zurückgegebene Ergebnis lautet:
ans = 9
Ein anderes Beispiel,
sin(pi /2) % sine of angle 90o
Wenn Sie auf die Schaltfläche Ausführen klicken oder Strg + E eingeben, führt MATLAB diese sofort aus und das zurückgegebene Ergebnis lautet:
ans = 1
Ein anderes Beispiel,
7/0 % Divide by zero
Wenn Sie auf die Schaltfläche Ausführen klicken oder Strg + E eingeben, führt MATLAB diese sofort aus und das zurückgegebene Ergebnis lautet:
ans = Inf
warning: division by zero
Ein anderes Beispiel,
732 * 20.3
Wenn Sie auf die Schaltfläche Ausführen klicken oder Strg + E eingeben, führt MATLAB diese sofort aus und das zurückgegebene Ergebnis lautet:
ans = 1.4860e+04
MATLAB bietet einige spezielle Ausdrücke für einige mathematische Symbole, wie pi für π, Inf für ∞, i (und j) für √-1 usw. Nan steht für 'keine Zahl'.
Verwendung von Semikolon (;) in MATLAB
Semikolon (;) zeigt das Ende der Anweisung an. Wenn Sie jedoch die MATLAB-Ausgabe für einen Ausdruck unterdrücken und ausblenden möchten, fügen Sie nach dem Ausdruck ein Semikolon hinzu.
Zum Beispiel,
x = 3;
y = x + 5
Wenn Sie auf die Schaltfläche Ausführen klicken oder Strg + E eingeben, führt MATLAB diese sofort aus und das zurückgegebene Ergebnis lautet:
y = 8
Kommentare hinzufügen
Das Prozentzeichen (%) wird zur Angabe einer Kommentarzeile verwendet. Zum Beispiel,
x = 9 % assign the value 9 to x
Sie können einen Kommentarblock auch mit den Blockkommentaroperatoren% {und%} schreiben.
Der MATLAB-Editor enthält Tools und Kontextmenüelemente, mit denen Sie das Format von Kommentaren hinzufügen, entfernen oder ändern können.
Häufig verwendete Operatoren und Sonderzeichen
MATLAB unterstützt die folgenden häufig verwendeten Operatoren und Sonderzeichen:
Operator | Zweck |
---|---|
+ | Plus; Additionsoperator. |
- | Minus; Subtraktionsoperator. |
* | Skalar- und Matrixmultiplikationsoperator. |
.* | Array-Multiplikationsoperator. |
^ | Skalar- und Matrixexponentiationsoperator. |
.^ | Array-Exponentiationsoperator. |
\ | Operator der linken Division. |
/ | Rechtsteilungsoperator. |
.\ | Array-Linksteilungsoperator. |
./ | Array-Rechtsteilungsoperator. |
: | Doppelpunkt; Erzeugt Elemente mit regelmäßigem Abstand und repräsentiert eine ganze Zeile oder Spalte. |
( ) | Klammern; schließt Funktionsargumente und Array-Indizes ein; überschreibt die Priorität. |
[ ] | Klammern; Gehäuse Array-Elemente. |
. | Komma. |
… | Ellipse; Zeilenfortsetzungsoperator |
, | Komma; trennt Anweisungen und Elemente in einer Reihe |
; | Semikolon; trennt Spalten und unterdrückt die Anzeige. |
% | Prozentzeichen; bezeichnet einen Kommentar und gibt die Formatierung an. |
_ | Anführungszeichen und Transponierungsoperator. |
._ | Nicht konjugierter Transponierungsoperator. |
= | Aufgabenverwalter. |
Spezielle Variablen und Konstanten
MATLAB unterstützt die folgenden speziellen Variablen und Konstanten:
Name | Bedeutung |
---|---|
ans | Letzte Antwort. |
eps | Genauigkeit der Gleitkommapräzision. |
i,j | Die imaginäre Einheit √-1. |
Inf | Unendlichkeit. |
NaN | Undefiniertes numerisches Ergebnis (keine Zahl). |
pi | Die Zahl π |
Variablen benennen
Variablennamen bestehen aus einem Buchstaben, gefolgt von einer beliebigen Anzahl von Buchstaben, Ziffern oder Unterstrichen.
MATLAB ist case-sensitive.
Variablennamen können beliebig lang sein. MATLAB verwendet jedoch nur die ersten N Zeichen, wobei N durch die Funktion angegeben wird namelengthmax.
Speichern Sie Ihre Arbeit
Das save Mit dem Befehl werden alle Variablen im Arbeitsbereich als Datei mit der Erweiterung .mat im aktuellen Verzeichnis gespeichert.
Zum Beispiel,
save myfile
Sie können die Datei jederzeit später mit dem neu laden load Befehl.
load myfile
In der MATLAB-Umgebung ist jede Variable ein Array oder eine Matrix.
Sie können Variablen auf einfache Weise zuweisen. Zum Beispiel,
x = 3 % defining x and initializing it with a value
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
x = 3
Es erstellt eine 1-mal-1-Matrix mit dem Namen x und speichert den Wert 3 in seinem Element. Lassen Sie uns ein anderes Beispiel überprüfen,
x = sqrt(16) % defining x and initializing it with an expression
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
x = 4
Bitte beachten Sie, dass -
Sobald eine Variable in das System eingegeben wurde, können Sie später darauf zurückgreifen.
Variablen müssen Werte haben, bevor sie verwendet werden.
Wenn ein Ausdruck ein Ergebnis zurückgibt, das keiner Variablen zugewiesen ist, weist das System es einer Variablen mit dem Namen ans zu, die später verwendet werden kann.
Zum Beispiel,
sqrt(78)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans = 8.8318
Sie können diese Variable verwenden ans - -
sqrt(78);
9876/ans
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans = 1118.2
Schauen wir uns ein anderes Beispiel an -
x = 7 * 8;
y = x * 7.89
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
y = 441.84
Mehrere Aufgaben
Sie können mehrere Zuordnungen in derselben Zeile haben. Zum Beispiel,
a = 2; b = 7; c = a * b
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
c = 14
Ich habe die Variablen vergessen!
Das who Befehl zeigt alle von Ihnen verwendeten Variablennamen an.
who
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
Your variables are:
a ans b c
Das whos Befehl zeigt wenig mehr über die Variablen -
- Derzeit im Speicher befindliche Variablen
- Typ jeder Variablen
- Jeder Variablen zugewiesener Speicher
- Ob es sich um komplexe Variablen handelt oder nicht
whos
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
Attr Name Size Bytes Class
==== ==== ==== ==== =====
a 1x1 8 double
ans 1x70 757 cell
b 1x1 8 double
c 1x1 8 double
Total is 73 elements using 781 bytes
Das clear Befehl löscht alle (oder die angegebenen) Variablen aus dem Speicher.
clear x % it will delete x, won't display anything
clear % it will delete all variables in the workspace
% peacefully and unobtrusively
Lange Aufgaben
Lange Zuweisungen können mithilfe von Ellipsen (...) auf eine andere Zeile erweitert werden. Zum Beispiel,
initial_velocity = 0;
acceleration = 9.8;
time = 20;
final_velocity = initial_velocity + acceleration * time
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
final_velocity = 196
Der Formatbefehl
Standardmäßig zeigt MATLAB Zahlen mit vier Dezimalstellenwerten an. Dies ist bekannt alsshort format.
Wenn Sie jedoch mehr Präzision wünschen, müssen Sie die verwenden format Befehl.
Das format long Befehl zeigt 16 Nachkommastellen an.
Zum Beispiel -
format long
x = 7 + 10/3 + 5 ^ 1.2
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück
x = 17.2319816406394
Ein anderes Beispiel,
format short
x = 7 + 10/3 + 5 ^ 1.2
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
x = 17.232
Das format bankBefehl rundet Zahlen auf zwei Dezimalstellen. Zum Beispiel,
format bank
daily_wage = 177.45;
weekly_wage = daily_wage * 6
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
weekly_wage = 1064.70
MATLAB zeigt große Zahlen in Exponentialschreibweise an.
Das format short e Befehl ermöglicht die Anzeige in Exponentialform mit vier Dezimalstellen plus Exponent.
Zum Beispiel,
format short e
4.678 * 4.9
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans = 2.2922e+01
Das format long eBefehl ermöglicht die Anzeige in Exponentialform mit vier Dezimalstellen plus Exponent. Zum Beispiel,
format long e
x = pi
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
x = 3.141592653589793e+00
Das format ratBefehl gibt den nächsten rationalen Ausdruck an, der sich aus einer Berechnung ergibt. Zum Beispiel,
format rat
4.678 * 4.9
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans = 34177/1491
Vektoren erstellen
Ein Vektor ist eine eindimensionale Anordnung von Zahlen. Mit MATLAB können zwei Arten von Vektoren erstellt werden:
- Zeilenvektoren
- Spaltenvektoren
Row vectors werden erstellt, indem die Elementmenge in eckige Klammern gesetzt wird und die Elemente durch Leerzeichen oder Komma begrenzt werden.
Zum Beispiel,
r = [7 8 9 10 11]
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
r =
7 8 9 10 11
Ein anderes Beispiel,
r = [7 8 9 10 11];
t = [2, 3, 4, 5, 6];
res = r + t
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
res =
9 11 13 15 17
Column vectors werden erstellt, indem die Elementmenge in eckige Klammern gesetzt wird und die Elemente durch Semikolon (;) begrenzt werden.
c = [7; 8; 9; 10; 11]
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
c =
7
8
9
10
11
Matrizen erstellen
Eine Matrix ist eine zweidimensionale Anordnung von Zahlen.
In MATLAB wird eine Matrix erstellt, indem jede Zeile als Folge von durch Leerzeichen oder Kommas getrennten Elementen eingegeben wird. Das Ende einer Zeile wird durch ein Semikolon abgegrenzt. Lassen Sie uns zum Beispiel eine 3-mal-3-Matrix erstellen als -
m = [1 2 3; 4 5 6; 7 8 9]
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
m =
1 2 3
4 5 6
7 8 9
MATLAB ist ein interaktives Programm zur numerischen Berechnung und Datenvisualisierung. Sie können einen Befehl eingeben, indem Sie ihn an der MATLAB-Eingabeaufforderung '>>' auf der Seite eingebenCommand Window.
In diesem Abschnitt finden Sie Listen häufig verwendeter allgemeiner MATLAB-Befehle.
Befehle zum Verwalten einer Sitzung
MATLAB bietet verschiedene Befehle zum Verwalten einer Sitzung. Die folgende Tabelle enthält alle diese Befehle -
Befehl | Zweck |
---|---|
clc | Löscht das Befehlsfenster. |
klar | Entfernt Variablen aus dem Speicher. |
existieren | Überprüft, ob eine Datei oder Variable vorhanden ist. |
global | Deklariert Variablen als global. |
Hilfe | Sucht nach einem Hilfethema. |
suchen | Durchsucht Hilfeeinträge nach einem Schlüsselwort. |
Verlassen | Stoppt MATLAB. |
Wer | Listet aktuelle Variablen auf. |
wer | Listet aktuelle Variablen auf (lange Anzeige). |
Befehle zum Arbeiten mit dem System
MATLAB bietet verschiedene nützliche Befehle für die Arbeit mit dem System, z. B. das Speichern der aktuellen Arbeit im Arbeitsbereich als Datei und das spätere Laden der Datei.
Es bietet auch verschiedene Befehle für andere systembezogene Aktivitäten wie das Anzeigen des Datums, das Auflisten von Dateien im Verzeichnis, das Anzeigen des aktuellen Verzeichnisses usw.
In der folgenden Tabelle werden einige häufig verwendete systembezogene Befehle angezeigt.
Befehl | Zweck |
---|---|
CD | Ändert das aktuelle Verzeichnis. |
Datum | Zeigt das aktuelle Datum an. |
löschen | Löscht eine Datei. |
Tagebuch | Schaltet die Aufzeichnung von Tagebuchdateien ein / aus. |
dir | Listet alle Dateien im aktuellen Verzeichnis auf. |
Belastung | Lädt Arbeitsbereichsvariablen aus einer Datei. |
Pfad | Zeigt den Suchpfad an. |
pwd | Zeigt das aktuelle Verzeichnis an. |
sparen | Speichert Arbeitsbereichsvariablen in einer Datei. |
Art | Zeigt den Inhalt einer Datei an. |
Was | Listet alle MATLAB-Dateien im aktuellen Verzeichnis auf. |
wklread | Liest die .wk1-Tabellenkalkulationsdatei. |
Eingabe- und Ausgabebefehle
MATLAB bietet die folgenden ein- und ausgabebezogenen Befehle:
Befehl | Zweck |
---|---|
disp | Zeigt den Inhalt eines Arrays oder einer Zeichenfolge an. |
fscanf | Lesen Sie formatierte Daten aus einer Datei. |
Format | Steuert das Bildschirmanzeigeformat. |
fprintf | Führt formatierte Schreibvorgänge auf dem Bildschirm oder in der Datei durch. |
Eingang | Zeigt Eingabeaufforderungen an und wartet auf Eingabe. |
;; | Unterdrückt Siebdruck. |
Das fscanf und fprintfBefehle verhalten sich wie C scanf- und printf-Funktionen. Sie unterstützen die folgenden Formatcodes:
Code formatieren | Zweck |
---|---|
%s | Format als Zeichenfolge. |
%d | Formatieren Sie als Ganzzahl. |
%f | Format als Gleitkommawert. |
%e | Format als Gleitkommawert in wissenschaftlicher Notation. |
%g | Format in der kompaktesten Form:% f oder% e. |
\n | Fügen Sie eine neue Zeile in die Ausgabezeichenfolge ein. |
\t | Fügen Sie eine Registerkarte in die Ausgabezeichenfolge ein. |
Die Formatierungsfunktion hat die folgenden Formen, die für die numerische Anzeige verwendet werden:
Formatierungsfunktion | Anzeige bis zu |
---|---|
Format kurz | Vier Dezimalstellen (Standard). |
Format lang | 16 Dezimalstellen. |
Format kurz e | Fünf Ziffern plus Exponent. |
Format lang e | 16 Stellen plus Exponenten. |
Format Bank | Zwei Dezimalstellen. |
Format + | Positiv, negativ oder Null. |
Format Ratte | Rationale Annäherung. |
Format kompakt | Unterdrückt einige Zeilenvorschübe. |
Format lose | Wird in den weniger kompakten Anzeigemodus zurückgesetzt. |
Vektor-, Matrix- und Array-Befehle
Die folgende Tabelle zeigt verschiedene Befehle zum Arbeiten mit Arrays, Matrizen und Vektoren.
Befehl | Zweck |
---|---|
Katze | Verkettet Arrays. |
finden | Findet Indizes von Elementen ungleich Null. |
Länge | Berechnet die Anzahl der Elemente. |
Linspace | Erstellt regelmäßig beabstandete Vektoren. |
Logspace | Erstellt einen logarithmisch beabstandeten Vektor. |
max | Gibt das größte Element zurück. |
Mindest | Gibt das kleinste Element zurück. |
prod | Produkt jeder Spalte. |
umformen | Ändert die Größe. |
Größe | Berechnet die Arraygröße. |
Sortieren | Sortiert jede Spalte. |
Summe | Summiert jede Spalte. |
Auge | Erstellt eine Identitätsmatrix. |
Einsen | Erstellt eine Reihe von Einsen. |
Nullen | Erstellt ein Array von Nullen. |
Kreuz | Berechnet Matrixkreuzprodukte. |
Punkt | Berechnet Matrixpunktprodukte. |
det | Berechnet die Determinante eines Arrays. |
inv | Berechnet die Inverse einer Matrix. |
pinv | Berechnet die Pseudoinverse einer Matrix. |
Rang | Berechnet den Rang einer Matrix. |
rref | Berechnet die reduzierte Reihenebenenform. |
Zelle | Erstellt ein Zellenarray. |
celldisp | Zeigt das Zellenarray an. |
Zellplot | Zeigt eine grafische Darstellung des Zellenarrays an. |
num2cell | Konvertiert ein numerisches Array in ein Zellenarray. |
Deal | Entspricht den Eingabe- und Ausgabelisten. |
iscell | Identifiziert das Zellenarray. |
Befehle zeichnen
MATLAB bietet zahlreiche Befehle zum Zeichnen von Diagrammen. Die folgende Tabelle zeigt einige der häufig verwendeten Befehle zum Zeichnen -
Befehl | Zweck |
---|---|
Achse | Legt die Achsengrenzen fest. |
fplot | Intelligentes Zeichnen von Funktionen. |
Gitter | Zeigt Gitterlinien an. |
Handlung | Erzeugt einen xy-Plot. |
Druckt den Plot oder speichert den Plot in einer Datei. | |
Titel | Setzt Text oben auf das Diagramm. |
xlabel | Fügt der x-Achse eine Textbeschriftung hinzu. |
ylabel | Fügt der y-Achse eine Textbeschriftung hinzu. |
Achsen | Erstellt Achsenobjekte. |
schließen | Schließt das aktuelle Diagramm. |
alle schließen | Schließt alle Diagramme. |
Zahl | Öffnet ein neues Figurenfenster. |
gtext | Aktiviert die Platzierung von Etiketten per Maus. |
halt | Friert die aktuelle Handlung ein. |
Legende | Legendenplatzierung mit der Maus. |
Aktualisierung | Zeichnet das aktuelle Figurenfenster neu. |
einstellen | Gibt Eigenschaften von Objekten wie Achsen an. |
Nebenhandlung | Erstellt Diagramme in Unterfenstern. |
Text | Platziert die Zeichenfolge in der Abbildung. |
Bar | Erstellt ein Balkendiagramm. |
loglog | Erstellt ein Protokoll-Protokoll-Diagramm. |
Polar- | Erstellt eine Polarkurve. |
semilogx | Erstellt ein Semilog-Diagramm. (logarithmische Abszisse). |
Semilogie | Erstellt ein Semilog-Diagramm. (logarithmische Ordinate). |
Treppe | Erstellt ein Treppenhaus. |
Stengel | Erstellt ein Stammdiagramm. |
Bisher haben wir die MATLAB-Umgebung als Taschenrechner verwendet. MATLAB ist jedoch auch eine leistungsstarke Programmiersprache sowie eine interaktive Computerumgebung.
In den vorherigen Kapiteln haben Sie gelernt, wie Sie Befehle über die MATLAB-Eingabeaufforderung eingeben. Mit MATLAB können Sie auch eine Reihe von Befehlen in eine Datei schreiben und die Datei als vollständige Einheit ausführen, z. B. eine Funktion schreiben und aufrufen.
Die M-Dateien
MATLAB ermöglicht das Schreiben von zwei Arten von Programmdateien -
Scripts - Skriptdateien sind Programmdateien mit .m extension. In diese Dateien schreiben Sie eine Reihe von Befehlen, die Sie gemeinsam ausführen möchten. Skripte akzeptieren keine Eingaben und geben keine Ausgaben zurück. Sie verarbeiten Daten im Arbeitsbereich.
Functions - Funktionsdateien sind auch Programmdateien mit .m extension. Funktionen können Eingaben akzeptieren und Ausgaben zurückgeben. Interne Variablen sind lokal für die Funktion.
Sie können den MATLAB-Editor oder einen anderen Texteditor verwenden, um Ihre zu erstellen .mDateien. In diesem Abschnitt werden die Skriptdateien erläutert. Eine Skriptdatei enthält mehrere aufeinanderfolgende Zeilen mit MATLAB-Befehlen und Funktionsaufrufen. Sie können ein Skript ausführen, indem Sie seinen Namen in die Befehlszeile eingeben.
Erstellen und Ausführen einer Skriptdatei
Um Skriptdateien zu erstellen, müssen Sie einen Texteditor verwenden. Sie können den MATLAB-Editor auf zwei Arten öffnen:
- Verwenden der Eingabeaufforderung
- Verwenden der IDE
Wenn Sie die Eingabeaufforderung verwenden, geben Sie ein editin der Eingabeaufforderung. Dies öffnet den Editor. Sie können direkt eingebenedit und dann den Dateinamen (mit der Erweiterung .m)
edit
Or
edit <filename>
Mit dem obigen Befehl wird die Datei im Standardverzeichnis von MATLAB erstellt. Wenn Sie alle Programmdateien in einem bestimmten Ordner speichern möchten, müssen Sie den gesamten Pfad angeben.
Lassen Sie uns einen Ordner mit dem Namen progs erstellen. Geben Sie die folgenden Befehle an der Eingabeaufforderung ein (>>) -
mkdir progs % create directory progs under default directory
chdir progs % changing the current directory to progs
edit prog1.m % creating an m file named prog1.m
Wenn Sie die Datei zum ersten Mal erstellen, werden Sie von MATLAB aufgefordert, sie zu bestätigen. Klicken Sie auf Ja.
Wenn Sie die IDE verwenden, wählen Sie alternativ NEU -> Skript. Dadurch wird auch der Editor geöffnet und eine Datei mit dem Namen Ohne Titel erstellt. Sie können die Datei benennen und speichern, nachdem Sie den Code eingegeben haben.
Geben Sie den folgenden Code in den Editor ein -
NoOfStudents = 6000;
TeachingStaff = 150;
NonTeachingStaff = 20;
Total = NoOfStudents + TeachingStaff ...
+ NonTeachingStaff;
disp(Total);
Nachdem Sie die Datei erstellt und gespeichert haben, können Sie sie auf zwei Arten ausführen:
Klicken Sie auf die Run Schaltfläche im Editorfenster oder
Geben Sie einfach den Dateinamen (ohne Erweiterung) in die Eingabeaufforderung ein: >> prog1
Die Eingabeaufforderung des Befehlsfensters zeigt das Ergebnis an -
6170
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
a = 5; b = 7;
c = a + b
d = c + sin(b)
e = 5 * d
f = exp(-d)
Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:
c = 12
d = 12.657
e = 63.285
f = 3.1852e-06
MATLAB erfordert keine Typdeklaration oder Dimensionsanweisungen. Immer wenn MATLAB auf einen neuen Variablennamen stößt, erstellt es die Variable und weist den entsprechenden Speicherplatz zu.
Wenn die Variable bereits vorhanden ist, ersetzt MATLAB den ursprünglichen Inhalt durch neuen Inhalt und weist bei Bedarf neuen Speicherplatz zu.
Zum Beispiel,
Total = 42
Die obige Anweisung erstellt eine 1-zu-1-Matrix mit dem Namen 'Total' und speichert den Wert 42 darin.
In MATLAB verfügbare Datentypen
MATLAB bietet 15 grundlegende Datentypen. Jeder Datentyp speichert Daten in Form einer Matrix oder eines Arrays. Die Größe dieser Matrix oder dieses Arrays beträgt mindestens 0 mal 0, und dies kann zu einer Matrix oder einem Array beliebiger Größe führen.
Die folgende Tabelle zeigt die am häufigsten verwendeten Datentypen in MATLAB -
Sr.Nr. | Datentyp & Beschreibung |
---|---|
1 | int8 8-Bit-Ganzzahl mit Vorzeichen |
2 | uint8 8-Bit-Ganzzahl ohne Vorzeichen |
3 | int16 16-Bit-Ganzzahl mit Vorzeichen |
4 | uint16 16-Bit-Ganzzahl ohne Vorzeichen |
5 | int32 32-Bit-Ganzzahl mit Vorzeichen |
6 | uint32 32-Bit-Ganzzahl ohne Vorzeichen |
7 | int64 64-Bit-Ganzzahl mit Vorzeichen |
8 | uint64 64-Bit-Ganzzahl ohne Vorzeichen |
9 | single numerische Daten mit einfacher Genauigkeit |
10 | double numerische Daten mit doppelter Genauigkeit |
11 | logical logische Werte von 1 oder 0 stehen für wahr bzw. falsch |
12 | char Zeichendaten (Zeichenfolgen werden als Zeichenvektor gespeichert) |
13 | cell array Array indizierter Zellen, von denen jede ein Array mit einer anderen Dimension und einem anderen Datentyp speichern kann |
14 | structure C-ähnliche Strukturen, wobei jede Struktur benannte Felder aufweist, in denen ein Array mit einer anderen Dimension und einem anderen Datentyp gespeichert werden kann |
15 | function handle Zeiger auf eine Funktion |
16 | user classes Objekte, die aus einer benutzerdefinierten Klasse erstellt wurden |
17 | java classes Objekte, die aus einer Java-Klasse erstellt wurden |
Beispiel
Erstellen Sie eine Skriptdatei mit dem folgenden Code:
str = 'Hello World!'
n = 2345
d = double(n)
un = uint32(789.50)
rn = 5678.92347
c = int32(rn)
Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:
str = Hello World!
n = 2345
d = 2345
un = 790
rn = 5678.9
c = 5679
Datentypkonvertierung
MATLAB bietet verschiedene Funktionen zum Konvertieren eines Werts von einem Datentyp in einen anderen. Die folgende Tabelle zeigt die Datentypkonvertierungsfunktionen -
Funktion | Zweck |
---|---|
verkohlen | In Zeichenarray (Zeichenfolge) konvertieren |
int2str | Ganzzahlige Daten in Zeichenfolge konvertieren |
mat2str | Konvertieren Sie die Matrix in einen String |
num2str | Konvertieren Sie die Nummer in eine Zeichenfolge |
str2double | Konvertieren Sie eine Zeichenfolge in einen Wert mit doppelter Genauigkeit |
str2num | String in Zahl umwandeln |
native2unicode | Konvertieren Sie numerische Bytes in Unicode-Zeichen |
unicode2native | Konvertieren Sie Unicode-Zeichen in numerische Bytes |
base2dec | Konvertieren Sie die Zeichenfolge der Basis-N-Nummer in eine Dezimalzahl |
bin2dec | Konvertieren Sie eine Binärzahlzeichenfolge in eine Dezimalzahl |
dec2base | Konvertieren Sie die Dezimalzahl in die Basis-N-Zahl in der Zeichenfolge |
dec2bin | Konvertieren Sie die Dezimalzahl in eine Binärzahl in einer Zeichenfolge |
dec2hex | Konvertieren Sie die Dezimalzahl in eine Hexadezimalzahl in einer Zeichenfolge |
hex2dec | Konvertieren Sie eine hexadezimale Zeichenfolge in eine Dezimalzahl |
hex2num | Konvertieren Sie eine hexadezimale Zahlenfolge in eine Zahl mit doppelter Genauigkeit |
num2hex | Konvertieren Sie Singles und Doubles in IEEE-Hexadezimalzeichenfolgen |
cell2mat | Konvertieren Sie das Zellenarray in ein numerisches Array |
cell2struct | Konvertieren Sie das Zellenarray in ein Strukturarray |
cellstr | Erstellen Sie ein Zellenarray mit Zeichenfolgen aus dem Zeichenarray |
mat2cell | Konvertieren Sie ein Array in ein Zellenarray mit möglicherweise unterschiedlich großen Zellen |
num2cell | Konvertieren Sie ein Array in ein Zellenarray mit Zellen mit einheitlicher Größe |
struct2cell | Struktur in Zellenarray konvertieren |
Bestimmung von Datentypen
MATLAB bietet verschiedene Funktionen zum Identifizieren des Datentyps einer Variablen.
Die folgende Tabelle enthält die Funktionen zum Bestimmen des Datentyps einer Variablen -
Funktion | Zweck |
---|---|
ist | Zustand erkennen |
ist ein | Bestimmen Sie, ob die Eingabe ein Objekt der angegebenen Klasse ist |
iscell | Bestimmen Sie, ob die Eingabe ein Zellenarray ist |
iscellstr | Bestimmen Sie, ob die Eingabe ein Zellenarray von Zeichenfolgen ist |
ischar | Bestimmen Sie, ob es sich bei dem Element um ein Zeichenarray handelt |
isfield | Bestimmen Sie, ob die Eingabe ein Strukturarrayfeld ist |
isfloat | Bestimmen Sie, ob die Eingabe ein Gleitkomma-Array ist |
ishghandle | True für Handles Graphics-Objekthandles |
isinteger | Bestimmen Sie, ob die Eingabe ein ganzzahliges Array ist |
isjava | Bestimmen Sie, ob die Eingabe ein Java-Objekt ist |
islogisch | Bestimmen Sie, ob die Eingabe ein logisches Array ist |
isnumerisch | Bestimmen Sie, ob die Eingabe ein numerisches Array ist |
isobject | Bestimmen Sie, ob die Eingabe ein MATLAB-Objekt ist |
ist echt | Überprüfen Sie, ob die Eingabe ein echtes Array ist |
isscalar | Bestimmen Sie, ob die Eingabe skalar ist |
isstr | Bestimmen Sie, ob die Eingabe ein Zeichenarray ist |
isstruct | Bestimmen Sie, ob die Eingabe ein Strukturarray ist |
isvector | Bestimmen Sie, ob die Eingabe ein Vektor ist |
Klasse | Bestimmen Sie die Objektklasse |
validateattributes | Überprüfen Sie die Gültigkeit des Arrays |
wer | Listen Sie Variablen im Arbeitsbereich mit Größen und Typen auf |
Beispiel
Erstellen Sie eine Skriptdatei mit dem folgenden Code:
x = 3
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
x = 23.54
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
x = [1 2 3]
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
x = 'Hello'
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
x = 3
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x = 23.540
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x =
1 2 3
ans = 0
ans = 1
ans = 1
ans = 0
x = Hello
ans = 0
ans = 0
ans = 1
ans = 0
ans = 0
Ein Operator ist ein Symbol, das den Compiler anweist, bestimmte mathematische oder logische Manipulationen durchzuführen. MATLAB wurde entwickelt, um hauptsächlich mit ganzen Matrizen und Arrays zu arbeiten. Daher arbeiten Operatoren in MATLAB sowohl mit skalaren als auch mit nicht skalaren Daten. MATLAB erlaubt die folgenden Arten von Elementaroperationen -
- Rechenzeichen
- Vergleichsoperatoren
- Logische Operatoren
- Bitweise Operationen
- Operationen einstellen
Rechenzeichen
MATLAB erlaubt zwei verschiedene Arten von arithmetischen Operationen -
- Matrixarithmetische Operationen
- Array-Arithmetikoperationen
Matrixarithmetische Operationen sind dieselben wie in der linearen Algebra definiert. Array-Operationen werden Element für Element sowohl auf eindimensionalen als auch auf mehrdimensionalen Arrays ausgeführt.
Die Matrixoperatoren und Arrayoperatoren werden durch das Punktsymbol (.) Unterscheidet. Da jedoch die Additions- und Subtraktionsoperation für Matrizen und Arrays gleich ist, ist der Operator für beide Fälle gleich. Die folgende Tabelle enthält eine kurze Beschreibung der Bediener -
Beispiele anzeigen
Sr.Nr. | Betreiber & Beschreibung |
---|---|
1 | + Addition oder unäres Plus. A + B addiert die in den Variablen A und B gespeicherten Werte. A und B müssen dieselbe Größe haben, es sei denn, einer ist ein Skalar. Ein Skalar kann zu einer Matrix beliebiger Größe hinzugefügt werden. |
2 | - Subtraktion oder unäres Minus. AB subtrahiert den Wert von B von A. A und B müssen dieselbe Größe haben, es sei denn, man ist ein Skalar. Ein Skalar kann von einer Matrix beliebiger Größe subtrahiert werden. |
3 | * Matrix-Multiplikation. C = A * B ist das lineare algebraische Produkt der Matrizen A und B. Genauer gesagt:
Für nicht skalare A und B muss die Anzahl der Spalten von A gleich der Anzahl der Zeilen von B sein. Ein Skalar kann eine Matrix beliebiger Größe multiplizieren. |
4 | .* Array-Multiplikation. A. * B ist das Element-für-Element-Produkt der Arrays A und B. A und B müssen dieselbe Größe haben, es sei denn, eines davon ist ein Skalar. |
5 | / Schrägstrich oder Matrix rechts Teilung. B / A ist ungefähr das gleiche wie B * inv (A). Genauer gesagt ist B / A = (A '\ B') '. |
6 | ./ Array rechte Teilung. A./B ist die Matrix mit den Elementen A (i, j) / B (i, j). A und B müssen dieselbe Größe haben, es sei denn, einer von ihnen ist ein Skalar. |
7 | \ Backslash oder Matrix linke Teilung. Wenn A eine quadratische Matrix ist, ist A \ B ungefähr dasselbe wie inv (A) * B, außer dass es auf eine andere Weise berechnet wird. Wenn A eine n-mal-n - Matrix ist und B ist ein Spaltenvektor mit N Komponenten oder eine Matrix mit mehreren solchen Säulen, dann X = A \ B ist die Lösung für die Gleichung AX = B . Eine Warnmeldung wird angezeigt, wenn A schlecht skaliert oder nahezu singulär ist. |
8 | .\ Array linke Teilung. A. \ B ist die Matrix mit den Elementen B (i, j) / A (i, j). A und B müssen dieselbe Größe haben, es sei denn, einer von ihnen ist ein Skalar. |
9 | ^ Matrixleistung. X ^ p ist X zur Potenz p, wenn p ein Skalar ist. Wenn p eine ganze Zahl ist, wird die Potenz durch wiederholtes Quadrieren berechnet. Wenn die Ganzzahl negativ ist, wird X zuerst invertiert. Für andere Werte von p beinhaltet die Berechnung Eigenwerte und Eigenvektoren, so dass wenn [V, D] = eig (X), dann X ^ p = V * D. ^ p / V. |
10 | .^ Array-Leistung. A. ^ B ist die Matrix mit den Elementen A (i, j) zur Potenz B (i, j). A und B müssen dieselbe Größe haben, es sei denn, einer von ihnen ist ein Skalar. |
11 | ' Matrix transponieren. A 'ist die lineare algebraische Transponierte von A. Für komplexe Matrizen ist dies die komplexe konjugierte Transponierte. |
12 | .' Array transponieren. EIN.' ist die Array-Transponierte von A. Für komplexe Matrizen beinhaltet dies keine Konjugation. |
Vergleichsoperatoren
Vergleichsoperatoren können auch sowohl skalare als auch nicht skalare Daten bearbeiten. Vergleichsoperatoren für Arrays führen Element-für-Element-Vergleiche zwischen zwei Arrays durch und geben ein logisches Array derselben Größe zurück, wobei Elemente auf logisch 1 (wahr) gesetzt sind, wobei die Beziehung wahr ist, und Elemente auf logisch 0 (falsch) gesetzt sind, wo sie ist nicht.
Die folgende Tabelle zeigt die in MATLAB verfügbaren Vergleichsoperatoren -
Beispiele anzeigen
Sr.Nr. | Betreiber & Beschreibung |
---|---|
1 | < Weniger als |
2 | <= Gleich oder kleiner als |
3 | > Größer als |
4 | >= Größer als oder gleich wie |
5 | == Gleicht |
6 | ~= Nicht gleichzusetzen mit |
Logische Operatoren
MATLAB bietet zwei Arten von logischen Operatoren und Funktionen:
Elementweise - Diese Operatoren bearbeiten entsprechende Elemente logischer Arrays.
Kurzschluss - Diese Operatoren arbeiten mit skalaren und logischen Ausdrücken.
Elementweise logische Operatoren arbeiten Element für Element auf logischen Arrays. Die Symbole &, | und ~ sind die logischen Array-Operatoren AND, OR und NOT.
Logische Kurzschlussoperatoren ermöglichen das Kurzschließen logischer Operationen. Die Symbole && und || sind die logischen Kurzschlussoperatoren AND und OR.
Beispiele anzeigen
Bitweise Operationen
Bitweise Operatoren arbeiten an Bits und führen eine bitweise Operation durch. Die Wahrheitstabellen für &, | und ^ lauten wie folgt:
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
Angenommen, A = 60; und B = 13; Jetzt im Binärformat werden sie wie folgt sein:
A = 0011 1100
B = 0000 1101
-----------------
A & B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~ A = 1100 0011
MATLAB bietet verschiedene Funktionen für bitweise Operationen wie 'bitweise und', 'bitweise oder' und 'bitweise nicht' Operationen, Verschiebungsoperationen usw.
Die folgende Tabelle zeigt die häufig verwendeten bitweisen Operationen -
Beispiele anzeigen
Funktion | Zweck |
---|---|
Bitand (a, b) | Bitweise UND von ganzen Zahlen a und b |
bitcmp (a) | Bitweise Ergänzung von a |
Bitget (a, pos) | Holen Sie sich das Bit an der angegebenen Position pos im Integer-Array a |
Bitor (a, b) | Bitweises ODER der ganzen Zahlen a und b |
Bitset (a, pos) | Bit an bestimmter Stelle setzen pos von a |
Bitverschiebung (a, k) | Gibt eine Verschiebung nach links um k Bits zurück, was einer Multiplikation mit 2 k entspricht . Negative Werte von k entsprechen dem Verschieben von Bits nach rechts oder dem Teilen durch 2 | k | und auf die nächste ganze Zahl in Richtung negativer Unendlichkeit runden. Alle Überlaufbits werden abgeschnitten. |
Bitxor (a, b) | Bitweises XOR der ganzen Zahlen a und b |
Swapbytes | Byte-Reihenfolge tauschen |
Operationen einstellen
MATLAB bietet verschiedene Funktionen für Mengenoperationen wie Vereinigung, Schnittmenge und Testen der Mengenmitgliedschaft usw.
Die folgende Tabelle zeigt einige häufig verwendete Set-Operationen -
Beispiele anzeigen
Sr.Nr. | Bedienungsanleitung |
---|---|
1 | intersect(A,B) Schnittpunkt zweier Arrays festlegen; Gibt die Werte zurück, die sowohl A als auch B gemeinsam sind. Die zurückgegebenen Werte sind in sortierter Reihenfolge. |
2 | intersect(A,B,'rows') Behandelt jede Zeile von A und jede Zeile von B als einzelne Entitäten und gibt die Zeilen zurück, die sowohl A als auch B gemeinsam sind. Die Zeilen der zurückgegebenen Matrix sind in sortierter Reihenfolge. |
3 | ismember(A,B) Gibt ein Array mit der gleichen Größe wie A zurück, das 1 (true) enthält, wobei sich die Elemente von A in B befinden. An anderer Stelle wird 0 (false) zurückgegeben. |
4 | ismember(A,B,'rows') Behandelt jede Zeile von A und jede Zeile von B als einzelne Entitäten und gibt einen Vektor zurück, der 1 (wahr) enthält, wobei die Zeilen der Matrix A auch Zeilen von B sind. An anderer Stelle wird 0 (falsch) zurückgegeben. |
5 | issorted(A) Gibt die logische 1 (true) zurück, wenn die Elemente von A in sortierter Reihenfolge vorliegen, und ansonsten die logische 0 (false). Eingabe A kann ein Vektor oder ein N-mal-1- oder 1-mal-N-Zellenarray von Strings sein.A is considered to be sorted if A und die Ausgabe von sort (A) sind gleich. |
6 | issorted(A, 'rows') Gibt logische 1 (wahr) zurück, wenn die Zeilen der zweidimensionalen Matrix A in sortierter Reihenfolge vorliegen, andernfalls logische 0 (falsch). Matrix A is considered to be sorted if A und die Ausgabe von Sortrows (A) ist gleich. |
7 | setdiff(A,B) Legt die Differenz zweier Arrays fest. Gibt die Werte in A zurück, die nicht in B sind. Die Werte im zurückgegebenen Array sind in sortierter Reihenfolge. |
8 | setdiff(A,B,'rows') Behandelt jede Zeile von A und jede Zeile von B als einzelne Entitäten und gibt die Zeilen von A zurück, die nicht in B sind. Die Zeilen der zurückgegebenen Matrix sind in sortierter Reihenfolge. Die Option 'Zeilen' unterstützt keine Zellenarrays. |
9 | setxor Legt das exklusive ODER von zwei Arrays fest |
10 | union Legt die Vereinigung zweier Arrays fest |
11 | unique Eindeutige Werte im Array |
Entscheidungsstrukturen erfordern, dass der Programmierer eine oder mehrere Bedingungen angibt, die vom Programm bewertet oder getestet werden sollen, zusammen mit einer Anweisung oder Anweisungen, die ausgeführt werden sollen, wenn die Bedingung als wahr bestimmt wird, und optional andere Anweisungen, die ausgeführt werden sollen, wenn die Bedingung wird als falsch bestimmt.
Es folgt die allgemeine Form einer typischen Entscheidungsstruktur, die in den meisten Programmiersprachen zu finden ist:
MATLAB bietet folgende Arten von Entscheidungserklärungen. Klicken Sie auf die folgenden Links, um deren Details zu überprüfen -
Sr.Nr. | Aussage & Beschreibung |
---|---|
1 | if ... end Anweisung Ein if ... end statement besteht aus einem booleschen Ausdruck, gefolgt von einer oder mehreren Anweisungen. |
2 | if ... else ... end Anweisung Ein if statement kann von einem optionalen gefolgt werden else statement, wird ausgeführt, wenn der boolesche Ausdruck false ist. |
3 | If ... elseif ... elseif ... else ... Anweisungen beenden Ein if Auf die Anweisung kann eine (oder mehrere) optionale Anweisungen folgen elseif... und ein else Aussage, die sehr nützlich ist, um verschiedene Bedingungen zu testen. |
4 | verschachtelte if-Anweisungen Sie können eine verwenden if oder elseif Aussage in einem anderen if oder elseif Aussage (n). |
5 | switch-Anweisung EIN switch Mit der Anweisung kann eine Variable auf Gleichheit mit einer Liste von Werten getestet werden. |
6 | verschachtelte switch-Anweisungen Sie können eine verwenden switch Aussage in einem anderen switch Aussage (n). |
Es kann vorkommen, dass Sie einen Codeblock mehrmals ausführen müssen. Im Allgemeinen werden Anweisungen nacheinander ausgeführt. Die erste Anweisung in einer Funktion wird zuerst ausgeführt, gefolgt von der zweiten usw.
Programmiersprachen bieten verschiedene Steuerungsstrukturen, die kompliziertere Ausführungspfade ermöglichen.
Mit einer Schleifenanweisung können wir eine Anweisung oder eine Gruppe von Anweisungen mehrmals ausführen. Im Folgenden wird die allgemeine Form einer Schleifenanweisung in den meisten Programmiersprachen beschrieben:
MATLAB bietet die folgenden Arten von Schleifen, um die Schleifenanforderungen zu erfüllen. Klicken Sie auf die folgenden Links, um deren Details zu überprüfen -
Sr.Nr. | Schleifentyp & Beschreibung |
---|---|
1 | while-Schleife Wiederholt eine Anweisung oder eine Gruppe von Anweisungen, während eine bestimmte Bedingung erfüllt ist. Es testet die Bedingung, bevor der Schleifenkörper ausgeführt wird. |
2 | für Schleife Führt eine Folge von Anweisungen mehrmals aus und verkürzt den Code, der die Schleifenvariable verwaltet. |
3 | verschachtelte Schleifen Sie können eine oder mehrere Schleifen in einer anderen Schleife verwenden. |
Schleifensteuerungsanweisungen
Schleifensteueranweisungen ändern die Ausführung von ihrer normalen Reihenfolge. Wenn die Ausführung einen Bereich verlässt, werden alle automatischen Objekte, die in diesem Bereich erstellt wurden, zerstört.
MATLAB unterstützt die folgenden Steueranweisungen. Klicken Sie auf die folgenden Links, um deren Details zu überprüfen.
Sr.Nr. | Steueranweisung & Beschreibung |
---|---|
1 | break-Anweisung Beendet die loop Anweisung und überträgt die Ausführung an die Anweisung unmittelbar nach der Schleife. |
2 | Aussage fortsetzen Bewirkt, dass die Schleife den Rest ihres Körpers überspringt und ihren Zustand sofort erneut testet, bevor sie wiederholt wird. |
Ein Vektor ist eine eindimensionale Anordnung von Zahlen. Mit MATLAB können zwei Arten von Vektoren erstellt werden:
- Zeilenvektoren
- Spaltenvektoren
Zeilenvektoren
Row vectors werden erstellt, indem die Elementmenge in eckige Klammern gesetzt wird und die Elemente durch Leerzeichen oder Komma begrenzt werden.
r = [7 8 9 10 11]
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
r =
7 8 9 10 11
Spaltenvektoren
Column vectors werden erstellt, indem die Elementmenge in eckige Klammern eingeschlossen wird und die Elemente durch Semikolon begrenzt werden.
c = [7; 8; 9; 10; 11]
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
c =
7
8
9
10
11
Referenzieren der Elemente eines Vektors
Sie können auf verschiedene Arten auf eines oder mehrere Elemente eines Vektors verweisen. Die i- te Komponente eines Vektors v wird als v (i) bezeichnet. Zum Beispiel -
v = [ 1; 2; 3; 4; 5; 6]; % creating a column vector of 6 elements
v(3)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans = 3
Wenn Sie auf einen Vektor mit einem Doppelpunkt wie v (:) verweisen, werden alle Komponenten des Vektors aufgelistet.
v = [ 1; 2; 3; 4; 5; 6]; % creating a column vector of 6 elements
v(:)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
1
2
3
4
5
6
Mit MATLAB können Sie eine Reihe von Elementen aus einem Vektor auswählen.
Lassen Sie uns zum Beispiel einen Zeilenvektor rv von 9 Elementen erstellen , dann werden wir die Elemente 3 bis 7 durch Schreiben referenzierenrv(3:7)und erstellen Sie einen neuen Vektor mit dem Namen sub_rv .
rv = [1 2 3 4 5 6 7 8 9];
sub_rv = rv(3:7)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
sub_rv =
3 4 5 6 7
Vektoroperationen
Lassen Sie uns in diesem Abschnitt die folgenden Vektoroperationen diskutieren:
Addition und Subtraktion von Vektoren
Skalare Multiplikation von Vektoren
Transponieren eines Vektors
Anhängen von Vektoren
Größe eines Vektors
Vektor-Punkt-Produkt
Vektoren mit gleichmäßig verteilten Elementen
Eine Matrix ist eine zweidimensionale Anordnung von Zahlen.
In MATLAB erstellen Sie eine Matrix, indem Sie Elemente in jeder Zeile als durch Kommas oder Leerzeichen getrennte Zahlen eingeben und das Ende jeder Zeile mit Semikolons markieren.
Lassen Sie uns zum Beispiel eine 4-mal-5-Matrix erstellen a -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
a =
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
Referenzieren der Elemente einer Matrix
Um auf ein Element in der m- ten Zeile und der n- ten Spalte einer Matrix mx zu verweisen , schreiben wir -
mx(m, n);
Zum Beispiel wird in den 2 mit dem Elemente beziehen nd Reihen und 5 - ten Spalte der Matrix ein , wie in dem letzten Abschnitt erstellt, geben wir -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a(2,5)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans = 6
Um auf alle Elemente in der m- ten Spalte zu verweisen, geben wir A (:, m) ein.
Lassen Sie uns einen Spaltenvektor v erstellen, aus den Elementen der 4 - ten Reihe der Matrix a -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
v = a(:,4)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
v =
4
5
6
7
Sie können auch die Elemente in der m- ten bis n- ten Spalte auswählen , dafür schreiben wir -
a(:,m:n)
Lassen Sie uns eine kleinere Matrix erstellen, die die Elemente aus der zweiten und dritten Spalte übernimmt -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a(:, 2:3)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
2 3
3 4
4 5
5 6
Auf die gleiche Weise können Sie eine Untermatrix erstellen, die einen Teil einer Matrix enthält.
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a(:, 2:3)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
2 3
3 4
4 5
5 6
Auf die gleiche Weise können Sie eine Untermatrix erstellen, die einen Teil einer Matrix enthält.
Lassen Sie uns zum Beispiel eine Submatrix sa erstellen, die den inneren Teil von a - nimmt
3 4 5
4 5 6
Schreiben Sie dazu -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
sa = a(2:3,2:4)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
sa =
3 4 5
4 5 6
Löschen einer Zeile oder Spalte in einer Matrix
Sie können eine ganze Zeile oder Spalte einer Matrix löschen, indem Sie dieser Zeile oder Spalte einen leeren Satz eckiger Klammern [] zuweisen. Grundsätzlich bezeichnet [] ein leeres Array.
Löschen wir zum Beispiel die vierte Zeile eines -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a( 4 , : ) = []
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
a =
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
Als nächstes löschen wir die fünfte Spalte von a -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a(: , 5)=[]
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
a =
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
Beispiel
In diesem Beispiel erstellen wir eine 3-mal-3-Matrix m. Anschließend kopieren wir die zweite und dritte Zeile dieser Matrix zweimal, um eine 4-mal-3-Matrix zu erstellen.
Erstellen Sie eine Skriptdatei mit dem folgenden Code:
a = [ 1 2 3 ; 4 5 6; 7 8 9];
new_mat = a([2,3,2,3],:)
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
new_mat =
4 5 6
7 8 9
4 5 6
7 8 9
Matrixoperationen
Lassen Sie uns in diesem Abschnitt die folgenden grundlegenden und häufig verwendeten Matrixoperationen diskutieren:
Addition und Subtraktion von Matrizen
Aufteilung der Matrizen
Skalare Operationen von Matrizen
Transponieren einer Matrix
Verketten von Matrizen
Matrix-Multiplikation
Determinante einer Matrix
Inverse einer Matrix
Alle Variablen aller Datentypen in MATLAB sind mehrdimensionale Arrays. Ein Vektor ist ein eindimensionales Array und eine Matrix ist ein zweidimensionales Array.
Wir haben bereits Vektoren und Matrizen diskutiert. In diesem Kapitel werden mehrdimensionale Arrays behandelt. Lassen Sie uns jedoch zuvor einige spezielle Arten von Arrays diskutieren.
Spezielle Arrays in MATLAB
In diesem Abschnitt werden einige Funktionen erläutert, mit denen spezielle Arrays erstellt werden. Für alle diese Funktionen erstellt ein einzelnes Argument ein quadratisches Array, doppelte Argumente ein rechteckiges Array.
Das zeros() Funktion erstellt ein Array aller Nullen -
Zum Beispiel -
zeros(5)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
Das ones() Funktion erstellt ein Array von allen -
Zum Beispiel -
ones(4,3)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
1 1 1
1 1 1
1 1 1
1 1 1
Das eye() Funktion erstellt eine Identitätsmatrix.
Zum Beispiel -
eye(4)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Das rand() Funktion erstellt ein Array von gleichmäßig verteilten Zufallszahlen auf (0,1) -
Zum Beispiel -
rand(3, 5)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
0.8147 0.9134 0.2785 0.9649 0.9572
0.9058 0.6324 0.5469 0.1576 0.4854
0.1270 0.0975 0.9575 0.9706 0.8003
Ein magisches Quadrat
EIN magic square ist ein Quadrat, das dieselbe Summe erzeugt, wenn seine Elemente zeilenweise, spaltenweise oder diagonal hinzugefügt werden.
Das magic()Funktion erstellt ein magisches Quadrat-Array. Es braucht ein einzelnes Argument, das die Größe des Quadrats angibt. Das Argument muss ein Skalar größer oder gleich 3 sein.
magic(4)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Mehrdimensionale Arrays
Ein Array mit mehr als zwei Dimensionen wird in MATLAB als mehrdimensionales Array bezeichnet. Mehrdimensionale Arrays in MATLAB sind eine Erweiterung der normalen zweidimensionalen Matrix.
Um ein mehrdimensionales Array zu generieren, erstellen wir im Allgemeinen zunächst ein zweidimensionales Array und erweitern es.
Erstellen wir beispielsweise ein zweidimensionales Array a.
a = [7 9 5; 6 1 9; 4 3 2]
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
a =
7 9 5
6 1 9
4 3 2
Das Array a ist ein 3-mal-3-Array; wir können eine dritte Dimension hinzuzufügen ein , indem Sie die Werte wie die Bereitstellung -
a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
a =
ans(:,:,1) =
0 0 0
0 0 0
0 0 0
ans(:,:,2) =
1 2 3
4 5 6
7 8 9
Wir können auch mehrdimensionale Arrays mit den Funktionen Einsen (), Nullen () oder Rand () erstellen.
Zum Beispiel,
b = rand(4,3,2)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
b(:,:,1) =
0.0344 0.7952 0.6463
0.4387 0.1869 0.7094
0.3816 0.4898 0.7547
0.7655 0.4456 0.2760
b(:,:,2) =
0.6797 0.4984 0.2238
0.6551 0.9597 0.7513
0.1626 0.3404 0.2551
0.1190 0.5853 0.5060
Wir können auch die verwenden cat()Funktion zum Erstellen mehrdimensionaler Arrays. Es verkettet eine Liste von Arrays entlang einer bestimmten Dimension -
Die Syntax für die Funktion cat () lautet -
B = cat(dim, A1, A2...)
Wo,
B ist das neu erstellte Array
A1 , A2 , ... sind die zu verkettenden Arrays
dim ist die Dimension, entlang der die Arrays verkettet werden sollen
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
a = [9 8 7; 6 5 4; 3 2 1];
b = [1 2 3; 4 5 6; 7 8 9];
c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0])
Wenn Sie die Datei ausführen, wird Folgendes angezeigt:
c(:,:,1) =
9 8 7
6 5 4
3 2 1
c(:,:,2) =
1 2 3
4 5 6
7 8 9
c(:,:,3) =
2 3 1
4 7 8
3 9 0
Array-Funktionen
MATLAB bietet die folgenden Funktionen zum Sortieren, Drehen, Permutieren, Umformen oder Verschieben von Array-Inhalten.
Funktion | Zweck |
---|---|
Länge | Länge des Vektors oder der größten Array-Dimension |
ndims | Anzahl der Array-Dimensionen |
numel | Anzahl der Array-Elemente |
Größe | Array-Dimensionen |
iscolumn | Legt fest, ob die Eingabe ein Spaltenvektor ist |
ist leer | Legt fest, ob das Array leer ist |
Ismatrix | Legt fest, ob die Eingabe eine Matrix ist |
isrow | Bestimmt, ob die Eingabe ein Zeilenvektor ist |
isscalar | Legt fest, ob die Eingabe skalar ist |
isvector | Bestimmt, ob die Eingabe ein Vektor ist |
blkdiag | Konstruiert eine Blockdiagonalmatrix aus Eingabeargumenten |
Schaltkreis | Verschiebt das Array kreisförmig |
ctransponieren | Komplexe konjugierte Transponierte |
diag | Diagonale Matrizen und Diagonalen der Matrix |
flipdim | Spiegelt das Array entlang der angegebenen Dimension |
fliplr | Spiegelt die Matrix von links nach rechts |
Flipud | Dreht die Matrix nach oben und unten |
ipermute | Invertiert die permutierten Dimensionen des ND-Arrays |
permutieren | Ordnet die Abmessungen des ND-Arrays neu an |
repmat | Replikate und Kachelarray |
umformen | Formt das Array um |
rot90 | Dreht die Matrix um 90 Grad |
shiftdim | Verschiebt die Abmessungen |
ausgegeben | Legt fest, ob festgelegte Elemente in sortierter Reihenfolge sind |
Sortieren | Sortiert Array-Elemente in aufsteigender oder absteigender Reihenfolge |
sortrows | Sortiert Zeilen in aufsteigender Reihenfolge |
drücken | Entfernt Singleton-Dimensionen |
transponieren | Transponieren |
vektorisieren | Vektorisiert den Ausdruck |
Beispiele
Die folgenden Beispiele veranschaulichen einige der oben genannten Funktionen.
Length, Dimension and Number of elements −
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9];
length(x) % length of x vector
y = rand(3, 4, 5, 2);
ndims(y) % no of dimensions in array y
s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab'];
numel(s) % no of elements in s
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
ans = 8
ans = 4
ans = 23
Circular Shifting of the Array Elements −
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
a = [1 2 3; 4 5 6; 7 8 9] % the original array a
b = circshift(a,1) % circular shift first dimension values down by 1.
c = circshift(a,[1 -1]) % circular shift first dimension values % down by 1
% and second dimension values to the left % by 1.
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
a =
1 2 3
4 5 6
7 8 9
b =
7 8 9
1 2 3
4 5 6
c =
8 9 7
2 3 1
5 6 4
Arrays sortieren
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
v = [ 23 45 12 9 5 0 19 17] % horizontal vector
sort(v) % sorting v
m = [2 6 4; 5 3 9; 2 0 1] % two dimensional array
sort(m, 1) % sorting m along the row
sort(m, 2) % sorting m along the column
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
v =
23 45 12 9 5 0 19 17
ans =
0 5 9 12 17 19 23 45
m =
2 6 4
5 3 9
2 0 1
ans =
2 0 1
2 3 4
5 6 9
ans =
2 4 6
3 5 9
0 1 2
Zellenarray
Zellenarrays sind Arrays indizierter Zellen, in denen jede Zelle ein Array mit unterschiedlichen Dimensionen und Datentypen speichern kann.
Das cellFunktion wird zum Erstellen eines Zellenarrays verwendet. Die Syntax für die Zellenfunktion lautet -
C = cell(dim)
C = cell(dim1,...,dimN)
D = cell(obj)
Wo,
C ist das Zellenarray;
dim ist eine skalare Ganzzahl oder ein Vektor von Ganzzahlen, die die Dimensionen des Zellenarrays C angeben;
dim1, ..., dimN sind skalare Ganzzahlen, die die Dimensionen von C angeben.
obj ist einer der folgenden -
- Java-Array oder -Objekt
- .NET-Array vom Typ System.String oder System.Object
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
c = cell(2, 5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
c =
{
[1,1] = Red
[2,1] = 1
[1,2] = Blue
[2,2] = 2
[1,3] = Green
[2,3] = 3
[1,4] = Yellow
[2,4] = 4
[1,5] = White
[2,5] = 5
}
Zugriff auf Daten in Zellenarrays
Es gibt zwei Möglichkeiten, auf die Elemente eines Zellenarrays zu verweisen:
- Schließen Sie die Indizes in die erste Klammer () ein, um auf Zellensätze zu verweisen
- Einschließen der Indizes in Klammern {}, um auf die Daten in einzelnen Zellen zu verweisen
Wenn Sie die Indizes in die erste Klammer einschließen, bezieht sich dies auf die Menge der Zellen.
Zellarray-Indizes in glatten Klammern beziehen sich auf Zellensätze.
Zum Beispiel -
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2,1:2)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
{
[1,1] = Red
[2,1] = 1
[1,2] = Blue
[2,2] = 2
}
Sie können auch auf den Inhalt von Zellen zugreifen, indem Sie mit geschweiften Klammern indizieren.
Zum Beispiel -
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans = Blue
ans = Green
ans = Yellow
Das colon(:)ist einer der nützlichsten Operatoren in MATLAB. Es wird verwendet, um Vektoren, tiefgestellte Arrays und zu erstellenspecify for iterations.
Wenn Sie einen Zeilenvektor erstellen möchten, der Ganzzahlen von 1 bis 10 enthält, schreiben Sie -
1:10
MATLAB führt die Anweisung aus und gibt einen Zeilenvektor zurück, der die Ganzzahlen von 1 bis 10 enthält.
ans =
1 2 3 4 5 6 7 8 9 10
Wenn Sie einen anderen Inkrementwert als einen angeben möchten, z.
100: -5: 50
MATLAB führt die Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
100 95 90 85 80 75 70 65 60 55 50
Nehmen wir ein anderes Beispiel -
0:pi/8:pi
MATLAB führt die Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
Columns 1 through 7
0 0.3927 0.7854 1.1781 1.5708 1.9635 2.3562
Columns 8 through 9
2.7489 3.1416
Mit dem Doppelpunktoperator können Sie einen Vektor von Indizes erstellen, um Zeilen, Spalten oder Elemente von Arrays auszuwählen.
Die folgende Tabelle beschreibt die Verwendung für diesen Zweck (lassen Sie uns eine Matrix A haben) -
Format | Zweck |
---|---|
A(:,j) | ist die j-te Spalte von A. |
A(i,:) | ist die i-te Reihe von A. |
A(:,:) | ist das äquivalente zweidimensionale Array. Für Matrizen ist dies dasselbe wie für A. |
A(j:k) | ist A (j), A (j + 1), ..., A (k). |
A(:,j:k) | ist A (:, j), A (:, j + 1), ..., A (:, k). |
A(:,:,k) | ist die k- te Seite des dreidimensionalen Arrays A. |
A(i,j,k,:) | ist ein Vektor in einer vierdimensionalen Anordnung A. Der Vektor umfasst A (i, j, k, 1), A (i, j, k, 2), A (i, j, k, 3) und so weiter. |
A(:) | ist alle Elemente von A, betrachtet als eine einzelne Spalte. Auf der linken Seite einer Zuweisungsanweisung füllt A (:) A aus und behält seine Form von zuvor bei. In diesem Fall muss die rechte Seite die gleiche Anzahl von Elementen wie A enthalten. |
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
A = [1 2 3 4; 4 5 6 7; 7 8 9 10]
A(:,2) % second column of A
A(:,2:3) % second and third column of A
A(2:3,2:3) % second and third rows and second and third columns
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
A =
1 2 3 4
4 5 6 7
7 8 9 10
ans =
2
5
8
ans =
2 3
5 6
8 9
ans =
5 6
8 9
MATLAB unterstützt verschiedene numerische Klassen, darunter vorzeichenbehaftete und vorzeichenlose Ganzzahlen sowie Gleitkommazahlen mit einfacher und doppelter Genauigkeit. Standardmäßig speichert MATLAB alle numerischen Werte als Gleitkommazahlen mit doppelter Genauigkeit.
Sie können eine beliebige Anzahl oder ein beliebiges Array von Zahlen als Ganzzahlen oder als Zahlen mit einfacher Genauigkeit speichern.
Alle numerischen Typen unterstützen grundlegende Array-Operationen und mathematische Operationen.
Konvertierung in verschiedene numerische Datentypen
MATLAB bietet die folgenden Funktionen zum Konvertieren in verschiedene numerische Datentypen:
Funktion | Zweck |
---|---|
doppelt | Konvertiert in eine Zahl mit doppelter Genauigkeit |
Single | Konvertiert in eine Zahl mit einfacher Genauigkeit |
int8 | Konvertiert in eine 8-Bit-Ganzzahl mit Vorzeichen |
int16 | Konvertiert in eine 16-Bit-Ganzzahl mit Vorzeichen |
int32 | Konvertiert in eine vorzeichenbehaftete 32-Bit-Ganzzahl |
int64 | Konvertiert in eine 64-Bit-Ganzzahl mit Vorzeichen |
uint8 | Konvertiert in eine vorzeichenlose 8-Bit-Ganzzahl |
uint16 | Konvertiert in eine vorzeichenlose 16-Bit-Ganzzahl |
uint32 | Konvertiert in eine vorzeichenlose 32-Bit-Ganzzahl |
uint64 | Konvertiert in eine vorzeichenlose 64-Bit-Ganzzahl |
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
x = single([5.32 3.47 6.28]) .* 7.5
x = double([5.32 3.47 6.28]) .* 7.5
x = int8([5.32 3.47 6.28]) .* 7.5
x = int16([5.32 3.47 6.28]) .* 7.5
x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
x =
39.900 26.025 47.100
x =
39.900 26.025 47.100
x =
38 23 45
x =
38 23 45
x =
38 23 45
x =
38 23 45
Beispiel
Lassen Sie uns das vorherige Beispiel noch etwas erweitern. Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5
x = num2cell(x)
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
x =
38 23 45
x =
38 23 45
x =
{
[1,1] = 38
[1,2] = 23
[1,3] = 45
}
Kleinste und größte Ganzzahlen
Die Funktionen intmax() und intmin() Gibt die Maximal- und Minimalwerte zurück, die mit allen Arten von Ganzzahlen dargestellt werden können.
Beide Funktionen verwenden den Integer-Datentyp als Argument, z. B. intmax (int8) oder intmin (int64), und geben die Maximal- und Minimalwerte zurück, die Sie mit dem Integer-Datentyp darstellen können.
Beispiel
Das folgende Beispiel zeigt, wie Sie die kleinsten und größten Werte von Ganzzahlen erhalten. Erstellen Sie eine Skriptdatei und schreiben Sie den folgenden Code hinein -
% displaying the smallest and largest signed integer data
str = 'The range for int8 is:\n\t%d to %d ';
sprintf(str, intmin('int8'), intmax('int8'))
str = 'The range for int16 is:\n\t%d to %d ';
sprintf(str, intmin('int16'), intmax('int16'))
str = 'The range for int32 is:\n\t%d to %d ';
sprintf(str, intmin('int32'), intmax('int32'))
str = 'The range for int64 is:\n\t%d to %d ';
sprintf(str, intmin('int64'), intmax('int64'))
% displaying the smallest and largest unsigned integer data
str = 'The range for uint8 is:\n\t%d to %d ';
sprintf(str, intmin('uint8'), intmax('uint8'))
str = 'The range for uint16 is:\n\t%d to %d ';
sprintf(str, intmin('uint16'), intmax('uint16'))
str = 'The range for uint32 is:\n\t%d to %d ';
sprintf(str, intmin('uint32'), intmax('uint32'))
str = 'The range for uint64 is:\n\t%d to %d ';
sprintf(str, intmin('uint64'), intmax('uint64'))
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
ans = The range for int8 is:
-128 to 127
ans = The range for int16 is:
-32768 to 32767
ans = The range for int32 is:
-2147483648 to 2147483647
ans = The range for int64 is:
0 to 0
ans = The range for uint8 is:
0 to 255
ans = The range for uint16 is:
0 to 65535
ans = The range for uint32 is:
0 to -1
ans = The range for uint64 is:
0 to 18446744073709551616
Kleinste und größte Gleitkommazahlen
Die Funktionen realmax() und realmin() Gibt die Maximal- und Minimalwerte zurück, die mit Gleitkommazahlen dargestellt werden können.
Beide Funktionen geben beim Aufruf mit dem Argument 'single' die Maximal- und Minimalwerte zurück, die Sie mit dem Datentyp mit einfacher Genauigkeit darstellen können, und geben beim Aufruf mit dem Argument 'double' die Maximal- und Minimalwerte zurück, mit denen Sie darstellen können der Datentyp mit doppelter Genauigkeit.
Beispiel
Das folgende Beispiel zeigt, wie Sie die kleinsten und größten Gleitkommazahlen erhalten. Erstellen Sie eine Skriptdatei und schreiben Sie den folgenden Code hinein -
% displaying the smallest and largest single-precision
% floating point number
str = 'The range for single is:\n\t%g to %g and\n\t %g to %g';
sprintf(str, -realmax('single'), -realmin('single'), ...
realmin('single'), realmax('single'))
% displaying the smallest and largest double-precision
% floating point number
str = 'The range for double is:\n\t%g to %g and\n\t %g to %g';
sprintf(str, -realmax('double'), -realmin('double'), ...
realmin('double'), realmax('double'))
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
ans = The range for single is:
-3.40282e+38 to -1.17549e-38 and
1.17549e-38 to 3.40282e+38
ans = The range for double is:
-1.79769e+308 to -2.22507e-308 and
2.22507e-308 to 1.79769e+308
Das Erstellen einer Zeichenfolge ist in MATLAB ganz einfach. Tatsächlich haben wir es schon oft benutzt. Beispielsweise geben Sie Folgendes in die Eingabeaufforderung ein:
my_string = 'Tutorials Point'
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
my_string = Tutorials Point
MATLAB betrachtet alle Variablen als Arrays und Zeichenfolgen als Zeichenarrays. Verwenden wir diewhos Befehl zum Überprüfen der oben erstellten Variablen -
whos
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
Name Size Bytes Class Attributes
my_string 1x16 32 char
Interessanterweise können Sie numerische Konvertierungsfunktionen wie verwenden uint8 oder uint16um die Zeichen in der Zeichenfolge in ihre numerischen Codes umzuwandeln. Daschar Funktion konvertiert den ganzzahligen Vektor zurück in Zeichen -
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
my_string = 'Tutorial''s Point';
str_ascii = uint8(my_string) % 8-bit ascii values
str_back_to_char= char(str_ascii)
str_16bit = uint16(my_string) % 16-bit ascii values
str_back_to_char = char(str_16bit)
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
str_ascii =
84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
str_16bit =
84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
Rechteckiges Zeichenarray
Die Zeichenfolgen, die wir bisher besprochen haben, sind eindimensionale Zeichenarrays. Wir müssen jedoch mehr als das speichern. Wir müssen mehr dimensionale Textdaten in unserem Programm speichern. Dies wird erreicht, indem rechteckige Zeichenarrays erstellt werden.
Die einfachste Möglichkeit, ein rechteckiges Zeichenarray zu erstellen, besteht darin, zwei oder mehr eindimensionale Zeichenarrays je nach Bedarf vertikal oder horizontal zu verketten.
Sie können Zeichenfolgen auf eine der folgenden Arten vertikal kombinieren:
Verwenden des MATLAB-Verkettungsoperators []und Trennen jeder Zeile mit einem Semikolon (;). Bitte beachten Sie, dass bei dieser Methode jede Zeile die gleiche Anzahl von Zeichen enthalten muss. Bei Zeichenfolgen mit unterschiedlichen Längen sollten Sie nach Bedarf Leerzeichen einfügen.
Verwendung der charFunktion. Wenn die Zeichenfolgen unterschiedlich lang sind, füllt char die kürzeren Zeichenfolgen mit nachgestellten Leerzeichen auf, sodass jede Zeile die gleiche Anzahl von Zeichen enthält.
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
doc_profile = ['Zara Ali '; ...
'Sr. Surgeon '; ...
'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
'RN Tagore Cardiology Research Center')
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
doc_profile =
Zara Ali
Sr. Surgeon
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali
Sr. Surgeon
RN Tagore Cardiology Research Center
Sie können Zeichenfolgen auf eine der folgenden Arten horizontal kombinieren:
Verwenden des MATLAB-Verkettungsoperators []und Trennen der Eingabezeichenfolgen durch ein Komma oder ein Leerzeichen. Diese Methode behält alle nachgestellten Leerzeichen in den Eingabearrays bei.
Verwenden der Zeichenfolgenverkettungsfunktion strcat. Diese Methode entfernt nachgestellte Leerzeichen in den Eingaben.
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
name = 'Zara Ali ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
profile = Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center
profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center
Kombinieren von Strings zu einem Zellenarray
Aus unserer vorherigen Diskussion geht hervor, dass das Kombinieren von Zeichenfolgen mit unterschiedlichen Längen schmerzhaft sein kann, da alle Zeichenfolgen im Array dieselbe Länge haben müssen. Wir haben Leerzeichen am Ende von Zeichenfolgen verwendet, um deren Länge auszugleichen.
Eine effizientere Möglichkeit zum Kombinieren der Zeichenfolgen besteht jedoch darin, das resultierende Array in ein Zellenarray zu konvertieren.
Das MATLAB-Zellenarray kann verschiedene Größen und Datentypen in einem Array enthalten. Zellenarrays bieten eine flexiblere Möglichkeit zum Speichern von Zeichenfolgen unterschiedlicher Länge.
Das cellstr Funktion konvertiert ein Zeichenarray in ein Zellenarray von Zeichenfolgen.
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
name = 'Zara Ali ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
{
[1,1] = Zara Ali
[2,1] = Sr. Surgeon
[3,1] = R N Tagore Cardiology Research Center
}
String-Funktionen in MATLAB
MATLAB bietet zahlreiche Zeichenfolgenfunktionen zum Erstellen, Kombinieren, Parsen, Vergleichen und Bearbeiten von Zeichenfolgen.
Die folgende Tabelle enthält eine kurze Beschreibung der Zeichenfolgenfunktionen in MATLAB -
Funktion | Zweck |
---|---|
Funktionen zum Speichern von Text in Zeichenarrays, Kombinieren von Zeichenarrays usw. | |
Leerzeichen | Erstellen Sie eine Zeichenfolge mit leeren Zeichen |
cellstr | Erstellen Sie ein Zellenarray mit Zeichenfolgen aus dem Zeichenarray |
verkohlen | In Zeichenarray (Zeichenfolge) konvertieren |
iscellstr | Bestimmen Sie, ob die Eingabe ein Zellenarray von Zeichenfolgen ist |
ischar | Bestimmen Sie, ob es sich bei dem Element um ein Zeichenarray handelt |
sprintf | Daten in Zeichenfolge formatieren |
strcat | Verketten Sie Zeichenfolgen horizontal |
strjoin | Verbinden Sie Zeichenfolgen im Zellenarray zu einer einzelnen Zeichenfolge |
Funktionen zum Identifizieren von Teilen von Zeichenfolgen, Suchen und Ersetzen von Teilzeichenfolgen | |
ischar | Bestimmen Sie, ob es sich bei dem Element um ein Zeichenarray handelt |
isletter | Array-Elemente, die alphabetische Buchstaben sind |
isspace | Array-Elemente, die Leerzeichen sind |
isstrprop | Bestimmen Sie, ob die Zeichenfolge der angegebenen Kategorie entspricht |
sscanf | Lesen Sie formatierte Daten aus der Zeichenfolge |
strfind | Suchen Sie eine Zeichenfolge in einer anderen |
strrep | Suchen und ersetzen Sie die Teilzeichenfolge |
strsplit | Zeichenfolge am angegebenen Trennzeichen teilen |
strtok | Ausgewählte Teile der Zeichenfolge |
validatestring | Überprüfen Sie die Gültigkeit der Textzeichenfolge |
symvar | Bestimmen Sie symbolische Variablen im Ausdruck |
regulärer Ausdruck | Übereinstimmenden regulären Ausdruck (Groß- und Kleinschreibung beachten) |
regexpi | Übereinstimmenden regulären Ausdruck (Groß- und Kleinschreibung wird nicht berücksichtigt) |
Regexprep | Ersetzen Sie die Zeichenfolge durch einen regulären Ausdruck |
regexptranslate | Übersetzen Sie die Zeichenfolge in einen regulären Ausdruck |
Funktionen zum Stringvergleich | |
strcmp | Zeichenfolgen vergleichen (Groß- und Kleinschreibung beachten) |
strcmpi | Zeichenfolgen vergleichen (Groß- und Kleinschreibung nicht berücksichtigen) |
strncmp | Vergleichen Sie die ersten n Zeichen von Zeichenfolgen (Groß- und Kleinschreibung beachten) |
strncmpi | Vergleichen Sie die ersten n Zeichen von Zeichenfolgen (ohne Berücksichtigung der Groß- und Kleinschreibung) |
Funktionen zum Ändern der Zeichenfolge in Groß- oder Kleinbuchstaben, Erstellen oder Entfernen von Leerzeichen | |
deblank | Entfernen Sie die nachfolgenden Leerzeichen vom Ende der Schnur |
strtrim | Entfernen Sie den führenden und den nachfolgenden Leerraum von der Zeichenfolge |
niedriger | Zeichenfolge in Kleinbuchstaben konvertieren |
Oberer, höher | Zeichenfolge in Großbuchstaben konvertieren |
gerade | Zeichenarray ausrichten |
Beispiele
Die folgenden Beispiele veranschaulichen einige der oben genannten Zeichenfolgenfunktionen -
Zeichenfolgen formatieren
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
A = pi*1000*ones(1,5);
sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
ans = 3141.592654
3141.59
+3141.59
3141.59
000003141.59
Strings verbinden
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
%cell array of strings
str_array = {'red','blue','green', 'yellow', 'orange'};
% Join strings in cell array into single string
str1 = strjoin(str_array, "-")
str2 = strjoin(str_array, ",")
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange
Suchen und Ersetzen von Zeichenfolgen
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
students = {'Zara Ali', 'Neha Bhatnagar', ...
'Monica Malik', 'Madhu Gautam', ...
'Madhu Sharma', 'Bhawna Sharma',...
'Nuha Ali', 'Reva Dutta', ...
'Sunaina Ali', 'Sofia Kabir'};
% The strrep function searches and replaces sub-string.
new_student = strrep(students(8), 'Reva', 'Poulomi')
% Display first names
first_names = strtok(students)
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
new_student =
{
[1,1] = Poulomi Dutta
}
first_names =
{
[1,1] = Zara
[1,2] = Neha
[1,3] = Monica
[1,4] = Madhu
[1,5] = Madhu
[1,6] = Bhawna
[1,7] = Nuha
[1,8] = Reva
[1,9] = Sunaina
[1,10] = Sofia
}
Strings vergleichen
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
str1 = 'This is test'
str2 = 'This is text'
if (strcmp(str1, str2))
sprintf('%s and %s are equal', str1, str2)
else
sprintf('%s and %s are not equal', str1, str2)
end
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal
Eine Funktion ist eine Gruppe von Anweisungen, die zusammen eine Aufgabe ausführen. In MATLAB werden Funktionen in separaten Dateien definiert. Der Name der Datei und der Funktion sollte identisch sein.
Funktionen arbeiten mit Variablen in ihrem eigenen Arbeitsbereich, der auch als bezeichnet wird local workspace, getrennt von dem Arbeitsbereich, auf den Sie an der MATLAB-Eingabeaufforderung zugreifen, die als bezeichnet wird base workspace.
Funktionen können mehr als ein Eingabeargument akzeptieren und mehr als ein Ausgabeargument zurückgeben.
Die Syntax einer Funktionsanweisung lautet -
function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)
Beispiel
Die folgende Funktion mit dem Namen mymax sollte in eine Datei mit dem Namen mymax.m geschrieben werden . Es werden fünf Zahlen als Argument verwendet und das Maximum der Zahlen zurückgegeben.
Erstellen Sie eine Funktionsdatei mit dem Namen mymax.m und geben Sie den folgenden Code ein:
function max = mymax(n1, n2, n3, n4, n5)
%This function calculates the maximum of the
% five numbers given as input
max = n1;
if(n2 > max)
max = n2;
end
if(n3 > max)
max = n3;
end
if(n4 > max)
max = n4;
end
if(n5 > max)
max = n5;
end
Die erste Zeile einer Funktion beginnt mit dem Schlüsselwort function. Es gibt den Namen der Funktion und die Reihenfolge der Argumente an. In unserem Beispiel verfügt die mymax- Funktion über fünf Eingabeargumente und ein Ausgabeargument.
Die Kommentarzeilen direkt nach der Funktionsanweisung enthalten den Hilfetext. Diese Zeilen werden gedruckt, wenn Sie -
help mymax
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
This function calculates the maximum of the
five numbers given as input
Sie können die Funktion aufrufen als -
mymax(34, 78, 89, 23, 11)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans = 89
Anonyme Funktionen
Eine anonyme Funktion ist wie eine Inline-Funktion in traditionellen Programmiersprachen, die in einer einzelnen MATLAB-Anweisung definiert ist. Es besteht aus einem einzelnen MATLAB-Ausdruck und einer beliebigen Anzahl von Eingabe- und Ausgabeargumenten.
Sie können eine anonyme Funktion direkt in der MATLAB-Befehlszeile oder innerhalb einer Funktion oder eines Skripts definieren.
Auf diese Weise können Sie einfache Funktionen erstellen, ohne eine Datei für sie erstellen zu müssen.
Die Syntax zum Erstellen einer anonymen Funktion aus einem Ausdruck lautet
f = @(arglist)expression
Beispiel
In diesem Beispiel schreiben wir eine anonyme Funktion namens power, die zwei Zahlen als Eingabe verwendet und die erste Zahl auf die Potenz der zweiten Zahl zurückgibt.
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
power = @(x, n) x.^n;
result1 = power(7, 3)
result2 = power(49, 0.5)
result3 = power(10, -10)
result4 = power (4.5, 1.5)
Wenn Sie die Datei ausführen, wird Folgendes angezeigt:
result1 = 343
result2 = 7
result3 = 1.0000e-10
result4 = 9.5459
Primär- und Unterfunktionen
Jede andere Funktion als eine anonyme Funktion muss in einer Datei definiert werden. Jede Funktionsdatei enthält eine erforderliche Primärfunktion, die zuerst angezeigt wird, und eine beliebige Anzahl optionaler Unterfunktionen, die nach der Primärfunktion stehen und von dieser verwendet werden.
Primäre Funktionen können von außerhalb der Datei, die sie definiert, entweder über die Befehlszeile oder über andere Funktionen aufgerufen werden. Unterfunktionen können jedoch nicht über die Befehlszeile oder andere Funktionen außerhalb der Funktionsdatei aufgerufen werden.
Unterfunktionen sind nur für die Primärfunktion und andere Unterfunktionen in der Funktionsdatei sichtbar, die sie definiert.
Beispiel
Schreiben wir eine Funktion namens quadratisch, die die Wurzeln einer quadratischen Gleichung berechnet. Die Funktion würde drei Eingaben benötigen, den quadratischen Koeffizienten, den linearen Koeffizienten und den konstanten Term. Es würde die Wurzeln zurückgeben.
Die Funktion Datei quadratic.m wird die primäre Funktion enthält , quadratische und die Unterfunktionsscheibe , die die Diskriminanzfunktionen berechnet.
Erstellen Sie eine Funktionsdatei quadratic.m und geben Sie den folgenden Code ein:
function [x1,x2] = quadratic(a,b,c)
%this function returns the roots of
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficients of x2, x and the
%constant term
% It returns the roots
d = disc(a,b,c);
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end % end of quadratic
function dis = disc(a,b,c)
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end % end of sub-function
Sie können die obige Funktion an der Eingabeaufforderung wie folgt aufrufen:
quadratic(2,4,-4)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans = 0.7321
Verschachtelte Funktionen
Sie können Funktionen innerhalb des Körpers einer anderen Funktion definieren. Diese werden als verschachtelte Funktionen bezeichnet. Eine verschachtelte Funktion enthält einige oder alle Komponenten einer anderen Funktion.
Verschachtelte Funktionen werden im Rahmen einer anderen Funktion definiert und teilen sich den Zugriff auf den Arbeitsbereich der enthaltenen Funktion.
Eine verschachtelte Funktion folgt der folgenden Syntax:
function x = A(p1, p2)
...
B(p2)
function y = B(p3)
...
end
...
end
Beispiel
Lassen Sie uns die Funktion quadratisch umschreiben , aus dem vorherigen Beispiel, diesmal ist die Disc-Funktion jedoch eine verschachtelte Funktion.
Erstellen Sie eine Funktionsdatei quadratic2.m und geben Sie den folgenden Code ein:
function [x1,x2] = quadratic2(a,b,c)
function disc % nested function
d = sqrt(b^2 - 4*a*c);
end % end of function disc
disc;
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end % end of function quadratic2
Sie können die obige Funktion an der Eingabeaufforderung wie folgt aufrufen:
quadratic2(2,4,-4)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans = 0.73205
Private Funktionen
Eine private Funktion ist eine primäre Funktion, die nur für eine begrenzte Gruppe anderer Funktionen sichtbar ist. Wenn Sie die Implementierung einer oder mehrerer Funktionen nicht verfügbar machen möchten, können Sie sie als private Funktionen erstellen.
Private Funktionen befinden sich in subfolders mit dem speziellen Namen private.
Sie sind nur für Funktionen im übergeordneten Ordner sichtbar.
Beispiel
Schreiben wir die quadratische Funktion neu. Diesmal ist die Scheibenfunktion , die die Diskriminante berechnet, jedoch eine private Funktion.
Erstellen Sie einen Unterordner mit dem Namen privat im Arbeitsverzeichnis. Speichern Sie die folgende Funktionsdatei disc.m darin -
function dis = disc(a,b,c)
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end % end of sub-function
Erstellen Sie eine Funktion quadratic3.m in Ihrem Arbeitsverzeichnis und geben Sie den folgenden Code ein:
function [x1,x2] = quadratic3(a,b,c)
%this function returns the roots of
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficient of x2, x and the
%constant term
% It returns the roots
d = disc(a,b,c);
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end % end of quadratic3
Sie können die obige Funktion an der Eingabeaufforderung wie folgt aufrufen:
quadratic3(2,4,-4)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans = 0.73205
Globale Variablen
Globale Variablen können von mehr als einer Funktion gemeinsam genutzt werden. Dazu müssen Sie die Variable in allen Funktionen als global deklarieren.
Wenn Sie über den Basisarbeitsbereich auf diese Variable zugreifen möchten, deklarieren Sie die Variable in der Befehlszeile.
Die globale Deklaration muss erfolgen, bevor die Variable tatsächlich in einer Funktion verwendet wird. Es wird empfohlen, Großbuchstaben für die Namen globaler Variablen zu verwenden, um sie von anderen Variablen zu unterscheiden.
Beispiel
Lassen Sie uns eine Funktionsdatei mit dem Namen aver.m erstellen und den folgenden Code eingeben:
function avg = average(nums)
global TOTAL
avg = sum(nums)/TOTAL;
end
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
global TOTAL;
TOTAL = 10;
n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42];
av = average(n)
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
av = 35.500
Das Importieren von Daten in MATLAB bedeutet das Laden von Daten aus einer externen Datei. DasimportdataFunktion ermöglicht das Laden verschiedener Datendateien in verschiedenen Formaten. Es hat die folgenden fünf Formen -
Sr.Nr. | Bedienungsanleitung |
---|---|
1 | A = importdata(filename) Lädt Daten in Array A aus der Datei bezeichnet mit Dateinamen . |
2 | A = importdata('-pastespecial') Lädt Daten aus der Systemzwischenablage und nicht aus einer Datei. |
3 | A = importdata(___, delimiterIn) Interpretiert delimiterIn als Spaltentrennzeichen in ASCII-Datei, Dateiname oder Zwischenablagedaten. Sie können delimiterIn mit jedem der Eingabeargumente in den obigen Syntaxen verwenden. |
4 | A = importdata(___, delimiterIn, headerlinesIn) Lädt Daten aus der ASCII-Datei, dem Dateinamen oder der Zwischenablage und liest numerische Daten ab Zeile headerlinesIn + 1 . |
5 | [A, delimiterOut, headerlinesOut] = importdata(___) Gibt das erkannte Trennzeichen für die ASCII-Eingabedatei in delimiterOut und die erkannte Anzahl von Kopfzeilen in headerlinesOut unter Verwendung eines der Eingabeargumente in den vorherigen Syntaxen zurück. |
Standardmäßig unterstützt Octave die Funktion importdata () nicht. Daher müssen Sie dieses Paket suchen und installieren, damit die folgenden Beispiele mit Ihrer Octave-Installation funktionieren.
Beispiel 1
Lassen Sie uns eine Bilddatei laden und anzeigen. Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
filename = 'smile.jpg';
A = importdata(filename);
image(A);
Wenn Sie die Datei ausführen, zeigt MATLAB die Bilddatei an. Sie müssen es jedoch im aktuellen Verzeichnis speichern.
Beispiel 2
In diesem Beispiel importieren wir eine Textdatei und geben Trennzeichen und Spaltenüberschrift an. Lassen Sie uns eine durch Leerzeichen getrennte ASCII-Datei mit Spaltenüberschriften mit dem Namen weekdata.txt erstellen .
Unsere Textdatei weekdata.txt sieht so aus -
SunDay MonDay TuesDay WednesDay ThursDay FriDay SaturDay
95.01 76.21 61.54 40.57 55.79 70.28 81.53
73.11 45.65 79.19 93.55 75.29 69.87 74.68
60.68 41.85 92.18 91.69 81.32 90.38 74.51
48.60 82.14 73.82 41.03 0.99 67.22 93.18
89.13 44.47 57.63 89.36 13.89 19.88 46.60
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
filename = 'weeklydata.txt';
delimiterIn = ' ';
headerlinesIn = 1;
A = importdata(filename,delimiterIn,headerlinesIn);
% View data
for k = [1:7]
disp(A.colheaders{1, k})
disp(A.data(:, k))
disp(' ')
end
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
SunDay
95.0100
73.1100
60.6800
48.6000
89.1300
MonDay
76.2100
45.6500
41.8500
82.1400
44.4700
TuesDay
61.5400
79.1900
92.1800
73.8200
57.6300
WednesDay
40.5700
93.5500
91.6900
41.0300
89.3600
ThursDay
55.7900
75.2900
81.3200
0.9900
13.8900
FriDay
70.2800
69.8700
90.3800
67.2200
19.8800
SaturDay
81.5300
74.6800
74.5100
93.1800
46.6000
Beispiel 3
In diesem Beispiel importieren wir Daten aus der Zwischenablage.
Kopieren Sie die folgenden Zeilen in die Zwischenablage -
Mathematics is simple
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
A = importdata('-pastespecial')
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
A =
'Mathematics is simple'
Low-Level-Datei-E / A.
Die Funktion importdata ist eine übergeordnete Funktion. Die einfachen Datei-E / A-Funktionen in MATLAB ermöglichen die größte Kontrolle über das Lesen oder Schreiben von Daten in eine Datei. Diese Funktionen benötigen jedoch detailliertere Informationen zu Ihrer Datei, um effizient arbeiten zu können.
MATLAB bietet die folgenden Funktionen für Lese- und Schreibvorgänge auf Byte- oder Zeichenebene:
Funktion | Beschreibung |
---|---|
fclose | Schließen Sie eine oder alle geöffneten Dateien |
feof | Test auf Dateiende |
Ferror | Informationen zu Datei-E / A-Fehlern |
fgetl | Lesen Sie die Zeile aus der Datei und entfernen Sie die Zeilenumbrüche |
fgets | Lesen Sie die Zeile aus der Datei und behalten Sie die Zeilenumbruchzeichen bei |
öffnen | Datei öffnen oder Informationen zu geöffneten Dateien erhalten |
fprintf | Schreiben Sie Daten in eine Textdatei |
fread | Lesen Sie Daten aus der Binärdatei |
Frewind | Verschieben Sie die Dateipositionsanzeige an den Anfang der geöffneten Datei |
fscanf | Daten aus Textdatei lesen |
fseek | An die angegebene Position in der Datei verschieben |
ftell | Position in geöffneter Datei |
fwrite | Schreiben Sie Daten in eine Binärdatei |
Importieren Sie Textdatendateien mit Low-Level-E / A.
MATLAB bietet die folgenden Funktionen für den einfachen Import von Textdatendateien:
Das fscanf Funktion liest formatierte Daten in einer Text- oder ASCII-Datei.
Das fgetl und fgets Funktionen lesen jeweils eine Zeile einer Datei, wobei jede Zeile durch ein Zeilenumbruchzeichen getrennt wird.
Das fread Funktion liest einen Datenstrom auf Byte- oder Bitebene.
Beispiel
Wir haben eine Textdatendatei 'myfile.txt' in unserem Arbeitsverzeichnis gespeichert. In der Datei werden Niederschlagsdaten drei Monate lang gespeichert. Juni, Juli und August für das Jahr 2012.
Die Daten in myfile.txt enthalten wiederholte Sätze von Zeit-, Monats- und Niederschlagsmessungen an fünf Stellen. Die Header-Daten speichern die Anzahl der Monate M; Wir haben also M Messreihen.
Die Datei sieht so aus -
Rainfall Data
Months: June, July, August
M = 3
12:00:00
June-2012
17.21 28.52 39.78 16.55 23.67
19.15 0.35 17.57 NaN 12.01
17.92 28.49 17.40 17.06 11.09
9.59 9.33 NaN 0.31 0.23
10.46 13.17 NaN 14.89 19.33
20.97 19.50 17.65 14.45 14.00
18.23 10.34 17.95 16.46 19.34
09:10:02
July-2012
12.76 16.94 14.38 11.86 16.89
20.46 23.17 NaN 24.89 19.33
30.97 49.50 47.65 24.45 34.00
18.23 30.34 27.95 16.46 19.34
30.46 33.17 NaN 34.89 29.33
30.97 49.50 47.65 24.45 34.00
28.67 30.34 27.95 36.46 29.34
15:03:40
August-2012
17.09 16.55 19.59 17.25 19.22
17.54 11.45 13.48 22.55 24.01
NaN 21.19 25.85 25.05 27.21
26.79 24.98 12.23 16.99 18.67
17.54 11.45 13.48 22.55 24.01
NaN 21.19 25.85 25.05 27.21
26.79 24.98 12.23 16.99 18.67
Wir werden Daten aus dieser Datei importieren und diese Daten anzeigen. Führen Sie die folgenden Schritte aus:
Öffnen Sie die Datei mit fopen Funktion und erhalten Sie die Dateikennung.
Beschreiben Sie die Daten in der Datei mit format specifiers, sowie '%s"Für eine Schnur"%d'für eine ganze Zahl oder'%f'für eine Gleitkommazahl.
Um Literalzeichen in der Datei zu überspringen, fügen Sie sie in die Formatbeschreibung ein. Verwenden Sie zum Überspringen eines Datenfelds ein Sternchen ('*') im Bezeichner.
Um beispielsweise die Header zu lesen und den Einzelwert für M zurückzugeben, schreiben wir -
M = fscanf(fid, '%*s %*s\n%*s %*s %*s %*s\nM=%d\n\n', 1);
Standardmäßig, fscanfLiest Daten gemäß unserer Formatbeschreibung, bis sie keine Übereinstimmung mit den Daten finden oder das Ende der Datei erreichen. Hier verwenden wir die for-Schleife zum Lesen von 3 Datensätzen und jedes Mal werden 7 Zeilen und 5 Spalten gelesen.
Wir werden eine Struktur mit dem Namen mydata im Arbeitsbereich erstellen, um die aus der Datei gelesenen Daten zu speichern. Diese Struktur besteht aus drei Feldern: Zeit , Monat und Raindata- Array.
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
filename = '/data/myfile.txt';
rows = 7;
cols = 5;
% open the file
fid = fopen(filename);
% read the file headers, find M (number of months)
M = fscanf(fid, '%*s %*s\n%*s %*s %*s %*s\nM=%d\n\n', 1);
% read each set of measurements
for n = 1:M
mydata(n).time = fscanf(fid, '%s', 1);
mydata(n).month = fscanf(fid, '%s', 1);
% fscanf fills the array in column order,
% so transpose the results
mydata(n).raindata = ...
fscanf(fid, '%f', [rows, cols]);
end
for n = 1:M
disp(mydata(n).time), disp(mydata(n).month)
disp(mydata(n).raindata)
end
% close the file
fclose(fid);
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
12:00:00
June-2012
17.2100 17.5700 11.0900 13.1700 14.4500
28.5200 NaN 9.5900 NaN 14.0000
39.7800 12.0100 9.3300 14.8900 18.2300
16.5500 17.9200 NaN 19.3300 10.3400
23.6700 28.4900 0.3100 20.9700 17.9500
19.1500 17.4000 0.2300 19.5000 16.4600
0.3500 17.0600 10.4600 17.6500 19.3400
09:10:02
July-2012
12.7600 NaN 34.0000 33.1700 24.4500
16.9400 24.8900 18.2300 NaN 34.0000
14.3800 19.3300 30.3400 34.8900 28.6700
11.8600 30.9700 27.9500 29.3300 30.3400
16.8900 49.5000 16.4600 30.9700 27.9500
20.4600 47.6500 19.3400 49.5000 36.4600
23.1700 24.4500 30.4600 47.6500 29.3400
15:03:40
August-2012
17.0900 13.4800 27.2100 11.4500 25.0500
16.5500 22.5500 26.7900 13.4800 27.2100
19.5900 24.0100 24.9800 22.5500 26.7900
17.2500 NaN 12.2300 24.0100 24.9800
19.2200 21.1900 16.9900 NaN 12.2300
17.5400 25.8500 18.6700 21.1900 16.9900
11.4500 25.0500 17.5400 25.8500 18.6700
Datenexport (oder -ausgabe) in MATLAB bedeutet, in Dateien zu schreiben. Mit MATLAB können Sie Ihre Daten in einer anderen Anwendung verwenden, die ASCII-Dateien liest. Zu diesem Zweck bietet MATLAB verschiedene Datenexportoptionen.
Sie können den folgenden Dateityp erstellen:
Rechteckige, begrenzte ASCII-Datendatei aus einem Array.
Tagebuch- (oder Protokoll-) Datei mit Tastenanschlägen und der daraus resultierenden Textausgabe.
Spezialisierte ASCII-Datei mit Funktionen auf niedriger Ebene wie fprintf.
MEX-Datei für den Zugriff auf Ihre C / C ++ - oder Fortran-Routine, die in ein bestimmtes Textdateiformat schreibt.
Außerdem können Sie Daten in Tabellenkalkulationen exportieren.
Es gibt zwei Möglichkeiten, ein numerisches Array als begrenzte ASCII-Datendatei zu exportieren:
Verwendung der save Funktion und Angabe der -ascii Qualifikation
Verwendung der dlmwrite Funktion
Die Syntax für die Verwendung der Speicherfunktion lautet -
save my_data.out num_array -ascii
Dabei ist my_data.out die durch Trennzeichen getrennte ASCII- Datendatei , num_array ein numerisches Array und−ascii ist der Spezifizierer.
Syntax für die Verwendung der dlmwrite Funktion ist -
dlmwrite('my_data.out', num_array, 'dlm_char')
Dabei ist my_data.out die durch Trennzeichen getrennte ASCII- Datendatei , num_array ein numerisches Array und dlm_char das Trennzeichen.
Beispiel
Das folgende Beispiel zeigt das Konzept. Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
num_array = [ 1 2 3 4 ; 4 5 6 7; 7 8 9 0];
save array_data1.out num_array -ascii;
type array_data1.out
dlmwrite('array_data2.out', num_array, ' ');
type array_data2.out
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
1.0000000e+00 2.0000000e+00 3.0000000e+00 4.0000000e+00
4.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00
7.0000000e+00 8.0000000e+00 9.0000000e+00 0.0000000e+00
1 2 3 4
4 5 6 7
7 8 9 0
Bitte beachten Sie, dass der Befehl save -ascii und die Funktion dlmwrite nicht mit Zellenarrays als Eingabe funktionieren. Sie können eine begrenzte ASCII-Datei aus dem Inhalt eines Zellenarrays erstellen
Konvertieren Sie das Zellenarray entweder mit der in eine Matrix cell2mat Funktion
Oder exportieren Sie das Zellenarray mithilfe von Datei-E / A-Funktionen auf niedriger Ebene.
Wenn Sie die verwenden save Funktion zum Schreiben eines Zeichenarrays in eine ASCII-Datei, schreibt das ASCII-Äquivalent der Zeichen in die Datei.
Schreiben wir zum Beispiel das Wort "Hallo" in eine Datei -
h = 'hello';
save textdata.out h -ascii
type textdata.out
MATLAB führt die obigen Anweisungen aus und zeigt das folgende Ergebnis an. Dies sind die Zeichen der Zeichenfolge 'Hallo' im 8-stelligen ASCII-Format.
1.0400000e+02 1.0100000e+02 1.0800000e+02 1.0800000e+02 1.1100000e+02
Schreiben in Tagebuchdateien
Tagebuchdateien sind Aktivitätsprotokolle Ihrer MATLAB-Sitzung. Die Tagebuchfunktion erstellt eine exakte Kopie Ihrer Sitzung in einer Datenträgerdatei ohne Grafiken.
Geben Sie - ein, um die Tagebuchfunktion einzuschalten.
diary
Optional können Sie den Namen der Protokolldatei angeben, z.
diary logdata.out
Tagebuchfunktion ausschalten -
diary off
Sie können die Tagebuchdatei in einem Texteditor öffnen.
Exportieren von Daten in Textdatendateien mit Low-Level-E / A.
Bisher haben wir numerische Arrays exportiert. Möglicherweise müssen Sie jedoch andere Textdateien erstellen, einschließlich Kombinationen aus numerischen Daten und Zeichendaten, nicht rechteckigen Ausgabedateien oder Dateien mit Nicht-ASCII-Codierungsschemata. Für diese Zwecke bietet MATLAB das Low-Levelfprintf Funktion.
Wie bei E / A-Dateiaktivitäten auf niedriger Ebene müssen Sie vor dem Exportieren eine Datei mit dem öffnen oder erstellen fopenFunktion und erhalten Sie die Dateikennung. Standardmäßig öffnet fopen eine Datei für den schreibgeschützten Zugriff. Sie sollten die Berechtigung zum Schreiben oder Anhängen angeben, z. B. 'w' oder 'a'.
Nach der Verarbeitung der Datei müssen Sie sie mit schließen fclose(fid) Funktion.
Das folgende Beispiel zeigt das Konzept -
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
% create a matrix y, with two rows
x = 0:10:100;
y = [x; log(x)];
% open a file for writing
fid = fopen('logtable.txt', 'w');
% Table Header
fprintf(fid, 'Log Function\n\n');
% print values in column order
% two values appear on each row of the file
fprintf(fid, '%f %f\n', y);
fclose(fid);
% display the file created
type logtable.txt
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
Log Function
0.000000 -Inf
10.000000 2.302585
20.000000 2.995732
30.000000 3.401197
40.000000 3.688879
50.000000 3.912023
60.000000 4.094345
70.000000 4.248495
80.000000 4.382027
90.000000 4.499810
100.000000 4.605170
Um das Diagramm einer Funktion zu zeichnen, müssen Sie die folgenden Schritte ausführen:
Definieren xdurch Angabe der range of values für die Variable x, für die die Funktion aufgetragen werden soll
Definieren Sie die Funktion, y = f(x)
Ruf den plot Befehl, als plot(x, y)
Das folgende Beispiel würde das Konzept demonstrieren. Zeichnen wir die einfache Funktiony = x für den Wertebereich für x von 0 bis 100 mit einem Inkrement von 5.
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
x = [0:5:100];
y = x;
plot(x, y)
Wenn Sie die Datei ausführen, zeigt MATLAB das folgende Diagramm an:
Nehmen wir noch ein Beispiel, um die Funktion y = x 2 zu zeichnen . In diesem Beispiel zeichnen wir zwei Diagramme mit derselben Funktion, aber beim zweiten Mal reduzieren wir den Wert des Inkrements. Bitte beachten Sie, dass das Diagramm glatter wird, wenn wir das Inkrement verringern.
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
x = [1 2 3 4 5 6 7 8 9 10];
x = [-100:20:100];
y = x.^2;
plot(x, y)
Wenn Sie die Datei ausführen, zeigt MATLAB das folgende Diagramm an:
Ändern Sie die Codedatei ein wenig, reduzieren Sie das Inkrement auf 5 -
x = [-100:5:100];
y = x.^2;
plot(x, y)
MATLAB zeichnet eine glattere Grafik -
Hinzufügen von Titeln, Beschriftungen, Gitterlinien und Skalierung zum Diagramm
Mit MATLAB können Sie Titel, Beschriftungen entlang der x- und y-Achse sowie Gitterlinien hinzufügen und die Achsen anpassen, um das Diagramm aufzufrischen.
Das xlabel und ylabel Befehle erzeugen Beschriftungen entlang der x-Achse und der y-Achse.
Das title Mit dem Befehl können Sie einen Titel in das Diagramm einfügen.
Das grid on Mit dem Befehl können Sie die Gitterlinien in das Diagramm einfügen.
Das axis equal Mit dem Befehl können Sie das Diagramm mit denselben Skalierungsfaktoren und den Zwischenräumen auf beiden Achsen erstellen.
Das axis square Befehl erzeugt ein quadratisches Diagramm.
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
x = [0:0.01:10];
y = sin(x);
plot(x, y), xlabel('x'), ylabel('Sin(x)'), title('Sin(x) Graph'),
grid on, axis equal
MATLAB generiert das folgende Diagramm:
Zeichnen mehrerer Funktionen im selben Diagramm
Sie können mehrere Diagramme auf demselben Diagramm zeichnen. Das folgende Beispiel zeigt das Konzept -
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
x = [0 : 0.01: 10];
y = sin(x);
g = cos(x);
plot(x, y, x, g, '.-'), legend('Sin(x)', 'Cos(x)')
MATLAB generiert das folgende Diagramm:
Einstellen der Farben im Diagramm
MATLAB bietet acht grundlegende Farboptionen zum Zeichnen von Diagrammen. Die folgende Tabelle zeigt die Farben und ihre Codes -
Code | Farbe |
---|---|
w | Weiß |
k | Schwarz |
b | Blau |
r | rot |
c | Cyan |
G | Grün |
m | Magenta |
y | Gelb |
Beispiel
Zeichnen wir den Graphen zweier Polynome
f (x) = 3 × 4 + 2 × 3 + 7 × 2 + 2 × + 9 und
g (x) = 5 × 3 + 9 × + 2
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
x = [-10 : 0.01: 10];
y = 3*x.^4 + 2 * x.^3 + 7 * x.^2 + 2 * x + 9;
g = 5 * x.^3 + 9 * x + 2;
plot(x, y, 'r', x, g, 'g')
Wenn Sie die Datei ausführen, generiert MATLAB das folgende Diagramm:
Achsenskalen einstellen
Das axisMit dem Befehl können Sie die Achsenskalen festlegen. Mit dem Befehl axis können Sie wie folgt minimale und maximale Werte für x- und y-Achsen angeben:
axis ( [xmin xmax ymin ymax] )
Das folgende Beispiel zeigt dies -
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
x = [0 : 0.01: 10];
y = exp(-x).* sin(2*x + 3);
plot(x, y), axis([0 10 -1 1])
Wenn Sie die Datei ausführen, generiert MATLAB das folgende Diagramm:
Untergrundstücke erzeugen
Wenn Sie ein Array von Plots in derselben Abbildung erstellen, wird jedes dieser Plots als Unterplot bezeichnet. Dassubplot Befehl wird zum Erstellen von Unterplots verwendet.
Die Syntax für den Befehl lautet -
subplot(m, n, p)
Dabei sind m und n die Anzahl der Zeilen und Spalten des Plot-Arrays und p gibt an, wo ein bestimmtes Plot abgelegt werden soll.
Jedes mit dem Befehl subplot erstellte Diagramm kann seine eigenen Merkmale aufweisen. Das folgende Beispiel zeigt das Konzept -
Beispiel
Lassen Sie uns zwei Diagramme generieren -
y = e - 1,5x sin (10x)
y = e - 2x sin (10x)
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
x = [0:0.01:5];
y = exp(-1.5*x).*sin(10*x);
subplot(1,2,1)
plot(x,y), xlabel('x'),ylabel('exp(–1.5x)*sin(10x)'),axis([0 5 -1 1])
y = exp(-2*x).*sin(10*x);
subplot(1,2,2)
plot(x,y),xlabel('x'),ylabel('exp(–2x)*sin(10x)'),axis([0 5 -1 1])
Wenn Sie die Datei ausführen, generiert MATLAB das folgende Diagramm:
In diesem Kapitel werden die Plot- und Grafikfunktionen von MATLAB weiter erläutert. Wir werden diskutieren -
- Balkendiagramme zeichnen
- Konturen zeichnen
- Dreidimensionale Diagramme
Balkendiagramme zeichnen
Das barBefehl zeichnet ein zweidimensionales Balkendiagramm. Nehmen wir ein Beispiel, um die Idee zu demonstrieren.
Beispiel
Lassen Sie uns ein imaginäres Klassenzimmer mit 10 Schülern haben. Wir wissen, dass der Prozentsatz der von diesen Schülern erzielten Noten 75, 58, 90, 87, 50, 85, 92, 75, 60 und 95 beträgt. Wir werden das Balkendiagramm für diese Daten zeichnen.
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
x = [1:10];
y = [75, 58, 90, 87, 50, 85, 92, 75, 60, 95];
bar(x,y), xlabel('Student'),ylabel('Score'),
title('First Sem:')
print -deps graph.eps
Wenn Sie die Datei ausführen, zeigt MATLAB das folgende Balkendiagramm an:
Konturen zeichnen
Eine Konturlinie einer Funktion zweier Variablen ist eine Kurve, entlang der die Funktion einen konstanten Wert hat. Konturlinien werden zum Erstellen von Konturkarten verwendet, indem Punkte gleicher Höhe über einem bestimmten Niveau, z. B. dem mittleren Meeresspiegel, verbunden werden.
MATLAB bietet eine contour Funktion zum Zeichnen von Konturkarten.
Beispiel
Lassen Sie uns eine Konturkarte erzeugen, die die Konturlinien für eine gegebene Funktion g = f (x, y) zeigt. Diese Funktion hat zwei Variablen. Wir müssen also zwei unabhängige Variablen generieren, dh zwei Datensätze x und y. Dies geschieht durch Aufrufen dermeshgrid Befehl.
Das meshgrid Befehl wird verwendet, um eine Matrix von Elementen zu erzeugen, die den Bereich über x und y zusammen mit der Angabe des Inkrements in jedem Fall angeben.
Zeichnen wir unsere Funktion g = f (x, y), wobei −5 ≤ x ≤ 5, −3 ≤ y ≤ 3. Nehmen wir für beide Werte ein Inkrement von 0.1. Die Variablen werden gesetzt als -
[x,y] = meshgrid(–5:0.1:5, –3:0.1:3);
Zuletzt müssen wir die Funktion zuweisen. Unsere Funktion sei: x 2 + y 2
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
[x,y] = meshgrid(-5:0.1:5,-3:0.1:3); %independent variables
g = x.^2 + y.^2; % our function
contour(x,y,g) % call the contour function
print -deps graph.eps
Wenn Sie die Datei ausführen, zeigt MATLAB die folgende Konturkarte an:
Lassen Sie uns den Code ein wenig ändern, um die Karte aufzuwerten
[x,y] = meshgrid(-5:0.1:5,-3:0.1:3); %independent variables
g = x.^2 + y.^2; % our function
[C, h] = contour(x,y,g); % call the contour function
set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2)
print -deps graph.eps
Wenn Sie die Datei ausführen, zeigt MATLAB die folgende Konturkarte an:
Dreidimensionale Diagramme
Dreidimensionale Diagramme zeigen im Wesentlichen eine Oberfläche, die durch eine Funktion in zwei Variablen definiert ist: g = f (x, y).
Um g zu definieren, erstellen wir wie zuvor zunächst eine Menge von (x, y) Punkten über der Domäne der Funktion mit der meshgridBefehl. Als nächstes weisen wir die Funktion selbst zu. Schließlich verwenden wir diesurf Befehl zum Erstellen eines Flächendiagramms.
Das folgende Beispiel zeigt das Konzept -
Beispiel
Erstellen wir eine 3D-Oberflächenkarte für die Funktion g = xe - (x 2 + y 2 )
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
[x,y] = meshgrid(-2:.2:2);
g = x .* exp(-x.^2 - y.^2);
surf(x, y, g)
print -deps graph.eps
Wenn Sie die Datei ausführen, zeigt MATLAB die folgende 3D-Zuordnung an:
Sie können auch die verwenden meshBefehl zum Erzeugen einer dreidimensionalen Oberfläche. Diesurf Der Befehl zeigt sowohl die Verbindungslinien als auch die Flächen der Oberfläche in Farbe an, während der Befehl mesh Befehl erstellt eine Drahtgitteroberfläche mit farbigen Linien, die die definierenden Punkte verbinden.
Bisher haben wir gesehen, dass alle Beispiele sowohl in MATLAB als auch in dessen GNU, alternativ Octave genannt, funktionieren. Zum Lösen grundlegender algebraischer Gleichungen unterscheiden sich MATLAB und Octave jedoch kaum voneinander. Daher werden wir versuchen, MATLAB und Octave in separaten Abschnitten zu behandeln.
Wir werden auch die Faktorisierung und Vereinfachung algebraischer Ausdrücke diskutieren.
Grundlegende algebraische Gleichungen in MATLAB lösen
Das solveFunktion wird zum Lösen algebraischer Gleichungen verwendet. In ihrer einfachsten Form nimmt die Lösungsfunktion die in Anführungszeichen eingeschlossene Gleichung als Argument.
Lösen wir zum Beispiel nach x in der Gleichung x-5 = 0
solve('x-5=0')
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
5
Sie können die Lösungsfunktion auch als - aufrufen
y = solve('x-5 = 0')
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
y =
5
Sie können sogar nicht die rechte Seite der Gleichung einschließen -
solve('x-5')
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
5
Wenn die Gleichung mehrere Symbole enthält, geht MATLAB standardmäßig davon aus, dass Sie nach x auflösen. Die Auflösungsfunktion hat jedoch eine andere Form:
solve(equation, variable)
Hier können Sie auch die Variable erwähnen.
Lösen wir zum Beispiel die Gleichung v - u - 3t 2 = 0 für v. In diesem Fall sollten wir schreiben -
solve('v-u-3*t^2=0', 'v')
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
3*t^2 + u
Grundlegende algebraische Gleichungen in Oktave lösen
Das roots Die Funktion wird zum Lösen algebraischer Gleichungen in Octave verwendet. Sie können die obigen Beispiele wie folgt schreiben:
Lösen wir zum Beispiel nach x in der Gleichung x-5 = 0
roots([1, -5])
Octave führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans = 5
Sie können die Lösungsfunktion auch als - aufrufen
y = roots([1, -5])
Octave führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
y = 5
Lösen quadratischer Gleichungen in MATLAB
Das solveFunktion kann auch Gleichungen höherer Ordnung lösen. Es wird oft verwendet, um quadratische Gleichungen zu lösen. Die Funktion gibt die Wurzeln der Gleichung in einem Array zurück.
Das folgende Beispiel löst die quadratische Gleichung x 2 -7x +12 = 0. Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
eq = 'x^2 -7*x + 12 = 0';
s = solve(eq);
disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
The first root is:
3
The second root is:
4
Lösen quadratischer Gleichungen in Oktave
Das folgende Beispiel löst die quadratische Gleichung x 2 -7x +12 = 0 in Oktave. Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
s = roots([1, -7, 12]);
disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
The first root is:
4
The second root is:
3
Gleichungen höherer Ordnung in MATLAB lösen
Das solveFunktion kann auch Gleichungen höherer Ordnung lösen. Lösen wir zum Beispiel eine kubische Gleichung als (x-3) 2 (x-7) = 0
solve('(x-3)^2*(x-7)=0')
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
3
3
7
Bei Gleichungen höherer Ordnung sind Wurzeln lang und enthalten viele Terme. Sie können den numerischen Wert solcher Wurzeln erhalten, indem Sie sie in double konvertieren. Das folgende Beispiel löst die Gleichung vierter Ordnung x 4 - 7x 3 + 3x 2 - 5x + 9 = 0.
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
eq = 'x^4 - 7*x^3 + 3*x^2 - 5*x + 9 = 0';
s = solve(eq);
disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));
disp('The third root is: '), disp(s(3));
disp('The fourth root is: '), disp(s(4));
% converting the roots to double type
disp('Numeric value of first root'), disp(double(s(1)));
disp('Numeric value of second root'), disp(double(s(2)));
disp('Numeric value of third root'), disp(double(s(3)));
disp('Numeric value of fourth root'), disp(double(s(4)));
Wenn Sie die Datei ausführen, wird das folgende Ergebnis zurückgegeben:
The first root is:
6.630396332390718431485053218985
The second root is:
1.0597804633025896291682772499885
The third root is:
- 0.34508839784665403032666523448675 - 1.0778362954630176596831109269793*i
The fourth root is:
- 0.34508839784665403032666523448675 + 1.0778362954630176596831109269793*i
Numeric value of first root
6.6304
Numeric value of second root
1.0598
Numeric value of third root
-0.3451 - 1.0778i
Numeric value of fourth root
-0.3451 + 1.0778i
Bitte beachten Sie, dass die letzten beiden Wurzeln komplexe Zahlen sind.
Gleichungen höherer Ordnung in Oktave lösen
Das folgende Beispiel löst die Gleichung vierter Ordnung x 4 - 7x 3 + 3x 2 - 5x + 9 = 0.
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
v = [1, -7, 3, -5, 9];
s = roots(v);
% converting the roots to double type
disp('Numeric value of first root'), disp(double(s(1)));
disp('Numeric value of second root'), disp(double(s(2)));
disp('Numeric value of third root'), disp(double(s(3)));
disp('Numeric value of fourth root'), disp(double(s(4)));
Wenn Sie die Datei ausführen, wird das folgende Ergebnis zurückgegeben:
Numeric value of first root
6.6304
Numeric value of second root
-0.34509 + 1.07784i
Numeric value of third root
-0.34509 - 1.07784i
Numeric value of fourth root
1.0598
Gleichungssystem in MATLAB lösen
Das solveDie Funktion kann auch verwendet werden, um Lösungen von Gleichungssystemen mit mehr als einer Variablen zu generieren. Nehmen wir ein einfaches Beispiel, um diese Verwendung zu demonstrieren.
Lösen wir die Gleichungen -
5x + 9y = 5
3x - 6y = 4
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
s = solve('5*x + 9*y = 5','3*x - 6*y = 4');
s.x
s.y
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
ans =
22/19
ans =
-5/57
Auf die gleiche Weise können Sie größere lineare Systeme lösen. Betrachten Sie die folgenden Gleichungen -
x + 3y -2z = 5
3x + 5y + 6z = 7
2x + 4y + 3z = 8
Gleichungssystem in Oktave lösen
Wir haben einen etwas anderen Ansatz, um ein System von 'n' linearen Gleichungen in 'n' Unbekannten zu lösen. Nehmen wir ein einfaches Beispiel, um diese Verwendung zu demonstrieren.
Lösen wir die Gleichungen -
5x + 9y = 5
3x - 6y = 4
Ein solches lineares Gleichungssystem kann als Einzelmatrixgleichung Ax = b geschrieben werden, wobei A die Koeffizientenmatrix ist, b der Spaltenvektor ist, der die rechte Seite der linearen Gleichungen enthält, und x der Spaltenvektor ist, der die Lösung als darstellt im folgenden Programm gezeigt -
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
A = [5, 9; 3, -6];
b = [5;4];
A \ b
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
ans =
1.157895
-0.087719
Auf die gleiche Weise können Sie größere lineare Systeme wie unten angegeben lösen -
x + 3y -2z = 5
3x + 5y + 6z = 7
2x + 4y + 3z = 8
Gleichungen in MATLAB erweitern und sammeln
Das expand und die collectFunktion erweitert bzw. sammelt eine Gleichung. Das folgende Beispiel zeigt die Konzepte -
Wenn Sie mit vielen symbolischen Funktionen arbeiten, sollten Sie deklarieren, dass Ihre Variablen symbolisch sind.
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
syms x %symbolic variable x
syms y %symbolic variable x
% expanding equations
expand((x-5)*(x+9))
expand((x+2)*(x-3)*(x-5)*(x+7))
expand(sin(2*x))
expand(cos(x+y))
% collecting equations
collect(x^3 *(x-7))
collect(x^4*(x-3)*(x-5))
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
ans =
x^2 + 4*x - 45
ans =
x^4 + x^3 - 43*x^2 + 23*x + 210
ans =
2*cos(x)*sin(x)
ans =
cos(x)*cos(y) - sin(x)*sin(y)
ans =
x^4 - 7*x^3
ans =
x^6 - 8*x^5 + 15*x^4
Gleichungen in Oktave erweitern und sammeln
Du brauchst symbolic Paket, das bietet expand und die collectFunktion zum Erweitern bzw. Sammeln einer Gleichung. Das folgende Beispiel zeigt die Konzepte -
Wenn Sie mit vielen symbolischen Funktionen arbeiten, sollten Sie deklarieren, dass Ihre Variablen symbolisch sind, aber Octave hat einen anderen Ansatz, um symbolische Variablen zu definieren. Beachten Sie die Verwendung vonSin und Cos, die auch im symbolischen Paket definiert sind.
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
% first of all load the package, make sure its installed.
pkg load symbolic
% make symbols module available
symbols
% define symbolic variables
x = sym ('x');
y = sym ('y');
z = sym ('z');
% expanding equations
expand((x-5)*(x+9))
expand((x+2)*(x-3)*(x-5)*(x+7))
expand(Sin(2*x))
expand(Cos(x+y))
% collecting equations
collect(x^3 *(x-7), z)
collect(x^4*(x-3)*(x-5), z)
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
ans =
-45.0+x^2+(4.0)*x
ans =
210.0+x^4-(43.0)*x^2+x^3+(23.0)*x
ans =
sin((2.0)*x)
ans =
cos(y+x)
ans =
x^(3.0)*(-7.0+x)
ans =
(-3.0+x)*x^(4.0)*(-5.0+x)
Faktorisierung und Vereinfachung algebraischer Ausdrücke
Das factor Funktion faktorisiert einen Ausdruck und die simplifyFunktion vereinfacht einen Ausdruck. Das folgende Beispiel zeigt das Konzept -
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
syms x
syms y
factor(x^3 - y^3)
factor([x^2-y^2,x^3+y^3])
simplify((x^4-16)/(x^2-4))
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
ans =
(x - y)*(x^2 + x*y + y^2)
ans =
[ (x - y)*(x + y), (x + y)*(x^2 - x*y + y^2)]
ans =
x^2 + 4
MATLAB bietet verschiedene Möglichkeiten zur Lösung von Problemen der Differential- und Integralrechnung, zur Lösung von Differentialgleichungen beliebigen Grades und zur Berechnung von Grenzwerten. Das Beste ist, dass Sie die Diagramme komplexer Funktionen einfach zeichnen und Maxima, Minima und andere Schreibwarenpunkte in einem Diagramm überprüfen können, indem Sie die ursprüngliche Funktion sowie deren Ableitung lösen.
Dieses Kapitel befasst sich mit Kalkülproblemen. In diesem Kapitel werden wir Vorberechnungskonzepte diskutieren, dh die Berechnung von Funktionsgrenzen und die Überprüfung der Eigenschaften von Grenzen.
Im nächsten Kapitel Differential berechnen wir die Ableitung eines Ausdrucks und finden die lokalen Maxima und Minima in einem Diagramm. Wir werden auch das Lösen von Differentialgleichungen diskutieren.
Schließlich werden wir im Kapitel Integration die Integralrechnung diskutieren.
Grenzwerte berechnen
MATLAB bietet die limitFunktion zur Berechnung von Grenzwerten. In seiner grundlegendsten Form ist dielimit Die Funktion nimmt den Ausdruck als Argument und findet die Grenze des Ausdrucks, wenn die unabhängige Variable auf Null geht.
Berechnen wir zum Beispiel die Grenze einer Funktion f (x) = (x 3 + 5) / (x 4 + 7), da x gegen Null geht.
syms x
limit((x^3 + 5)/(x^4 + 7))
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
5/7
Die Grenzwertfunktion fällt in den Bereich des symbolischen Rechnens; Sie müssen die verwendensymsFunktion, um MATLAB mitzuteilen, welche symbolischen Variablen Sie verwenden. Sie können auch das Limit einer Funktion berechnen, da die Variable zu einer anderen Zahl als Null tendiert. Um lim x-> a (f (x)) zu berechnen , verwenden wir den Befehl limit mit Argumenten. Der erste ist der Ausdruck und der zweite ist die Zahl, der sich x nähert, hier ist es a .
Berechnen wir zum Beispiel die Grenze einer Funktion f (x) = (x-3) / (x-1), da x gegen 1 tendiert.
limit((x - 3)/(x-1),1)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
NaN
Nehmen wir ein anderes Beispiel:
limit(x^2 + 5, 3)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
14
Grenzwerte mit Oktave berechnen
Es folgt die Octave-Version des obigen Beispiels mit symbolic Paket, versuchen Sie, das Ergebnis auszuführen und zu vergleichen -
pkg load symbolic
symbols
x = sym("x");
subs((x^3+5)/(x^4+7),x,0)
Octave führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
0.7142857142857142857
Überprüfung der grundlegenden Eigenschaften von Grenzwerten
Der algebraische Grenzwertsatz bietet einige grundlegende Eigenschaften von Grenzwerten. Diese sind wie folgt -
Betrachten wir zwei Funktionen -
- f (x) = (3x + 5) / (x - 3)
- g (x) = x 2 + 1.
Berechnen wir die Grenzen der Funktionen, da x gegen 5 tendiert, beider Funktionen und überprüfen Sie die grundlegenden Eigenschaften der Grenzen mit diesen beiden Funktionen und MATLAB.
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
syms x
f = (3*x + 5)/(x-3);
g = x^2 + 1;
l1 = limit(f, 4)
l2 = limit (g, 4)
lAdd = limit(f + g, 4)
lSub = limit(f - g, 4)
lMult = limit(f*g, 4)
lDiv = limit (f/g, 4)
Wenn Sie die Datei ausführen, wird Folgendes angezeigt:
l1 =
17
l2 =
17
lAdd =
34
lSub =
0
lMult =
289
lDiv =
1
Überprüfung der grundlegenden Eigenschaften von Grenzwerten mit Octave
Es folgt die Octave-Version des obigen Beispiels mit symbolic Paket, versuchen Sie, das Ergebnis auszuführen und zu vergleichen -
pkg load symbolic
symbols
x = sym("x");
f = (3*x + 5)/(x-3);
g = x^2 + 1;
l1 = subs(f, x, 4)
l2 = subs (g, x, 4)
lAdd = subs (f+g, x, 4)
lSub = subs (f-g, x, 4)
lMult = subs (f*g, x, 4)
lDiv = subs (f/g, x, 4)
Octave führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
l1 =
17.0
l2 =
17.0
lAdd =
34.0
lSub =
0.0
lMult =
289.0
lDiv =
1.0
Linke und rechte Grenzen
Wenn eine Funktion für einen bestimmten Wert der Variablen eine Diskontinuität aufweist, ist die Grenze zu diesem Zeitpunkt nicht vorhanden. Mit anderen Worten, Grenzen einer Funktion f (x) haben eine Diskontinuität bei x = a, wenn der Wert der Grenze, wenn x sich x von links nähert, nicht gleich dem Wert der Grenze ist, wenn sich x von rechts nähert.
Dies führt zum Konzept der linkshändigen und rechtshändigen Grenzen. Eine linkshändige Grenze ist definiert als die Grenze als x -> a von links, dh x nähert sich a für Werte von x <a. Eine rechtshändige Grenze ist definiert als die Grenze als x -> a von rechts, dh x nähert sich a für Werte von x> a. Wenn das Limit für Linkshänder und das Limit für Rechtshänder nicht gleich sind, existiert das Limit nicht.
Betrachten wir eine Funktion -
f(x) = (x - 3)/|x - 3|
Wir werden zeigen, dass lim x-> 3 f (x) nicht existiert. MATLAB hilft uns, diese Tatsache auf zwei Arten festzustellen -
- Durch Zeichnen des Funktionsgraphen und Anzeigen der Diskontinuität.
- Indem Sie die Grenzen berechnen und zeigen, dass beide unterschiedlich sind.
Die Grenzwerte für Linkshänder und Rechtshänder werden berechnet, indem die Zeichenfolgen 'left' und 'right' als letztes Argument an den Befehl limit übergeben werden.
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
f = (x - 3)/abs(x-3);
ezplot(f,[-1,5])
l = limit(f,x,3,'left')
r = limit(f,x,3,'right')
Wenn Sie die Datei ausführen, zeichnet MATLAB das folgende Diagramm
Danach wird folgende Ausgabe angezeigt -
l =
-1
r =
1
MATLAB bietet die diffBefehl zum Berechnen symbolischer Ableitungen. In seiner einfachsten Form übergeben Sie die Funktion, die Sie unterscheiden möchten, als Argument an den Befehl diff.
Berechnen wir zum Beispiel die Ableitung der Funktion f (t) = 3t 2 + 2t -2
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
syms t
f = 3*t^2 + 2*t^(-2);
diff(f)
Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:
ans =
6*t - 4/t^3
Es folgt das Oktaväquivalent der obigen Berechnung -
pkg load symbolic
symbols
t = sym("t");
f = 3*t^2 + 2*t^(-2);
differentiate(f,t)
Octave führt den Code aus und gibt das folgende Ergebnis zurück:
ans =
-(4.0)*t^(-3.0)+(6.0)*t
Überprüfung der elementaren Differenzierungsregeln
Lassen Sie uns kurz verschiedene Gleichungen oder Regeln zur Differenzierung von Funktionen angeben und diese Regeln überprüfen. Zu diesem Zweck schreiben wir f '(x) für eine Ableitung erster Ordnung und f "(x) für eine Ableitung zweiter Ordnung.
Es folgen die Regeln zur Differenzierung -
Regel 1
Für alle Funktionen f und g und alle reellen Zahlen a und b ist die Ableitung der Funktion -
h(x) = af(x) + bg(x) in Bezug auf x ist gegeben durch -
h'(x) = af'(x) + bg'(x)
Regel 2
Das sum und subtraction Regeln besagen, dass wenn f und g zwei Funktionen sind, f 'und g' ihre Ableitungen sind, dann
(f + g)' = f' + g'
(f - g)' = f' - g'
Regel 3
Das product Regel besagt, dass wenn f und g zwei Funktionen sind, f 'und g' ihre Ableitungen sind, dann
(f.g)' = f'.g + g'.f
Regel 4
Das quotient Regel besagt, dass wenn f und g zwei Funktionen sind, f 'und g' ihre Ableitungen sind, dann
(f/g)' = (f'.g - g'.f)/g2
Regel 5
Das polynomial oder elementare Potenzregel besagt, dass, wenn y = f(x) = xn, dann f' = n. x(n-1)
Ein direktes Ergebnis dieser Regel ist, dass die Ableitung einer Konstanten Null ist, dh wenn y = kalso jede Konstante
f' = 0
Regel 6
Das chain Regel besagt, dass Ableitung der Funktion einer Funktion h(x) = f(g(x)) in Bezug auf x ist,
h'(x)= f'(g(x)).g'(x)
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
syms x
syms t
f = (x + 2)*(x^2 + 3)
der1 = diff(f)
f = (t^2 + 3)*(sqrt(t) + t^3)
der2 = diff(f)
f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2)
der3 = diff(f)
f = (2*x^2 + 3*x)/(x^3 + 1)
der4 = diff(f)
f = (x^2 + 1)^17
der5 = diff(f)
f = (t^3 + 3* t^2 + 5*t -9)^(-6)
der6 = diff(f)
Wenn Sie die Datei ausführen, zeigt MATLAB das folgende Ergebnis an:
f =
(x^2 + 3)*(x + 2)
der1 =
2*x*(x + 2) + x^2 + 3
f =
(t^(1/2) + t^3)*(t^2 + 3)
der2 =
(t^2 + 3)*(3*t^2 + 1/(2*t^(1/2))) + 2*t*(t^(1/2) + t^3)
f =
(x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2)
der3 =
(2*x - 2)*(3*x^3 - 5*x^2 + 2) - (- 9*x^2 + 10*x)*(x^2 - 2*x + 1)
f =
(2*x^2 + 3*x)/(x^3 + 1)
der4 =
(4*x + 3)/(x^3 + 1) - (3*x^2*(2*x^2 + 3*x))/(x^3 + 1)^2
f =
(x^2 + 1)^17
der5 =
34*x*(x^2 + 1)^16
f =
1/(t^3 + 3*t^2 + 5*t - 9)^6
der6 =
-(6*(3*t^2 + 6*t + 5))/(t^3 + 3*t^2 + 5*t - 9)^7
Es folgt das Oktaväquivalent der obigen Berechnung -
pkg load symbolic
symbols
x = sym("x");
t = sym("t");
f = (x + 2)*(x^2 + 3)
der1 = differentiate(f,x)
f = (t^2 + 3)*(t^(1/2) + t^3)
der2 = differentiate(f,t)
f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2)
der3 = differentiate(f,x)
f = (2*x^2 + 3*x)/(x^3 + 1)
der4 = differentiate(f,x)
f = (x^2 + 1)^17
der5 = differentiate(f,x)
f = (t^3 + 3* t^2 + 5*t -9)^(-6)
der6 = differentiate(f,t)
Octave führt den Code aus und gibt das folgende Ergebnis zurück:
f =
(2.0+x)*(3.0+x^(2.0))
der1 =
3.0+x^(2.0)+(2.0)*(2.0+x)*x
f =
(t^(3.0)+sqrt(t))*(3.0+t^(2.0))
der2 =
(2.0)*(t^(3.0)+sqrt(t))*t+((3.0)*t^(2.0)+(0.5)*t^(-0.5))*(3.0+t^(2.0))
f =
(1.0+x^(2.0)-(2.0)*x)*(2.0-(5.0)*x^(2.0)+(3.0)*x^(3.0))
der3 =
(-2.0+(2.0)*x)*(2.0-(5.0)*x^(2.0)+(3.0)*x^(3.0))+((9.0)*x^(2.0)-(10.0)*x)*(1.0+x^(2.0)-(2.0)*x)
f =
(1.0+x^(3.0))^(-1)*((2.0)*x^(2.0)+(3.0)*x)
der4 =
(1.0+x^(3.0))^(-1)*(3.0+(4.0)*x)-(3.0)*(1.0+x^(3.0))^(-2)*x^(2.0)*((2.0)*x^(2.0)+(3.0)*x)
f =
(1.0+x^(2.0))^(17.0)
der5 =
(34.0)*(1.0+x^(2.0))^(16.0)*x
f =
(-9.0+(3.0)*t^(2.0)+t^(3.0)+(5.0)*t)^(-6.0)
der6 =
-(6.0)*(-9.0+(3.0)*t^(2.0)+t^(3.0)+(5.0)*t)^(-7.0)*(5.0+(3.0)*t^(2.0)+(6.0)*t)
Ableitungen exponentieller, logarithmischer und trigonometrischer Funktionen
Die folgende Tabelle enthält die Ableitungen häufig verwendeter exponentieller, logarithmischer und trigonometrischer Funktionen.
Funktion | Derivat |
---|---|
ca.x | c a.x.ln ca (ln ist natürlicher Logarithmus) |
ex | e x |
ln x | 1 / x |
lncx | 1 / x.ln c |
xx | x x . (1 + ln x) |
sin(x) | cos (x) |
cos(x) | -sin (x) |
tan(x) | sec 2 (x) oder 1 / cos 2 (x) oder 1 + tan 2 (x) |
cot(x) | -csc 2 (x) oder -1 / sin 2 (x) oder - (1 + cot 2 (x)) |
sec(x) | sec (x) .tan (x) |
csc(x) | -csc (x) .cot (x) |
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
syms x
y = exp(x)
diff(y)
y = x^9
diff(y)
y = sin(x)
diff(y)
y = tan(x)
diff(y)
y = cos(x)
diff(y)
y = log(x)
diff(y)
y = log10(x)
diff(y)
y = sin(x)^2
diff(y)
y = cos(3*x^2 + 2*x + 1)
diff(y)
y = exp(x)/sin(x)
diff(y)
Wenn Sie die Datei ausführen, zeigt MATLAB das folgende Ergebnis an:
y =
exp(x)
ans =
exp(x)
y =
x^9
ans =
9*x^8
y =
sin(x)
ans =
cos(x)
y =
tan(x)
ans =
tan(x)^2 + 1
y =
cos(x)
ans =
-sin(x)
y =
log(x)
ans =
1/x
y =
log(x)/log(10)
ans =
1/(x*log(10))
y =
sin(x)^2
ans =
2*cos(x)*sin(x)
y =
cos(3*x^2 + 2*x + 1)
ans =
-sin(3*x^2 + 2*x + 1)*(6*x + 2)
y =
exp(x)/sin(x)
ans =
exp(x)/sin(x) - (exp(x)*cos(x))/sin(x)^2
Es folgt das Oktaväquivalent der obigen Berechnung -
pkg load symbolic
symbols
x = sym("x");
y = Exp(x)
differentiate(y,x)
y = x^9
differentiate(y,x)
y = Sin(x)
differentiate(y,x)
y = Tan(x)
differentiate(y,x)
y = Cos(x)
differentiate(y,x)
y = Log(x)
differentiate(y,x)
% symbolic packages does not have this support
%y = Log10(x)
%differentiate(y,x)
y = Sin(x)^2
differentiate(y,x)
y = Cos(3*x^2 + 2*x + 1)
differentiate(y,x)
y = Exp(x)/Sin(x)
differentiate(y,x)
Octave führt den Code aus und gibt das folgende Ergebnis zurück:
y =
exp(x)
ans =
exp(x)
y =
x^(9.0)
ans =
(9.0)*x^(8.0)
y =
sin(x)
ans =
cos(x)
y =
tan(x)
ans =
1+tan(x)^2
y =
cos(x)
ans =
-sin(x)
y =
log(x)
ans =
x^(-1)
y =
sin(x)^(2.0)
ans =
(2.0)*sin(x)*cos(x)
y =
cos(1.0+(2.0)*x+(3.0)*x^(2.0))
ans =
-(2.0+(6.0)*x)*sin(1.0+(2.0)*x+(3.0)*x^(2.0))
y =
sin(x)^(-1)*exp(x)
ans =
sin(x)^(-1)*exp(x)-sin(x)^(-2)*cos(x)*exp(x)
Berechnen von Derivaten höherer Ordnung
Um höhere Ableitungen einer Funktion f zu berechnen, verwenden wir die Syntax diff(f,n).
Berechnen wir die zweite Ableitung der Funktion y = f (x) = x .e -3x
f = x*exp(-3*x);
diff(f, 2)
MATLAB führt den Code aus und gibt das folgende Ergebnis zurück:
ans =
9*x*exp(-3*x) - 6*exp(-3*x)
Es folgt das Oktaväquivalent der obigen Berechnung -
pkg load symbolic
symbols
x = sym("x");
f = x*Exp(-3*x);
differentiate(f, x, 2)
Octave führt den Code aus und gibt das folgende Ergebnis zurück:
ans =
(9.0)*exp(-(3.0)*x)*x-(6.0)*exp(-(3.0)*x)
Beispiel
Lassen Sie uns in diesem Beispiel ein Problem lösen. Vorausgesetzt, dass eine Funktiony = f(x) = 3 sin(x) + 7 cos(5x). Wir müssen herausfinden, ob die Gleichungf" + f = -5cos(2x) gilt wahr.
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
syms x
y = 3*sin(x)+7*cos(5*x); % defining the function
lhs = diff(y,2)+y; %evaluting the lhs of the equation
rhs = -5*cos(2*x); %rhs of the equation
if(isequal(lhs,rhs))
disp('Yes, the equation holds true');
else
disp('No, the equation does not hold true');
end
disp('Value of LHS is: '), disp(lhs);
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
No, the equation does not hold true
Value of LHS is:
-168*cos(5*x)
Es folgt das Oktaväquivalent der obigen Berechnung -
pkg load symbolic
symbols
x = sym("x");
y = 3*Sin(x)+7*Cos(5*x); % defining the function
lhs = differentiate(y, x, 2) + y; %evaluting the lhs of the equation
rhs = -5*Cos(2*x); %rhs of the equation
if(lhs == rhs)
disp('Yes, the equation holds true');
else
disp('No, the equation does not hold true');
end
disp('Value of LHS is: '), disp(lhs);
Octave führt den Code aus und gibt das folgende Ergebnis zurück:
No, the equation does not hold true
Value of LHS is:
-(168.0)*cos((5.0)*x)
Finden der Maxima und Minima einer Kurve
Wenn wir nach den lokalen Maxima und Minima für einen Graphen suchen, suchen wir grundsätzlich nach den höchsten oder niedrigsten Punkten im Graphen der Funktion an einem bestimmten Ort oder nach einem bestimmten Wertebereich der symbolischen Variablen.
Für eine Funktion y = f (x) werden die Punkte im Diagramm genannt, an denen das Diagramm eine Steigung von Null aufweist stationary points. Mit anderen Worten sind stationäre Punkte, an denen f '(x) = 0 ist.
Um die stationären Punkte einer von uns differenzierten Funktion zu finden, müssen wir die Ableitung gleich Null setzen und die Gleichung lösen.
Beispiel
Finden wir die stationären Punkte der Funktion f (x) = 2x 3 + 3x 2 - 12x + 17
Führen Sie die folgenden Schritte aus:
First let us enter the function and plot its graph.
syms x
y = 2*x^3 + 3*x^2 - 12*x + 17; % defining the function
ezplot(y)
MATLAB führt den Code aus und gibt den folgenden Plot zurück -
Hier ist der Octave-äquivalente Code für das obige Beispiel -
pkg load symbolic
symbols
x = sym('x');
y = inline("2*x^3 + 3*x^2 - 12*x + 17");
ezplot(y)
print -deps graph.eps
Our aim is to find some local maxima and minima on the graph, so let us find the local maxima and minima for the interval [-2, 2] on the graph.
syms x
y = 2*x^3 + 3*x^2 - 12*x + 17; % defining the function
ezplot(y, [-2, 2])
MATLAB führt den Code aus und gibt den folgenden Plot zurück -
Hier ist der Octave-äquivalente Code für das obige Beispiel -
pkg load symbolic
symbols
x = sym('x');
y = inline("2*x^3 + 3*x^2 - 12*x + 17");
ezplot(y, [-2, 2])
print -deps graph.eps
Next, let us compute the derivative.
g = diff(y)
MATLAB führt den Code aus und gibt das folgende Ergebnis zurück:
g =
6*x^2 + 6*x - 12
Hier ist das Oktaväquivalent der obigen Berechnung -
pkg load symbolic
symbols
x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y,x)
Octave führt den Code aus und gibt das folgende Ergebnis zurück:
g =
-12.0+(6.0)*x+(6.0)*x^(2.0)
Let us solve the derivative function, g, to get the values where it becomes zero.
s = solve(g)
MATLAB führt den Code aus und gibt das folgende Ergebnis zurück:
s =
1
-2
Es folgt das Oktaväquivalent der obigen Berechnung -
pkg load symbolic
symbols
x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y,x)
roots([6, 6, -12])
Octave führt den Code aus und gibt das folgende Ergebnis zurück:
g =
-12.0+(6.0)*x^(2.0)+(6.0)*x
ans =
-2
1
This agrees with our plot. So let us evaluate the function f at the critical points x = 1, -2. Wir können einen Wert in einer symbolischen Funktion ersetzen, indem wir das verwenden subs Befehl.
subs(y, 1), subs(y, -2)
MATLAB führt den Code aus und gibt das folgende Ergebnis zurück:
ans =
10
ans =
37
Es folgt das Oktaväquivalent der obigen Berechnung -
pkg load symbolic
symbols
x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y,x)
roots([6, 6, -12])
subs(y, x, 1), subs(y, x, -2)
ans =
10.0
ans =
37.0-4.6734207789940138748E-18*I
Daher betragen die Minimal- und Maximalwerte für die Funktion f (x) = 2x 3 + 3x 2 - 12x + 17 im Intervall [-2,2] 10 und 37.
Differentialgleichungen lösen
MATLAB bietet die dsolve Befehl zum symbolischen Lösen von Differentialgleichungen.
Die grundlegendste Form der dsolve Befehl zum Finden der Lösung für eine einzelne Gleichung lautet
dsolve('eqn')
Dabei ist eqn eine Textzeichenfolge, mit der die Gleichung eingegeben wird.
Es gibt eine symbolische Lösung mit einer Reihe beliebiger Konstanten zurück, die MATLAB mit C1, C2 usw. bezeichnet.
Sie können auch Anfangs- und Randbedingungen für das Problem als durch Kommas getrennte Liste angeben, die der Gleichung folgt:
dsolve('eqn','cond1', 'cond2',…)
Zum Verwenden des Befehls dsolve derivatives are indicated with a D. Zum Beispiel wird eine Gleichung wie f '(t) = -2 * f + Kosten (t) eingegeben als -
'Df = -2*f + cos(t)'
Höhere Ableitungen werden angezeigt, indem D in der Reihenfolge der Ableitung folgt.
Zum Beispiel sollte die Gleichung f "(x) + 2f '(x) = 5sin3x als - eingegeben werden
'D2y + 2Dy = 5*sin(3*x)'
Nehmen wir ein einfaches Beispiel einer Differentialgleichung erster Ordnung: y '= 5y.
s = dsolve('Dy = 5*y')
MATLAB führt den Code aus und gibt das folgende Ergebnis zurück:
s =
C2*exp(5*t)
Nehmen wir ein anderes Beispiel einer Differentialgleichung zweiter Ordnung als: y "- y = 0, y (0) = -1, y '(0) = 2.
dsolve('D2y - y = 0','y(0) = -1','Dy(0) = 2')
MATLAB führt den Code aus und gibt das folgende Ergebnis zurück:
ans =
exp(t)/2 - (3*exp(-t))/2
Die Integration befasst sich mit zwei grundsätzlich unterschiedlichen Arten von Problemen.
Im ersten Typ ist die Ableitung einer Funktion gegeben und wir wollen die Funktion finden. Daher kehren wir den Differenzierungsprozess grundsätzlich um. Dieser umgekehrte Prozess ist bekannt als Antidifferenzierung oder Auffinden der primitiven Funktion oder Auffinden einerindefinite integral.
Die zweite Art von Problemen besteht darin, eine sehr große Anzahl sehr kleiner Mengen zu addieren und dann eine Grenze zu setzen, wenn sich die Größe der Mengen Null nähert, während die Anzahl der Terme gegen unendlich tendiert. Dieser Prozess führt zur Definition derdefinite integral.
Bestimmte Integrale werden zum Auffinden von Fläche, Volumen, Schwerpunkt, Trägheitsmoment, von einer Kraft ausgeführter Arbeit und in zahlreichen anderen Anwendungen verwendet.
Finden eines unbestimmten Integrals mit MATLAB
Wenn per Definition die Ableitung einer Funktion f (x) f '(x) ist, dann sagen wir, dass ein unbestimmtes Integral von f' (x) in Bezug auf x f (x) ist. Da zum Beispiel die Ableitung (in Bezug auf x) von x 2 2x ist, können wir sagen, dass ein unbestimmtes Integral von 2x x 2 ist .
In Symbolen -
f'(x2) = 2x, deshalb,
∫ 2xdx = x2.
Das unbestimmte Integral ist nicht eindeutig, da die Ableitung von x 2 + c für jeden Wert einer Konstanten c ebenfalls 2x ist.
Dies wird in Symbolen ausgedrückt als -
∫ 2xdx = x2 + c.
Wobei c eine "beliebige Konstante" genannt wird.
MATLAB bietet eine intBefehl zum Berechnen des Integrals eines Ausdrucks. Um einen Ausdruck für das unbestimmte Integral einer Funktion abzuleiten, schreiben wir -
int(f);
Zum Beispiel aus unserem vorherigen Beispiel -
syms x
int(2*x)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
x^2
Beispiel 1
Lassen Sie uns in diesem Beispiel das Integral einiger häufig verwendeter Ausdrücke finden. Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
syms x n
int(sym(x^n))
f = 'sin(n*t)'
int(sym(f))
syms a t
int(a*cos(pi*t))
int(a^x)
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
ans =
piecewise([n == -1, log(x)], [n ~= -1, x^(n + 1)/(n + 1)])
f =
sin(n*t)
ans =
-cos(n*t)/n
ans =
(a*sin(pi*t))/pi
ans =
a^x/log(a)
Beispiel 2
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
syms x n
int(cos(x))
int(exp(x))
int(log(x))
int(x^-1)
int(x^5*cos(5*x))
pretty(int(x^5*cos(5*x)))
int(x^-5)
int(sec(x)^2)
pretty(int(1 - 10*x + 9 * x^2))
int((3 + 5*x -6*x^2 - 7*x^3)/2*x^2)
pretty(int((3 + 5*x -6*x^2 - 7*x^3)/2*x^2))
Notiere dass der pretty Die Funktion gibt einen Ausdruck in einem besser lesbaren Format zurück.
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
ans =
sin(x)
ans =
exp(x)
ans =
x*(log(x) - 1)
ans =
log(x)
ans =
(24*cos(5*x))/3125 + (24*x*sin(5*x))/625 - (12*x^2*cos(5*x))/125 + (x^4*cos(5*x))/5 - (4*x^3*sin(5*x))/25 + (x^5*sin(5*x))/5
2 4
24 cos(5 x) 24 x sin(5 x) 12 x cos(5 x) x cos(5 x)
----------- + ------------- - -------------- + ------------
3125 625 125 5
3 5
4 x sin(5 x) x sin(5 x)
------------- + -----------
25 5
ans =
-1/(4*x^4)
ans =
tan(x)
2
x (3 x - 5 x + 1)
ans =
- (7*x^6)/12 - (3*x^5)/5 + (5*x^4)/8 + x^3/2
6 5 4 3
7 x 3 x 5 x x
- ---- - ---- + ---- + --
12 5 8 2
Bestimmtes Integral mit MATLAB finden
Definitives Integral ist per Definition im Grunde die Grenze einer Summe. Wir verwenden bestimmte Integrale, um Bereiche wie den Bereich zwischen einer Kurve und der x-Achse und den Bereich zwischen zwei Kurven zu finden. Bestimmte Integrale können auch in anderen Situationen verwendet werden, in denen die erforderliche Menge als Grenze einer Summe ausgedrückt werden kann.
Das int Die Funktion kann für die definitive Integration verwendet werden, indem die Grenzen überschritten werden, über die Sie das Integral berechnen möchten.
Berechnen
wir schreiben,
int(x, a, b)
Zum Beispiel, um den Wert von zu berechnen
int(x, 4, 9)
MATLAB führt die obige Anweisung aus und gibt das folgende Ergebnis zurück:
ans =
65/2
Es folgt das Oktaväquivalent der obigen Berechnung -
pkg load symbolic
symbols
x = sym("x");
f = x;
c = [1, 0];
integral = polyint(c);
a = polyval(integral, 9) - polyval(integral, 4);
display('Area: '), disp(double(a));
Octave führt den Code aus und gibt das folgende Ergebnis zurück:
Area:
32.500
Eine alternative Lösung kann unter Verwendung der von Octave bereitgestellten Quad () -Funktion wie folgt angegeben werden:
pkg load symbolic
symbols
f = inline("x");
[a, ierror, nfneval] = quad(f, 4, 9);
display('Area: '), disp(double(a));
Octave führt den Code aus und gibt das folgende Ergebnis zurück:
Area:
32.500
Beispiel 1
Berechnen wir die Fläche zwischen der x-Achse und der Kurve y = x 3 −2x + 5 und den Ordinaten x = 1 und x = 2.
Der erforderliche Bereich ist gegeben durch -
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
f = x^3 - 2*x +5;
a = int(f, 1, 2)
display('Area: '), disp(double(a));
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
a =
23/4
Area:
5.7500
Es folgt das Oktaväquivalent der obigen Berechnung -
pkg load symbolic
symbols
x = sym("x");
f = x^3 - 2*x +5;
c = [1, 0, -2, 5];
integral = polyint(c);
a = polyval(integral, 2) - polyval(integral, 1);
display('Area: '), disp(double(a));
Octave führt den Code aus und gibt das folgende Ergebnis zurück:
Area:
5.7500
Eine alternative Lösung kann unter Verwendung der von Octave bereitgestellten Quad () -Funktion wie folgt angegeben werden:
pkg load symbolic
symbols
x = sym("x");
f = inline("x^3 - 2*x +5");
[a, ierror, nfneval] = quad(f, 1, 2);
display('Area: '), disp(double(a));
Octave führt den Code aus und gibt das folgende Ergebnis zurück:
Area:
5.7500
Beispiel 2
Finden Sie die Fläche unter der Kurve: f (x) = x 2 cos (x) für −4 ≤ x ≤ 9.
Erstellen Sie eine Skriptdatei und schreiben Sie den folgenden Code:
f = x^2*cos(x);
ezplot(f, [-4,9])
a = int(f, -4, 9)
disp('Area: '), disp(double(a));
Wenn Sie die Datei ausführen, zeichnet MATLAB das Diagramm -
Die Ausgabe ist unten angegeben -
a =
8*cos(4) + 18*cos(9) + 14*sin(4) + 79*sin(9)
Area:
0.3326
Es folgt das Oktaväquivalent der obigen Berechnung -
pkg load symbolic
symbols
x = sym("x");
f = inline("x^2*cos(x)");
ezplot(f, [-4,9])
print -deps graph.eps
[a, ierror, nfneval] = quad(f, -4, 9);
display('Area: '), disp(double(a));
MATLAB repräsentiert Polynome als Zeilenvektoren, die Koeffizienten enthalten, die nach absteigenden Potenzen geordnet sind. Zum Beispiel könnte die Gleichung P (x) = x 4 + 7x 3 - 5x + 9 dargestellt werden als -
p = [1 7 0 -5 9];
Auswertung von Polynomen
Das polyvalDie Funktion wird zum Auswerten eines Polynoms bei einem bestimmten Wert verwendet. Zum Beispiel, um unser vorheriges Polynom zu bewertenpGeben Sie bei x = 4 -
p = [1 7 0 -5 9];
polyval(p,4)
MATLAB führt die obigen Anweisungen aus und gibt das folgende Ergebnis zurück:
ans = 693
MATLAB bietet auch die polyvalmFunktion zur Auswertung eines Matrixpolynoms. Ein Matrixpolynom ist apolynomial mit Matrizen als Variablen.
Lassen Sie uns zum Beispiel eine quadratische Matrix X erstellen und das Polynom p bei X - auswerten.
p = [1 7 0 -5 9];
X = [1 2 -3 4; 2 -5 6 3; 3 1 0 2; 5 -7 3 8];
polyvalm(p, X)
MATLAB führt die obigen Anweisungen aus und gibt das folgende Ergebnis zurück:
ans =
2307 -1769 -939 4499
2314 -2376 -249 4695
2256 -1892 -549 4310
4570 -4532 -1062 9269
Die Wurzeln von Polynomen finden
Das rootsFunktion berechnet die Wurzeln eines Polynoms. Um beispielsweise die Wurzeln unseres Polynoms p zu berechnen, geben Sie -
p = [1 7 0 -5 9];
r = roots(p)
MATLAB führt die obigen Anweisungen aus und gibt das folgende Ergebnis zurück:
r =
-6.8661 + 0.0000i
-1.4247 + 0.0000i
0.6454 + 0.7095i
0.6454 - 0.7095i
Die Funktion polyist eine Umkehrung der Wurzelfunktion und kehrt zu den Polynomkoeffizienten zurück. Zum Beispiel -
p2 = poly(r)
MATLAB führt die obigen Anweisungen aus und gibt das folgende Ergebnis zurück:
p2 =
Columns 1 through 3:
1.00000 + 0.00000i 7.00000 + 0.00000i 0.00000 + 0.00000i
Columns 4 and 5:
-5.00000 - 0.00000i 9.00000 + 0.00000i
Polynomkurvenanpassung
Das polyfitDie Funktion ermittelt die Koeffizienten eines Polynoms, das im Sinne der kleinsten Quadrate zu einem Datensatz passt. Wenn x und y zwei Vektoren sind, die die x- und y-Daten enthalten, die an ein n-Grad-Polynom angepasst werden sollen, erhalten wir das Polynom, das die Daten durch Schreiben von - anpasst.
p = polyfit(x,y,n)
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
x = [1 2 3 4 5 6]; y = [5.5 43.1 128 290.7 498.4 978.67]; %data
p = polyfit(x,y,4) %get the polynomial
% Compute the values of the polyfit estimate over a finer range,
% and plot the estimate over the real data values for comparison:
x2 = 1:.1:6;
y2 = polyval(p,x2);
plot(x,y,'o',x2,y2)
grid on
Wenn Sie die Datei ausführen, zeigt MATLAB das folgende Ergebnis an:
p =
4.1056 -47.9607 222.2598 -362.7453 191.1250
Und zeichnet die folgende Grafik -
MATLAB bietet Befehle zum Arbeiten mit Transformationen wie Laplace- und Fourier-Transformationen. Transformationen werden in Wissenschaft und Technik als Werkzeug zur Vereinfachung der Analyse und zur Betrachtung von Daten aus einem anderen Blickwinkel verwendet.
Zum Beispiel erlaubt uns die Fourier-Transformation, ein als Funktion der Zeit dargestelltes Signal in eine Funktion der Frequenz umzuwandeln. Mit der Laplace-Transformation können wir eine Differentialgleichung in eine algebraische Gleichung umwandeln.
MATLAB bietet die laplace, fourier und fft Befehle zum Arbeiten mit Laplace-, Fourier- und Fast Fourier-Transformationen.
Die Laplace-Transformation
Die Laplace-Transformation einer Funktion der Zeit f (t) ist gegeben durch das folgende Integral -
Die Laplace-Transformation wird auch als Transformation von f (t) zu F (s) bezeichnet. Sie können sehen, dass dieser Transformations- oder Integrationsprozess f (t), eine Funktion der symbolischen Variablen t, in eine andere Funktion F (s) mit einer anderen Variablen s konvertiert.
Die Laplace-Transformation wandelt Differentialgleichungen in algebraische um. Um eine Laplace-Transformation einer Funktion f (t) zu berechnen, schreiben Sie -
laplace(f(t))
Beispiel
In diesem Beispiel berechnen wir die Laplace-Transformation einiger häufig verwendeter Funktionen.
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
syms s t a b w
laplace(a)
laplace(t^2)
laplace(t^9)
laplace(exp(-b*t))
laplace(sin(w*t))
laplace(cos(w*t))
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
ans =
1/s^2
ans =
2/s^3
ans =
362880/s^10
ans =
1/(b + s)
ans =
w/(s^2 + w^2)
ans =
s/(s^2 + w^2)
Die inverse Laplace-Transformation
Mit MATLAB können wir die inverse Laplace-Transformation mit dem Befehl berechnen ilaplace.
Zum Beispiel,
ilaplace(1/s^3)
MATLAB führt die obige Anweisung aus und zeigt das Ergebnis an -
ans =
t^2/2
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
syms s t a b w
ilaplace(1/s^7)
ilaplace(2/(w+s))
ilaplace(s/(s^2+4))
ilaplace(exp(-b*t))
ilaplace(w/(s^2 + w^2))
ilaplace(s/(s^2 + w^2))
Wenn Sie die Datei ausführen, wird das folgende Ergebnis angezeigt:
ans =
t^6/720
ans =
2*exp(-t*w)
ans =
cos(2*t)
ans =
ilaplace(exp(-b*t), t, x)
ans =
sin(t*w)
ans =
cos(t*w)
Die Fourier-Transformationen
Fourier-Transformationen transformieren üblicherweise eine mathematische Funktion der Zeit f (t) in eine neue Funktion, die manchmal mit oder F bezeichnet wird und deren Argument die Frequenz mit Einheiten von Zyklen / s (Hertz) oder Bogenmaß pro Sekunde ist. Die neue Funktion ist dann als Fourier-Transformation und / oder Frequenzspektrum der Funktion f bekannt.
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
syms x
f = exp(-2*x^2); %our function
ezplot(f,[-2,2]) % plot of our function
FT = fourier(f) % Fourier transform
Wenn Sie die Datei ausführen, zeichnet MATLAB das folgende Diagramm:
Das folgende Ergebnis wird angezeigt -
FT =
(2^(1/2)*pi^(1/2)*exp(-w^2/8))/2
Zeichnen der Fourier-Transformation als -
ezplot(FT)
Gibt die folgende Grafik -
Inverse Fourier-Transformationen
MATLAB bietet die ifourierBefehl zum Berechnen der inversen Fourier-Transformation einer Funktion. Zum Beispiel,
f = ifourier(-2*exp(-abs(w)))
MATLAB führt die obige Anweisung aus und zeigt das Ergebnis an -
f =
-2/(pi*(x^2 + 1))
GNU Octave ist eine Programmiersprache auf hoher Ebene wie MATLAB und größtenteils mit MATLAB kompatibel. Es wird auch für numerische Berechnungen verwendet.
Octave hat die folgenden gemeinsamen Funktionen mit MATLAB:
- Matrizen sind grundlegende Datentypen
- Es verfügt über eine integrierte Unterstützung für komplexe Zahlen
- Es verfügt über integrierte mathematische Funktionen und Bibliotheken
- Es unterstützt benutzerdefinierte Funktionen
GNU Octave ist auch frei verteilbare Software. Sie können es unter den Bedingungen der GNU General Public License (GPL), wie von der Free Software Foundation veröffentlicht, weitergeben und / oder ändern.
MATLAB gegen Oktave
Die meisten MATLAB-Programme werden in Octave ausgeführt, aber einige der Octave-Programme werden möglicherweise nicht in MATLAB ausgeführt, da Octave eine Syntax zulässt, die MATLAB nicht zulässt.
Beispielsweise unterstützt MATLAB nur einfache Anführungszeichen, Octave unterstützt jedoch sowohl einfache als auch doppelte Anführungszeichen zum Definieren von Zeichenfolgen. Wenn Sie nach einem Tutorial zu Octave suchen, lesen Sie dieses Tutorial von Anfang an durch, das sowohl MATLAB als auch Octave behandelt.
Kompatible Beispiele
Fast alle in diesem Tutorial behandelten Beispiele sind sowohl mit MATLAB als auch mit Octave kompatibel. Versuchen wir, das folgende Beispiel in MATLAB und Octave zu verwenden, das das gleiche Ergebnis ohne Syntaxänderungen liefert.
In diesem Beispiel wird eine 3D-Oberflächenkarte für die Funktion g = xe - (x 2 + y 2 ) erstellt . Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein:
[x,y] = meshgrid(-2:.2:2);
g = x .* exp(-x.^2 - y.^2);
surf(x, y, g)
print -deps graph.eps
Wenn Sie die Datei ausführen, zeigt MATLAB die folgende 3D-Zuordnung an:
Nicht kompatible Beispiele
Obwohl alle Kernfunktionen von MATLAB in Octave verfügbar sind, gibt es einige Funktionen, z. B. Differential & Integration Calculus, die nicht in beiden Sprachen genau übereinstimmen. In diesem Tutorial wurde versucht, beide Arten von Beispielen anzugeben, bei denen sie sich in ihrer Syntax unterschieden.
Betrachten Sie das folgende Beispiel, in dem MATLAB und Octave unterschiedliche Funktionen verwenden, um die Fläche einer Kurve zu erhalten: f (x) = x 2 cos (x) für −4 ≤ x ≤ 9. Es folgt die MATLAB-Version des Codes -
f = x^2*cos(x);
ezplot(f, [-4,9])
a = int(f, -4, 9)
disp('Area: '), disp(double(a));
Wenn Sie die Datei ausführen, zeichnet MATLAB das Diagramm -
Das folgende Ergebnis wird angezeigt
a =
8*cos(4) + 18*cos(9) + 14*sin(4) + 79*sin(9)
Area:
0.3326
Um jedoch in Octave eine Fläche mit derselben Kurve zu erhalten, müssen Sie diese verwenden symbolic Paket wie folgt -
pkg load symbolic
symbols
x = sym("x");
f = inline("x^2*cos(x)");
ezplot(f, [-4,9])
print -deps graph.eps
[a, ierror, nfneval] = quad(f, -4, 9);
display('Area: '), disp(double(a));
Simulink ist eine in MATLAB integrierte simulations- und modellbasierte Entwurfsumgebung für dynamische und eingebettete Systeme. Simulink, ebenfalls von MathWorks entwickelt, ist ein grafisches Programmiersprachenwerkzeug für den Datenfluss zum Modellieren, Simulieren und Analysieren dynamischer Systeme mit mehreren Domänen. Grundsätzlich handelt es sich um ein grafisches Blockdiagramm-Tool mit anpassbaren Blockbibliotheken.
Sie können MATLAB-Algorithmen in Modelle integrieren und die Simulationsergebnisse zur weiteren Analyse in MATLAB exportieren.
Simulink unterstützt -
- Design auf Systemebene
- simulation
- automatische Codegenerierung
- Testen und Verifizieren von eingebetteten Systemen
Es gibt mehrere andere Add-On-Produkte von MathWorks sowie Hardware- und Softwareprodukte von Drittanbietern, die für die Verwendung mit Simulink verfügbar sind.
Die folgende Liste enthält eine kurze Beschreibung einiger von ihnen -
Stateflow ermöglicht die Entwicklung von Zustandsautomaten und Flussdiagrammen.
Simulink Coder ermöglicht die automatische Generierung von C-Quellcode für die Echtzeitimplementierung von Systemen.
xPC Target zusammen mit x86-based real-time systems Bereitstellung einer Umgebung zum Simulieren und Testen von Simulink- und Stateflow-Modellen in Echtzeit auf dem physischen System.
Embedded Coder unterstützt bestimmte eingebettete Ziele.
HDL Coder ermöglicht die automatische Generierung von synthetisierbarem VHDL und Verilog.
SimEvents bietet eine Bibliothek mit grafischen Bausteinen zur Modellierung von Warteschlangensystemen.
Simulink ist in der Lage, Modelle systematisch zu überprüfen und zu validieren, indem der Modellstil überprüft, die Anforderungen nachverfolgt und die Modellabdeckung analysiert wird.
Mit Simulink Design Verifier können Sie Entwurfsfehler identifizieren und Testfallszenarien für die Modellprüfung generieren.
Verwenden von Simulink
Geben Sie zum Öffnen von Simulink den MATLAB-Arbeitsbereich ein -
simulink
Simulink öffnet mit dem Library Browser. Der Bibliotheksbrowser wird zum Erstellen von Simulationsmodellen verwendet.
Im linken Fensterbereich finden Sie mehrere Bibliotheken, die nach verschiedenen Systemen kategorisiert sind. Wenn Sie auf jeden einzelnen klicken, werden die Entwurfsblöcke im rechten Fensterbereich angezeigt.
Gebäudemodelle
Klicken Sie auf, um ein neues Modell zu erstellen NewSchaltfläche in der Symbolleiste des Bibliotheksbrowsers. Dies öffnet ein neues Modellfenster ohne Titel.
Ein Simulink-Modell ist ein Blockdiagramm.
Modellelemente werden hinzugefügt, indem Sie die entsprechenden Elemente im Bibliotheksbrowser auswählen und in das Modellfenster ziehen.
Alternativ können Sie die Modellelemente kopieren und in das Modellfenster einfügen.
Beispiele
Ziehen Sie Elemente aus der Simulink-Bibliothek und legen Sie sie dort ab, um Ihr Projekt zu erstellen.
In diesem Beispiel werden zwei Blöcke für die Simulation verwendet - A. Source (ein Signal) und a Sink(ein Umfang). Ein Signalgenerator (die Quelle) erzeugt ein analoges Signal, das dann vom Oszilloskop (der Senke) grafisch dargestellt wird.
Ziehen Sie zunächst die erforderlichen Blöcke aus der Bibliothek in das Projektfenster. Verbinden Sie dann die Blöcke miteinander. Ziehen Sie dazu die Anschlüsse von den Verbindungspunkten eines Blocks zu denen eines anderen.
Ziehen wir einen 'Sinus'-Block in das Modell.
Wählen Sie "Sinks" aus der Bibliothek und ziehen Sie einen "Scope" -Block in das Modell.
Ziehen Sie eine Signalleitung vom Ausgang des Sinuswellenblocks zum Eingang des Scope-Blocks.
Führen Sie die Simulation durch Drücken von 'RunSchaltfläche ', wobei alle Parameter standardmäßig beibehalten werden (Sie können sie über das Menü Simulation ändern)
Sie sollten das folgende Diagramm aus dem Bereich erhalten.