Einführung in MATLAB: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(54 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Autor:'''  [[Benutzer:Ulrich_Schneider|Prof. Ulrich Schneider]]
[[Kategorie:MATLAB]]
[[Datei:MATLAB-Symbol-700x394.jpg|thumb|rigth|450px|Abb. 1: MATrix LABoratory (MATLAB<sup>®</sup>)]]
{| class="wikitable"
|-
| '''Autor:'''  || [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]
|}


Umfang der virtuelle Lehrveranstaltung: 2 SWS
= Einleitung =


= Lektion 1: Matlab Getting Started =
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
== Header ==
| <strong>Fragestellungen, Begriffe und Voraussetzungen &thinsp;</strong>
Verwenden Sie in jeder Datei einen Header, der die nachfolgenden Fragen beantwortet:
|-
* Um welches Modul handelt es sich?
|
* Was macht das Modul oder die Funktion?
'''Fragestellungen'''<br>
* Wer sind die Autoren?
MATLAB<sup>®</sup> von der Firma [https://www.mathworks.com/ MathWorks<sup>®</sup>] ist ein multifunktionelles wissenschaftliches Simulationswerkzeug, mit denen z.&thinsp;B. Messdaten gelesen, analysiert, verarbeitet und visualisiert werden können. Mechatroniker*innen werden mit MATLAB simulieren, Daten auswerten und sogar in Echtzeit mechatronische Systeme regeln. Fragestellung dieser Lektion sind die Programmstrukturen von MATLAB<sup>®</sup>. Die Fragestellung dieses Selbstlernkurses ist wie man mit MATLAB<sup>®</sup> umgeht.
* Zu welcher Hochschule, Veranstaltung, Projekt gehört der Code?
* Bei Funktionen: Welche Eingangs- und Ausgangsparameter hat fie Funktion?
* Wann wurde die Datei erstellt und wann zuletzt geändert?
* Wird eine spezielle Toolbox verwendet?


=== Beispiel ===
'''Eingeführte Begriffe und Konzepte'''
<source lang="matlab" style="font-size:medium">
* MATLAB<sup>®</sup> kann hervorragend mit Feldern (Vektoren/Matrizen) arbeiten. Sie Zugriffe auf die Feldeinträge sind äußerst simpel. Dies gilt auch für die Matrizenrechnung.
%****************************************************************
*Verzweigungen und Schleifen sind grundlegenden Programmstrukturen der Informatik.
%        Hochschule Hamm-Lippstadt                              *
*Funtionen bieten die Möglichkeit Programmteile, die häufiger ausgeführt werden zu kapseln. Es Möglichkeit zum Debuggen lassen sich über das Command Window ein und Ausgaben machen.
%****************************************************************
* Daten können leicht in individuellen Grafiken angezeigt werden. Diese können umfassend beschriftet werden. Der Datentyp struct und Klassen ermöglichen die Erzeugung komplexere Daten- und Funktionsstrukturen.
% Modul           : ML_5_2b                                    *
*Dateien können ebenfalls als Ein- und Ausgabe dienen. Gezeigt wird der Umgang mit ASCII und Binördateien. Die Erzeugung von Strings ist ein wesentlicher Bestandteil.
%                                                              *
*Komplexe Programme können in Funktionen modularisiert werden. Die MATLAB<sup>®</sup>-Hilfe gibt wichtige Hinweise zum Aufruf von Funktionen.
% Datum          : 16-Mai-2014                                *
*Daten können importiert und in Diagrammen visualisiert werden. Die Grundlagen der Programmierung mit Verweigungen und Schleifen wird vertieft.
%                                                              *
% Funktion        : Moire Muster im Frequenzbereich entfernt    *
%                                                              *
% Implementation  : MATLAB R2013a                              *
%                                                              *
% Toolbox        : Camera Calibration Toolbox                  *
%                                                              *
% Author          : Prof. Schneider                            *
%                                                              *
% Bemerkung      : basierend auf der                           *
%                  Camera Calibration Toolbox for Matlab      *
%            http://www.vision.caltech.edu/bouguetj/calib_doc/ *
%                                                              *
% Letzte Änderung : 03. Januar 2014                            *
%                                                              *
%***************************************************************/
</source>


== Bild mit interaktivem Dialog laden ==
'''Vorausgesetzte Kenntnisse aus vorangegangenen Kapiteln'''<br>
* Laden Sie ein Bild indem Sie den Nutzer die Datei mit einem GUI auswählen lassen.
Grundlagen der Vektoralgebra
* Von der Bilddatei soll anschließend Pfad und Dateiname verfügbar sein.
|}


=== Musterlösung ===
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
<source lang="matlab" style="font-size:medium">
| <strong>Lernziele &thinsp;</strong>
% Schalter um das Lade-GUI zu umgehen
|-
bShortCut=false;
|
Nach Durchführung dieses Selbstlernkurses
*können Sie mit der MATLAB-Oberfläche umgehen.
* können Sie Informationen im Command Window ausgeben.
*können Sie Programme schreiben und speichern.
*können Sie mit Matrizen rechnen und auf deren Inhalt gezielt zugreifen.
*können Sie Daten laden, speichern und anzeigen.
*kennen Sie die Programmiergrundelemente: Verzeigung und Schleifen und können diese in MATLAB<sup>®</sup> anwenden.
*können Sie komplexe Programmteile in einer Funktion auslagern.
*können Sie mit der MATLAB<sup>®</sup>-Hilfe umgehen.
* können Sie Strukturen anlegen und auf deren Inhalte zugreifen.
* können Sie mit Character-Arrays umgehen.
|}


if (bShortCut==true)
Für den Einstieg in MATLAB<sup>®</sup> bieten sich die folgenden Möglichkeiten an:
    % vorgegebene Bilddatei laden
* [[Einführung_in_MATLAB#Einstieg über das HSHL-Wiki|Einstieg über das HSHL-Wiki]]
    filename = 'P3_image_error.png';
* [[Einführung_in_MATLAB#Einstieg_über_MathWorks_Kurse|Einstieg über MathWorks Kurse]]
    pathname = [cd,'\'];
* [[Einführung_in_MATLAB#Einstieg über de.linkedin.com|Einstieg über de.linkedin.com]]
    disp(['Alternatives Bild laden: ', fullfile(pathname, filename)])
* [[Einführung_in_MATLAB#Einsteig über ein Fachbuch|Einsteig über ein Fachbuch]]
else
    % Interaktiven Dialog starten
    [filename, pathname] = ...
        uigetfile({'*.png';'*.*'},'File Selector'); % Fokus auf Dateiendung '*.png'
    if isequal(filename,0)
        disp('User selected Cancel') 
    else
        disp(['User selected', fullfile(pathname, filename)])
    end
end
% Bild laden
Originalbild = imread([pathname, filename]);
</source>


== Lektion: Animated Gif erstellen ==
= MATLAB-Syntax in a nutshell =
In dieser Lektion lernen Sie, ein ''Animated Gif'' mit Matlab zu erstellen.
Hier finden Sie eine Übersicht der wichtigsten [[MATLAB-Befehle|MATLAB-Befehle]].


'''Zeitumfang:''' 45 Minuten
= Einstieg über das HSHL-Wiki =
Diese Einstiegsmöglichkeit entsteht derzeit. Anregungen, Fragen und Feedback ist erwünscht.
{| class="wikitable"
|-
! #  !! Thema !! Inhalte !! Lernzielkontrolle
|-
| 1  || [[MATLAB Repetitorium - Einführung|Einführung]] ||
* Oberfläche
* Vektoren und Matrizen
* Skript erstellen
* Initialisierung
|| [[MATLAB Lernzielkontrolle: Einführung|Einführung]]
|-
| 2  || [[MATLAB Repetitorium - Graphische Darstellung|Graphische Darstellung]]||
* 2D-Grafik
* Grafik-Handles
* Laden und Speichern von Variablen
* 3D-Grafik
|| [[MATLAB Lernzielkontrolle: Graphische Darstellung|Graphische Darstellung]]
|-
| 3 || [[MATLAB Repetitorium - Programmstrukturen|Programmstrukturen]] ||
* Verzweigungen
* Schleifen
* Funktionen
* Debugging
* Ein- und Ausgaben
* <code>varargs</code>-Mechanismus
|-
| 4 || [[MATLAB Repetitorium - Nachhaltige Programmierung|Nachhaltige Programmierung]] ||
* Kommentare
* Programmierrichtlinien
* MATLAB<sup>®</sup>-Hilfe
|-
| 5  || [[MATLAB Repetitorium - Daten und Dateizugriff|Daten & Dateizugriff]]  ||
* Textdateien einlesen
* Textdateien schreiben
* <code>.mat</code>-Datei speichern & laden
* Cell-Array
|-
| 6  || Datenstrukturen ||
* Datentypen
* Matrizen
* Matrix-Operatoren
* Cell-Array
|-
| 8  || Strukturen und Klassen ||
* struct
* Objektorientierte Programmierung (OOP)
|-
| 9  || Grafische Benutzeroberfläche (GUI)||
* Live-Skript (<code>.mlx</code>)
*App-Designer
|-
| 10  || Einführung in Simulink ||
|-
| 11  || [[MATLAB Repetitorium - Symbolische Mathematik|Symbolische Mathematik]] ||
* Plotten von symbolischen Funktionen
|| [[MATLAB Lernzielkontrolle: Symbolische Mathematik|Symbolische Mathematik]]
|-
| 12 || [[MATLAB Repetitorium - Bildverarbeitung|Einführung in die Bildverarbeitung]] ||
* Bilder einlesen und anzeigen
* Videoverarbeitung
* Bildverbesserung durch Filter
* Segmentierung
* Morphologische Operationen
|}


=== Aufgabe ===
== Einstieg über MathWorks Kurse ==
* Simulieren Sie zyklisch einen variierenden Funktionsgrafen, der sich mit der Zeit verändert.
Ein einfachen Weg für den Einstieg in die MATLAB-Toolwelt bieten die kostenlosen Self-Pace Kurse.
* Speichern Sie die Einzelbilder in einer n-dimensionalen Matrix ab.
* [https://www.mathworks.com/learn/tutorials/matlab-onramp.html MATLAB Onramp]
* Speichern Sie diese Matrix als animierte Bilddatei <code>Animated.gif</code> ab.
* [https://www.mathworks.com/training-schedule/matlab-fundamentals MATLAB Fundamentals]
'''Tipp:''' verwenden Sie zum Zusammenfügen der Bilder <source lang="matlab" style="font-size:medium">imwrite(ImageData,map,filename,'gif','WriteMode','append')</source>
* [https://matlabacademy.mathworks.com/ Kursübersicht MATLAB and Simulink Training]


=== [[Animated Gif mit Matlab erstellen|Musterlösung]] ===
= Einstieg über de.linkedin.com =
Kostenlos sind für HSHL Studierende ebenfalls die E-Learning Kurse bei Linked:in.
*[https://de.linkedin.com/learning/matlab-grundkurs?trk=learning-topics_trending-courses_related-content-card&upsellOrderOrigin=default_guest_learning MATLAB Grundkurs]


=== Beispiel ===
= Einsteig über ein Fachbuch =
[[Datei:AnimatedGif 01.gif]]
Erarbeiten Sie sich anhand des Buches
Stein, U.: Programmieren mit MATLAB : Programmiersprache, grafische Benutzeroberflächen, Anwendungen. München : Fachbuchverlag Leipzig im Carl Hanser Verlag, 6. Auflage 2017. HSHL-eBook
die Informatikgrundlagen zu Programmstrukturen in Kapitel 2.


== Lektion: [[Video aus Matlab Simulation erstellen | Video aus Simulation erstellen]] ==
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Lernzielkontrolle&thinsp;</strong>
|-
|
Üben Sie Ihre Kenntnisse praktisch mit den nachfolgenden Aufgaben.
# [http://www.stein-ulrich.de/MATLAB/Aufgaben/K2/Aufgaben_Kapitel_02_1.pdf Funktionen]
# [http://www.stein-ulrich.de/MATLAB/Aufgaben/K2/Aufgaben_Kapitel_02_2.pdf Ein- und Ausgaben]
# [http://www.stein-ulrich.de/MATLAB/Aufgaben/K2/Aufgaben_Kapitel_02_4.pdf Verzweigungen]
# [http://www.stein-ulrich.de/MATLAB/Aufgaben/K2/Aufgaben_Kapitel_02_5.pdf Schleifen]
# [http://www.stein-ulrich.de/MATLAB/Aufgaben/K2/Aufgaben_Kapitel_02_6.pdf Felder]
# [http://www.stein-ulrich.de/MATLAB/Aufgaben/K2/Aufgaben_Kapitel_02_7.pdf Grafik]
# [http://www.stein-ulrich.de/MATLAB/Aufgaben/K2/Aufgaben_Kapitel_02_8.pdf Strukturen]
# [http://www.stein-ulrich.de/MATLAB/Aufgaben/K2/Aufgaben_Kapitel_02_9.pdf Dateien]
# [http://www.stein-ulrich.de/MATLAB/Aufgaben/K2/Aufgaben_Kapitel_02_10.pdf Strings]
|}


== Geschützte p-Funktion erzeugen ==
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
Wenn man eine m-Funktion schützen möchte, so dass sie zwar verwendbar, jedoch nicht einsehbar ist, lässt sich diese mit einem Schritt in eine p-Funktion (''protected function'') umwandeln.
| <strong>Musterlösungen&thinsp;</strong>
<source lang="matlab" style="font-size:medium">
|-
pcode(fun)
|
</source>
Die Lösungen finden Sie [http://www.stein-ulrich.de/Matlab/Aufgaben/Kapitel_02Frame.php hier].
|}


== Lektion: [[MATLAB Executable aus GUI erstellen]] ==
= Weiterführende Links =
 
== Lektion: Figure als PDF speichern ==
# Legen Sie diese [[Datei:Save2pdf.m]] Datei in einem zugänglichen MATLAB-ordner ab. Beispielsweise <code>c:\MATLAB\AddOn\</code>
 
save2pdf('Frame20.pdf',gcf,600);
<code>mbuild -setup</code>
 
== Weiterführende Links ==
*[https://matlabacademy.mathworks.com/ MATLAB Academy - kostenlose Video-Tutorials]
*[https://matlabacademy.mathworks.com/ MATLAB Academy - kostenlose Video-Tutorials]
*[http://www.matlab-cookbook.com/ Matlab Cookbook]
*[http://www.matlab-cookbook.com/ Matlab Cookbook]
Zeile 106: Zeile 165:
*[http://makerzone.mathworks.com/?s_v1=1367&elq_cid=2990116&elq=8cd5d85fe28a492bb326b34f88a1aacf&elqCampaignId=348 Matlab Maker Zone]
*[http://makerzone.mathworks.com/?s_v1=1367&elq_cid=2990116&elq=8cd5d85fe28a492bb326b34f88a1aacf&elqCampaignId=348 Matlab Maker Zone]
*[https://www.mathworks.de/academia/courseware/applied-autonomous-robots-1/index.html?s_v1=1367&elq_cid=2990116&elq=8cd5d85fe28a492bb326b34f88a1aacf&elqCampaignId=348 "Applied Autonomous Robots I" Courseware]
*[https://www.mathworks.de/academia/courseware/applied-autonomous-robots-1/index.html?s_v1=1367&elq_cid=2990116&elq=8cd5d85fe28a492bb326b34f88a1aacf&elqCampaignId=348 "Applied Autonomous Robots I" Courseware]
*[[MATLAB Grader]]
*[[Medium:Programmierrichtlinien_für_Matlab.pdf|Programmierrichtlinien für Matlab]]


== Literatur ==
= Literatur =
*[https://link.springer.com/book/10.1007/978-3-642-05453-2 '''Benker, H.''': ''Ingenieurmathematik kompakt – Problemlösungen mit MATLAB''. Heidelberg: Springer eBook 2010. 978-3-642-05453-2]
*[https://link.springer.com/book/10.1007/978-3-642-05453-2 '''Benker, H.''': ''Ingenieurmathematik kompakt – Problemlösungen mit MATLAB''. Heidelberg: Springer eBook 2010. ISBN 978-3-642-05453-2]
*[https://www.hanser-fachbuch.de/buch/Programmieren+mit+MATLAB/9783446448643 '''Stein, U''': ''Programmieren mit MATLAB''. Leipzig, Hanser Verlag 2017. 978-3-446-45583-2]
*[https://www.hanser-fachbuch.de/buch/Programmieren+mit+MATLAB/9783446448643 '''Stein, U''': ''Programmieren mit MATLAB''. Leipzig, Hanser Verlag 2017. ISBN 978-3-446-45583-2]
*[http://www.math.toronto.edu/mpugh/primer.pdf '''Sigmon, K'''; u.A.: ''MATLAB Primer''. PDF]
*[http://www.math.toronto.edu/mpugh/primer.pdf '''Sigmon, K'''; u.A.: ''MATLAB Primer''. PDF]
*[http://staff.technikum-wien.at/~teschl/MatlabSkriptum.pdf '''Teschl. S.''': ''MATLAB - Eine Einführung''. DOC]
*[http://staff.technikum-wien.at/~teschl/MatlabSkriptum.pdf '''Teschl. S.''': ''MATLAB - Eine Einführung''. DOC]
*[https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=238571&query_desc=kw%2Cwrdl%3A%20MATLAB%C2%AE%20und%20Simulink%C2%AE%20in%20der%20Ingenieurpraxis '''Pietruszka, W. D.; Glöckner, M.''': ''MATLAB® und Simulink® in der Ingenieurpraxis''. Wiesbaden: Springer Verlag, 5. Auflage 2021. ISBN 978-3-658-29740-4]


== [http://193.175.248.56/wiki/index.php/BSD-Lizenzbedingung BSD-Lizenz] ==
== [http://wiki.hshl.de/wiki/index.php/BSD-Lizenzbedingung BSD-Lizenz] ==
Copyright (c) 2014, Hochschule Hamm-Lippstadt, Dep. Lip. 1, [[Benutzer:Ulrich_Schneider|Prof. Ulrich Schneider]]<br/>
Copyright (c) 2014, Hochschule Hamm-Lippstadt, Dep. Lip. 1, [[Benutzer:Ulrich_Schneider|Prof. Ulrich Schneider]]<br/>
Hochschule Hamm-Lippstadt. Alle Rechte vorbehalten.
Hochschule Hamm-Lippstadt. Alle Rechte vorbehalten.

Aktuelle Version vom 16. September 2024, 15:33 Uhr

Abb. 1: MATrix LABoratory (MATLAB®)
Autor: Prof. Dr.-Ing. Schneider

Einleitung

Für den Einstieg in MATLAB® bieten sich die folgenden Möglichkeiten an:

MATLAB-Syntax in a nutshell

Hier finden Sie eine Übersicht der wichtigsten MATLAB-Befehle.

Einstieg über das HSHL-Wiki

Diese Einstiegsmöglichkeit entsteht derzeit. Anregungen, Fragen und Feedback ist erwünscht.

# Thema Inhalte Lernzielkontrolle
1 Einführung
  • Oberfläche
  • Vektoren und Matrizen
  • Skript erstellen
  • Initialisierung
Einführung
2 Graphische Darstellung
  • 2D-Grafik
  • Grafik-Handles
  • Laden und Speichern von Variablen
  • 3D-Grafik
Graphische Darstellung
3 Programmstrukturen
  • Verzweigungen
  • Schleifen
  • Funktionen
  • Debugging
  • Ein- und Ausgaben
  • varargs-Mechanismus
4 Nachhaltige Programmierung
  • Kommentare
  • Programmierrichtlinien
  • MATLAB®-Hilfe
5 Daten & Dateizugriff
  • Textdateien einlesen
  • Textdateien schreiben
  • .mat-Datei speichern & laden
  • Cell-Array
6 Datenstrukturen
  • Datentypen
  • Matrizen
  • Matrix-Operatoren
  • Cell-Array
8 Strukturen und Klassen
  • struct
  • Objektorientierte Programmierung (OOP)
9 Grafische Benutzeroberfläche (GUI)
  • Live-Skript (.mlx)
  • App-Designer
10 Einführung in Simulink
11 Symbolische Mathematik
  • Plotten von symbolischen Funktionen
Symbolische Mathematik
12 Einführung in die Bildverarbeitung
  • Bilder einlesen und anzeigen
  • Videoverarbeitung
  • Bildverbesserung durch Filter
  • Segmentierung
  • Morphologische Operationen

Einstieg über MathWorks Kurse

Ein einfachen Weg für den Einstieg in die MATLAB-Toolwelt bieten die kostenlosen Self-Pace Kurse.

Einstieg über de.linkedin.com

Kostenlos sind für HSHL Studierende ebenfalls die E-Learning Kurse bei Linked:in.

Einsteig über ein Fachbuch

Erarbeiten Sie sich anhand des Buches

Stein, U.: Programmieren mit MATLAB : Programmiersprache, grafische Benutzeroberflächen, Anwendungen. München : Fachbuchverlag Leipzig im Carl Hanser Verlag, 6. Auflage 2017. HSHL-eBook

die Informatikgrundlagen zu Programmstrukturen in Kapitel 2.

Weiterführende Links

Literatur

BSD-Lizenz

Copyright (c) 2014, Hochschule Hamm-Lippstadt, Dep. Lip. 1, Prof. Ulrich Schneider
Hochschule Hamm-Lippstadt. Alle Rechte vorbehalten.


→ zurück zum Hauptartikel: Virtuelle Lehrveranstaltungen