2010-04-22 6 views
22

Ich bekomme bald neue Studenten, die MATLAB-Code schreiben werden. Sie sind neu in MATLAB, haben aber Erfahrung in der Programmierung in Java und C++.MATLAB-Tutorial für Programmierer

Ich werde sie durch den Getting Started Abschnitt der MATLAB-Hilfe gehen lassen. Außerdem möchte ich ein kleines Tutorial geben, mit dem Ziel, einige der häufigsten Fehler beim Wechsel zu MATLAB zu vermeiden (z. B. "MATLAB beginnt bei 1 zu zählen") und ihnen einige Funktionen zu zeigen, die sie möglicherweise nicht haben Seien Sie sich bewusst, wenn Sie aus anderen Sprachen kommen (zB "Sie können einen Skalar direkt von einem Array subtrahieren, und für Vektoren gibt es bsxfun").

Was sind die wichtigsten Dinge, die ich ihnen sagen sollte?

+13

Es ist nicht nur Matlab, das beginnt bei 1 zu zählen - fast jeder tut es. Es sind nur C-infizierte Programmierer, die anfangen, bei 0 zu zählen. Wenn Sie an mir zweifeln, schauen Sie sich die Finger an der linken Hand an und fangen Sie an, sie zu zählen. :-) –

+1

Ernsthafter, für was werden sie Matlab Code schreiben? Es ist heutzutage ein ziemlich großes Produkt und die interessierenden Merkmale in der Signalverarbeitungsdomäne sind wahrscheinlich anders als die Merkmale, die für numerische Optimisten von Interesse sind. –

+0

@High Performance Mark: Sie werden Bildanalyse (und einige Optimierung) tun. Sie müssen glücklicherweise keine Bilddaten laden, da ich eine Klasse habe, die das für sie tut. – Jonas

Antwort

15

Genug schnippische Kommentare, hier ist so etwas wie eine Antwort zu:

  1. Die Matlab-Desktop: Was alle Fenster sind für, Code aus der Geschichte zurück in die Befehlsfenster ziehen, die Variable Inspektor usw.
  2. Plotten: nicht nur den Plot-Befehl, sondern auch, wie man die Plot-GUI-Tools verwendet und wie man eine M-Datei aus einer Grafik erstellt.
  3. M-Dateien für Skripts und Funktionen und die wichtigsten Unterschiede zwischen ihnen.
  4. M-Lint, der Profiler.
  5. Verwenden Sie Matlab als ein Fahrzeug, um die Gefahren und Fallstricke der Fließkomma-Arithmetik zu lehren.
  6. Hilfe anfordern: an der Befehlszeile, im Internet, Dokumentation, Dateiaustausch, ...
  7. Pfad und das aktuelle Arbeitsverzeichnis festlegen.
  8. Importieren von Daten aus Dateien, Exportieren von Daten in Dateien, Laden und Speichern.

Das sollte genug sein, um sie für eine Stunde oder so beschäftigt zu halten.

Um zu verdeutlichen, schlage ich diese Themen vor, um Ihnen zu helfen, Ihren Schülern beizubringen, häufige Matlab-Fehler zu vermeiden;

  1. unproduktive Verwendung des Werkzeugs, Abtippen Befehle, die leicht aus der Geschichte wieder aufgerufen werden kann, C (oder Java) Stildatei Lese statt uuimport Befehle, langsam Skripte eingeben Grafiken zu zeichnen, wenn Matlab es für Sie tun kann Ich frage mich, was all die kleinen, orangefarbenen Linien im rechten Rand des Editors bedeuten und die verschnörkelten Unterstreichungen, die versuchen, die Dinge selbst herauszufinden, wenn die Hilfefähigkeiten ihnen sagen, Tonnen anderer Dinge, die viele Matlab-Benutzer viel erfahren haben .
  2. Gleitkommaarithmetik ist nicht real.
  3. und wahrscheinlich auch viele andere Sachen.
+3

Die Hilfe richtig lesen zu können ist wahrscheinlich die nützlichste Sache, die ich ihnen beibringen werde (abgesehen davon, dass ich einen Account bei SO bekomme). – Jonas

+0

Was meinst du mit 'Fließkomma-Arithmetik ist nicht real'? – Jonas

+0

