Wenn MATLAB ein Array indiziert, tritt dieser Fehler auf, wenn ein Indexwert verwendet wird, der keine positive Ganzzahl oder kein logischer Wert ist.
Im Folgenden finden Sie einige Vorschläge zur Ursache dieses Fehlers: ) Überprüfen Sie noch einmal, ob der Indexwert eine positive ganze Zahl ist. Der Index in MATLAB darf nicht 0 sein und beginnt im Allgemeinen bei 1. 2) Wenn Sie einen logischen Variablenindex verwenden, stellen Sie bitte sicher, dass der Index-Array-Typ eine logische Variable und kein doppeltes Array aus 1 und 0 ist. Sie können das Doppelarray auch vor der Indizierung in ein logisches Array konvertieren.
Zum Beispiel:A = [1 2 3 4; 5 6 7 8]; ind_double = [0 1 0 1; 0 1 0 1]; ind_logical = logical(ind_double); A(ind_logical)
Für Indexarrays können Sie den Datentyp über die Whos-Funktion überprüfen, zum Beispiel: whos ind_double
whos ind_logical
3) Wenn Sie verwenden Gleitkomma-Arithmetik, um bei der Berechnung indizierter Arrays die Array-Werte möglicherweise keine ganzzahlige Genauigkeit zu haben. Wenn Sie wissen, dass der Indexwert sehr nahe an einer Ganzzahl liegt, können Sie die Rundungsfunktion verwenden, zum Beispiel:
A = [1 2 3 4; 5 6 7 8]; ind_float = 2.00001; ind_int = round(ind_float); A(ind_float)
4) Wenn eine Variable mit demselben Namen wie eine integrierte MATLAB-Funktion definiert wird, Die Funktion wird überschrieben, was zu demselben Fehler führt (die Parameter und der Array-Index der aufrufenden Funktion verwenden dieselben Klammern), zum Beispiel:
max = rand(5); A = rand(5); max(A)
Zu diesem Zeitpunkt müssen Sie einen anderen Variablennamen zuweisen und löschen Sie den widersprüchlichen Variablennamen:
B = max; clear max max(A)
Das obige ist der detaillierte Inhalt vonDer Array-Index muss eine positive Ganzzahl oder ein logischer Wert sein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!