WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Fehler "Index must be a positive integer or logical&quo

 

Tobi102

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2012, 12:36     Titel: Fehler "Index must be a positive integer or logical&quo
  Antworten mit Zitat      
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

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.11.2012, 12:57     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Tobi102

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2012, 13:08     Titel:
  Antworten mit Zitat      
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

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.11.2012, 13:23     Titel:
  Antworten mit Zitat      
Hallo,

ja, das ist bedingt durch minimale numerische Ungenauigkeiten. Bei der anderen Excel-Datei hast du wohl einfach Glück gehabt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Tobi102

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2012, 13:43     Titel:
  Antworten mit Zitat      
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

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 06.06.12
Wohnort: ---
Version: R2015a
     Beitrag Verfasst am: 10.12.2013, 13:00     Titel:
  Antworten mit Zitat      
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:

Code:

x=zeros(3,11)

for i=0:0.1:1
    a=2*i
    b=3*i
   
    x(1,i*10+1)=i
    x(2,i*10+1)=a
    x(3,i*10+1)=b
end
 


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:

Code:

x=zeros(3,6)

for i=0:0.2:1
    a=2*i
    b=3*i
   
    x(1,i*5+1)=i
    x(2,i*5+1)=a
    x(3,i*5+1)=b
end
 


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!
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 10.12.2013, 14:59     Titel:
  Antworten mit Zitat      
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.
Code:
x=zeros(3,11)

for i=0:0.1:1
    a=2*i
    b=3*i
   
    x(1,round(i*10+1))=i
    x(2,round(i*10+1))=a
    x(3,round(i*10+1))=b
end


Mein Lieblingsbeispiel, bei dem trotz der Erwartung keine 1 ausgegeben wird Wink:
Code:
(0.5-0.4-0.1)==0


Grüße
Chris
_________________

--> Kapieren statt Kopieren <---
____________________________________________________
FAQs sind dazu da, FAQs zu beantworten Wink
Richtig fragen!
Private Nachricht senden Benutzer-Profile anzeigen
 
AgentZero
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 06.06.12
Wohnort: ---
Version: R2015a
     Beitrag Verfasst am: 11.12.2013, 14:11     Titel:
  Antworten mit Zitat      
Hi Chris,

vielen Dank für deine ausführliche Antwort + Lösungsvorschlag! Jetzt läuft alles so, wie es sollte Smile

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 Smile

Auf jeden Fall nochmals vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.