@ Jonas: alles was ich meine ist, dass Fließkomma-Arithmetik nicht genau arithmetische reelle Zahlen implementiert. Die regelmäßige Überwachung von SO zeigt, dass es viele Programmierer gibt, einschließlich erfahrene, die eine Weile brauchen, um dies zu "bekommen". –

8

Im Hinblick auf unerwartete oder nicht-intuitive MATLAB Eigenschaften, die sie zu Verwirrung führen kann, gibt es einige gute Hinweise in dieser Frage:

Hinsichtlich kühlen zeit Einsparung/Effizienz Tricks, diese andere Frage hat einige schöne Beispiele:

Und für einige potenziell fortgeschrittenere Themen, akzeptieren Sie die Antworten auf diese Frage beziehen:

Jetzt für meine $ 0,02. Basierend auf den möglichen Fragen habe ich am häufigsten auf SO fragte gesehen, würde ich sagen, dass Sie sicher, dass sie ein gutes Verständnis der folgenden Konzepte machen wollen:

Und hier sind einige nette Features, die bereits in MATLAB implementiert werden, dass sie einige Zeit und Mühe sparen können:

+1

Ja, ich sollte definitiv 'kron' erwähnen. Nichts kann durch diese Funktion nicht gelöst werden :) – Jonas

17

Ich stimme mit früheren Antworten, aber ich würde sagen, Indizierung die erste und die wichtigste und komplexes Konzept MATLAB in das Studium. Ich sah viele C-Programmierer mit MATLAB beginnen gerade Schleifen schreiben, viele Schleifen, etwas Lächerliches wie

for i=1:10 
    a(i)=i; 
end 

statt einfacher a=1:10;.

So würde ich vorschlagen, sie über Matrix Programmierkonzepte zu lesen:

  • Wie einfach Vektoren und Matrizen erstellen
  • Welche Variablen für die Indizierung verwendet werden können
  • Wie Indizes erstellen und anwenden
  • Logische Operationen und Funktionen, logische und numerische Indizes (Suchfunktion)
  • Indexierung der rechten und linken Seite des Ausdrucks
  • Unterschied zwischen Indizierung numerischen Matrizen und Zellenanordnungen
  • Wie aus verschiedenen Funktionen Indizes als Ausgabe verwenden, wie Art, einzigartig, ismember usw.
  • Sie nicht Indizes Zwischenergebnissen

Was Produktivität anwenden können Ich würde hinzufügen, dass es sehr nützlich ist, den Zellenmodus des Editors zu benutzen.

+0

Indizierung ist der zweite Teil des Tutorials (nach dem Zählen). Ich werde sicherstellen, dass ich alle deine Punkte berühre. – Jonas

5

MATLAB konzeptionell in gewisser Weise ist sehr verschieden von anderen Sprachen, die Sie erwähnt:

  • Zellen verwendet werden, wurden Java verwendet Upcasting
  • global und persistent Variablen sind static in Java
  • gui ist nur Zahlen Griffe vom Typ double
  • verschachtelte Funktionen sind closures, weder Java noch C/C++ hat eine solche Funktion
  • verwendet selten private und @TYPE Ordner für die Sichtbarkeit Scoping
  • Array Handhabung Tricks
  • sehr einfache Interoperabilität mit Java/COM/.NET MATLAB-Syntax mit
  • variadic function arguments, Umgang mit Funktionsargumente mit varargin/varargout
  • memorymanagement
+3

Ich werde nicht über globale und persistente Variablen in der Hoffnung erzählen, dass ich sie nie benutzen werde :). Aber viele gute Punkte! – Jonas

+2

Globals, keine Persistenzen sind jedoch sehr nützlich. Wie bei der Statik stellen sie einen gut lokalisierten persistenten Datenspeicher bereit, der andernfalls offen gelegt werden müsste, oder verwenden globale Variablen. – Marc

10

Für diejenigen von Sprachen C-Familie kommen, sind die elementweise Betreiber neu. Ich brauchte ein paar Monate, um die Operatoren ./ und .* zu entdecken. Davor habe ich für elementweise Operationen for-Schleifen geschrieben. Vielleicht sollte das etwas hervorgehoben werden.

+2

Das ist genau die Art von Antworten, nach denen ich gesucht habe! Ich dachte, ich würde im Vorübergehen die elementaren Operatoren erwähnen, jetzt werde ich ein größeres Aufhebens darum machen. – Jonas