Ist nullbasierte Indizierung in MATLAB verfügbar?
Die Indizierung einer n-Länge-array in C ist 0:N-1. in der Erwägung, dass in MATLAB es ist von 1:N
Nun, ich bin noch komfortabler mit dem C-Stil Indizierung. Gibt es eine Möglichkeit zu sagen, MATLAB, indem Sie einen Befehl in mein MATLAB-Skripts oder was auch immer, zu verabschieden, einen C-Stil-Indizierung eher als die herkömmlichen 1:N-Indexierung?
InformationsquelleAutor der Frage smilingbuddha | 2010-11-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, und ich glaube, der Unterschied ergibt sich aus der Tatsache, dass die Mathematiker anfangen zu zählen von 1 an. (nicht, dass MATLAB eignet sich vor allem für Mathematiker, im Gegenteil, es wird von Ingenieuren mehr (im Vergleich zu Mathematica oder Maple, deren symbolische Verarbeitung ist stärker))
Wenn Sie wollen, um code zu null-basiert, aber ähnlich zu MATLAB, Blick auf NumPy und SciPyPython-Pakete.
Siehe auch Warum die Numerierung soll bei null anfangen für Bemerkungen auf der null basiert, vs eine Basis indizieren im Allgemeinen, und MATLAB-Indizierung Problem für eine MATLAB-spezifische Diskussion. Sehen https://plus.google.com/115212051037621986145/posts/YTUxbXYZyfi für eine Diskussion dieser in Python.
InformationsquelleAutor der Antwort ustun
Du könnte potentiell etwas tun, wie dies durch überladen der Funktionen SUBSREF und SUBSASGN für alle verschiedenen Arten von Objekten (built-in oder Benutzer-definiert), die Sie ändern möchten, Schema-index. Ein Beispiel für eine Möglichkeit zum überladen von Methoden für built-in Typen wird in meine Antwort zu diese Frage. Die Nachteile?...
Kurz gesagt, die änderung, wie built-in Arten behandeln Indizierung ist nicht im entferntesten möglich. Es ist jedoch eine andere (wenn auch immer noch etwas tückisch) option Gebrauch machen,Unterklassen in MATLAB s-OOP-system. Zum Beispiel, könnten Sie eine neue Klasse
double_zb
erbt von der eingebautendouble
Klasse:Dann können Sie verlängern
double_zb
mit spezialisierten Implementierungen von SUBSREF und SUBSASGN , nehmen Sie die null-basierten Indizes. Jedoch, mitdouble_zb
Objekte anstelle vondouble
Objekte effektiv im code kann verlangen, dass Sie entweder re-implementieren, alle anderen Methoden fürdouble
Objekte oder irgendwie implementieren-Konverter-Methoden für die Verwendungdouble_zb
Objekte mitdouble
Methoden. Ich bin mir nicht einmal sicher, alle details zu tun, aber ich kann sicherlich sagen, dass es wäre eine kolossale Kopfschmerzen.Meine ultimative Ratschlag... aufhören, sich sorgen und lernen, Sie zu lieben, eins-basierte Indizierung. 😉
InformationsquelleAutor der Antwort gnovice
Eigentlich, Matlab kann Verwendung von null-basierten Indizes. Sie sind mit gekennzeichnet.
ein (leider eher niedrige Priorität und eher dunkel
dokumentiert) Präfix-operator "1+", d.h.
a(1+(0:m))
Quelle:
http://www.mathworks.com/matlabcentral/newsreader/view_thread/11510
Ich nehme an, die "1+", kam von ppl Leben in one base Welt: fügen Sie eine eins-basierenden index.
InformationsquelleAutor der Antwort jobobo
In einem Wort: Nein...
InformationsquelleAutor der Antwort Oliver Charlesworth
Ich verwenden Sie Matlab für die Mathematik, und wir verwenden Sie "start at time = 0" eine Menge. Meine Lösung war, um eine Funktion schreiben:
Zum Beispiel, wenn ich ein array mit y = [0,1,2,3,4], die die Werte von y zum Zeitpunkt 0,1,2,3,4 bzw.. Ich kann dies tun:
Erzeugt das richtige Ergebnis von 0. So wird vermieden, dass zu ändern alle meine Gleichungen.
InformationsquelleAutor der Antwort Legendre