Warum matlab 1-basierte Indizierung
Ich programmiere in Java und Python früher, aber vor kurzem begonnen haben, mit Hilfe von MATLAB für viele Sachen (speziell computer-vision-algorithmen).
Aber MATLAB hat die Indizierung von arrays beginnend ab 1 anstatt 0, das ist die norm in fast allen Programmiersprachen, die ich bisher begegnet sind.
Den Grund 0-basierte Indizierung machte Sinn für mich war, wie diese:
In jedem Prozessor, die ich gesehen habe, die Adresse index beginnt mit 0 x 00000000 sagen in einem 8-bit-Prozessor, und Wenn ich wollen speichern Sie 5 Telefonnummern, die Sie gespeichert in der Adresse 0x00000000 zu 0x00000004 . Daher ist es sinnvoll, die Indizierung von 0 in Programmiersprachen.
Während ich war auf der Suche nach dieser Frage habe ich gefunden Liste 1-indiziert Programmiersprachen? und http://en.wikipedia.org/wiki/Comparison_of_programming_languages_(array), um nützlich zu sein.
Für mich ist es nicht eine sehr bequeme Schreibweise, vielleicht auch, weil ich verwendet, um code in anderen Sprachen vor. Aber ich verstehe immer noch nicht, warum MATLAB (und auch Julia jetzt) hat eine 1-basierte Indizierung von Arrays und welche Vorteile es bietet. Kann jemand Liste die Vorteile?
- MAT(rix) LAB(Oratorium), folgt in der Regel Mathematik/lineare algebra Konventionen, nicht informatik Konventionen. Mit Matrizen das erste element, D. H. die in der oberen linken Ecke ist die (1,1) - element, nicht den (0,0) - element, also 1-basierte Indizierung, nicht 0-basierte Indizierung.
- Ich glaube, das hat zu tun mit MATLAB ursprünglichen Grundlagen werden in Fortran geschrieben, die hat auch 1-basierte Indizierung. Dieses Problem wurde zum Tod kämpfte im Usenet, also Googeln sollte es offenbaren mehr details. Ich bin jedenfalls Abstimmung zu schließen, die Meinung basiert, da die wirkliche Antwort liegt in Cleve Moler Kopf. Selbst wenn jemand waren zu produzieren, die einen autorisierenden Verweis, warum dies der Fall ist, die Frage ist immer noch off-topic SO. In der Zwischenzeit, wenn Sie verwenden, MATLAB, sich daran zu gewöhnen und mit Ihr umzugehen; es ist, was der rest von uns getan haben.
- In einer Liste von zahlen, sagen wir 45, 17, 94, 37 ich glaube, die erste Nummer in der Liste als 45. Reden über die nullte Zahl macht wenig Sinn für mich konzeptionell. Allein aus diesem Grund mag ich 1-basierte Indizierung. Als Phil sagte, dies spiegelt mathematische notation, die die primäre (?) Verwendungszweck für Matlab.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum hat es 1-basierte Indizierung? Historische Gründe. (Cleve Moler entschieden so). Es hat wahrscheinlich zu tun mit 1-basierte Indizierung wird die Konvention für die matrix-Schreibweise.
Warum wird es nicht umgesetzt 0-basierte Indizierung zu?
Für einige schöne leichte Lektüre?
Suchen Sie insbesondere Kommentare von Cleve Moler (der Schöpfer von MATLAB) und Steve Herrn (MathWorks-Ingenieur). Nach viel Austausch, die grundlegende Argumentation (zumindest im Jahre 2001) nicht zur Durchführung einer Ergänzende 0-basierte Indizierung war nicht für irgendwelche philosophische oder Kompatibilitäts-Gründen, obwohl es begann als eine Abwärtskompatibilität argument, aber weil es erfordern würde, einfach zu verdammt viel Aufwand zu aktualisieren MATLAB eingebauten Funktionen:
Übersetzung: Sie wollen nicht zu schreiben, neue Plotten, drucken, etc. Routinen.
Matlab ist gedacht als ein Weg, um die Funktionalität von Programmiersprachen zugänglich für Menschen, die noch nicht gelernt zu Programmieren. Mit Indizes bei 0 beginnen kann eine häufige Quelle von Fehlern, die für Menschen nicht vertraut mit der Programmierung, und der ganze Punkt von Matlab ist es, Menschen zu ermöglichen, gelten Mathematik, die Sie verstehen, um Probleme, die Sie lösen müssen, ohne viel zusätzliches wissen.
Meisten Aufgaben, die von Matlab verwendet wird, z.B. Physik und Technik verwenden die Konvention, die Indizes beginnen bei 1 in der Literatur, so dass die Leute in diesen Bereichen arbeiten, brauchen nicht zu konvertieren, Ihre algorithmen, die durch subtrahieren von 1 aus alles.
Zusätzlich zu dieser, Matlab ist die Abkürzung für "matrix laboratory", und in der Mathematik die Konvention ist in der Regel Matrizen index beginnend bei 1, so ist es Art von Sinn macht, dass Sie Folgen dieser Konvention.
Ihre Gründe dafür, warum es Sinn macht, bei 0 beginnen ist ganz gut, aber es ist der Zweck der high-level-Sprache wie matlab zu verschleiern, dass Aspekte wie diese, die der Benutzer nicht zu wissen brauchen.