|
|
Fehler "Index must be a positive integer or logical&quo |
|
Tobi102 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.11.2012, 12:36
Titel: Fehler "Index must be a positive integer or logical&quo
|
 |
Hallo!
Ich habe gerade in Matlab eine Fehlermeldung, welche ich mir absolut nicht erklären kann.
Diese wäre:
Zitat: |
??? Attempted to access x_ges(11916); index must be a positive integer or logical. |
11916 ist doch ein Integer - wieso kann Matlab nicht auf den 11916. Eintrag im Vektor x_ges zugreifen?
Danke schonmal!
sg
Tobi
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.11.2012, 12:57
Titel:
|
 |
Hallo,
hört sich komisch an. Es könnte aber auf eine gerundete Darstellung des Index zurückzuführen sein.
Bitte Code posten, anhanddessen man das reproduzieren kann.
Grüße,
Harald
|
|
|
Tobi102 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.11.2012, 13:08
Titel:
|
 |
Danke für deine Antwort. Der Ausschnitt des Codes kommt hierher:
Zitat: |
klasse(k).x_laenge = x_ges((klasse(k).ende)*10+1) - x_ges((klasse(k).start)*10+1); |
Bei klasse.ende bzw. .start handelt es sich um Fließkommazahlen mit einer Genauigkeit von einer Nachkommastelle (*10 um auf ganze Zahlen zu kommen, +1 um den Zugriff auf die 0. Zeile des Vektors zu verhindern).
Habe den Code jetzt angepasst auf
Zitat: |
klasse(k).x_laenge = x_ges(round((klasse(k).ende)*10+1)) - x_ges(round((klasse(k).start)*10+1)); |
und damit läuft das Programm ohne Fehler durch.
Interessant ist, dass es mit den Daten aus diesem Excel-File einen Fehler produziert, zuvor aber bei Daten aus einem anderen Excel-File (Länge 11500 Datenpunkte) problemlos durchgelaufen ist.
sg
Tobi
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.11.2012, 13:23
Titel:
|
 |
Hallo,
ja, das ist bedingt durch minimale numerische Ungenauigkeiten. Bei der anderen Excel-Datei hast du wohl einfach Glück gehabt.
Grüße,
Harald
|
|
|
Tobi102 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.11.2012, 13:43
Titel:
|
 |
Super, danke.
Werde die Ergebnisse am aktuellen Dokument nochmal auf Sinnhaftigkeit prüfen aber es sieht so aus als würde es laufen.
|
|
|
AgentZero |

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 06.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2015a
|
 |
|
|
 |
|
Verfasst am: 10.12.2013, 13:00
Titel:
|
 |
|
 |
|
Hi Leute,
ich bin auf ein ähnliches Problem wie Tobi102 gestoßen. Ganz vereinfacht gesagt, berechne ich für eine unabhängige Variable i=0:0.1:1 zwei abhängige Variablen und möchte die Ergebnisse anschließend in einer Matrix sammeln (um später die beiden abhängigen Variablen jeweils als Funktion von i plotten zu können). Das funktioniert auch - bis auf die ärgerliche Tatsache, dass mir Matlab die Ergebnisse irgendwann nicht mehr in meine Matrix eintragen will...
Ich habe mal ein ganz einfaches Minimalbeispiel geschrieben, dass das Problem hoffentlich verdeutlicht:
Sobald ich das laufen lasse, kommt folgender Fehler:
??? Attempted to access x(1,7); index must be a positive integer or logical.
Error in ==> test_error at 7
x(1,i*10+1)=i
Matlab trägt mir meine Ergebnisse also bis einschließlich Spalte 6 in Matrix x ein, kann dann aber plötzlich nicht mehr auf Spalte 7 zugreifen um die Werte für i=0.6 einzutragen.
Komisch ist auch, dass es plötzlich funktioniert wenn i nur in 0.2er Schritten ansteigt. Folgender Code liefert also keine Fehlermeldung:
Hat irgendjemand eine Idee, woran das liegen könnte bzw. (viel wichtiger) wie ich mein Problem lösen könnte?
Wäre wirklich super, wenn mir jemand helfen könnte! Danke schon mal!
|
|
|
BlackDread |

Forum-Century
|
 |
Beiträge: 212
|
 |
|
 |
Anmeldedatum: 11.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2015a
|
 |
|
|
 |
|
Verfasst am: 10.12.2013, 14:59
Titel:
|
 |
Hallo AgentZero,
an Haralds Aussage hat sich nichts geändert.
Zitat: |
bedingt durch minimale numerische Ungenauigkeiten |
Das trifft auch auf deinen Code zu.
Folgendes funktioniert wieder.
Mein Lieblingsbeispiel, bei dem trotz der Erwartung keine 1 ausgegeben wird :
Grüße
Chris
_________________
--> Kapieren statt Kopieren <---
____________________________________________________
FAQs sind dazu da, FAQs zu beantworten
Richtig fragen!
|
|
|
AgentZero |

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 06.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2015a
|
 |
|
|
 |
|
Verfasst am: 11.12.2013, 14:11
Titel:
|
 |
Hi Chris,
vielen Dank für deine ausführliche Antwort + Lösungsvorschlag! Jetzt läuft alles so, wie es sollte
Ich frage mich zwar noch, warum die Ungenauigkeit ausgerechnet beim Zugriff auf Spalte 7 auftritt, aber gut, solange es jetzt läuft, bin ich erstmal zufrieden
Auf jeden Fall nochmals vielen Dank!
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|