Error 21 (ungültiger Index)
Erdberquark
Forum-Anfänger
Beiträge: 29
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
Verfasst am : 16.06.2011, 12:11
Titel : Error 21 (ungültiger Index)
Tag alle zusammen,
leider habe ich mal wieder ein Problem
Vielleicht sehe ich auch nur den Wald vor lauter Bäumen nicht.
ich habe das Programm TG.sce (yd1,yd2)
und das Programm ueberholen4.sce.
Code von ueberholen4.sce
Code:
exec TG.sce
lane1 = lane_change ( pos1,pos2,v1,TL,lane1,k,yd1,yd2) ;
function lane1 = lane_change( pos1,pos2,v1,TL,lane1,k,yd1,yd2) //y zum Testen
// ausscheren zum Überholen
//pause ///<= geändert in =
if lane1 < 2.0 & pos1( k) +TL * v1 <= pos2( k) then // überprüfen ob Überholer schon auf zweiter Spur
lane1 = lane1 +1 ; // Überholer wechselt langsam Spur
//lane1 = lane1 +( yd2( k-1 ) -yd2( k) ) /2 ; // Überholer wechselt langsam Spur
//y=y+( yd2( k) -yd2( k-1 ) ) /2
//l=y+( yd2( k-1 ) -yd2( k) ) /2 ;
end ;
//pause
// einscheren nach überholen
if pos1( k) - pos2( k) >= TL * v1 & lane1 >1 then // schaun ob man einscheren kann
lane1 = lane1 -0.1 ; // Überholer schwert wieder ein
end ;
sobald ich die Zeile "lane1 = lane1 +(yd2(k-1)-yd2(k))/2;" anstatt der anderen lane1 nutze,
will das Prog nicht so wie ich.
Ich bekomme immer die Meldung:
aber ich weiß nicht genau warum.
Die anderen Parameter die übergeben werden sind natürlich alle vorhanden.
Über jede Hilfe bin ich Dankbar.
Gruß
Quark
_Peter_
Moderator
Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
Verfasst am : 16.06.2011, 16:43
Titel :
Hallo Quark,
die Fehlermeldung besagt, dass du auf einen ungültigen Index der Variable yd2 zugreifst.
Ich habe Scilab leider nicht, aber da gibt es sicher einen Debugger oder? Schau dir mal an wieviele Elemente yd2 hat und welchen Wert k annimmt.
Beispiel:
_________________ Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe ?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Erdberquark
Themenstarter
Forum-Anfänger
Beiträge: 29
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
Verfasst am : 17.06.2011, 07:20
Titel :
Hi,
Danke für deine Antwort.
Also leider hat Scilab keinen Debugger.
Zumindest nichts gutes ich kann im Code wohl pause eingeben und muss dann immer über die Menü leiste weiter klicken nicht gerade nutzbar.
yd2 hat 1001Wert
Die Schleife habe ich ganz vergessen.
Also macht doch k bis 1000 und yd2 bis 1001 sollte doch keine Probleme machen oder???
_Peter_
Moderator
Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
Verfasst am : 17.06.2011, 11:45
Titel :
Hallo Erdberquark,
wenn ich diese Schleife bei mir durchlaufen lasse, hat k am Ende einen Wert von 1001.
Sicher das yd2 1001 Werte hat? Du greifst definitiv auf einen nicht vorhanden Index zu.
_________________ Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe ?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Erdberquark
Themenstarter
Forum-Anfänger
Beiträge: 29
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
Verfasst am : 17.06.2011, 12:07
Titel :
Hi,
ja ich bin mir sicher
Schau mal im Anhang.
Dort siehst du die letzten Werte von YD2
Oder liegt das daran das die Zahl nicht gerade groß ist???
Beschreibung:
Download
Dateiname:
Unbenannt.PNG
Dateigröße:
7.33 KB
Heruntergeladen:
1187 mal
_Peter_
Moderator
Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
Verfasst am : 18.06.2011, 13:32
Titel :
Hallo Erdberquark,
ich glaub dein Problem liegt in der anderen Richtung.
Ich nehme an du durchläufst die Funktion mit jedem der k-Werte, also von 1 - 1001. Dann liegt das Problem bei "yd2(k-1)" für k = 1. durch diese Zeile greifst du für k = 1 auf das 0. Element zu. Deswegen ungültig.
_________________ Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe ?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Erdberquark
Themenstarter
Forum-Anfänger
Beiträge: 29
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
Verfasst am : 19.06.2011, 08:04
Titel :
Danke für die Antwort.
Haben den Fehler auch schon gefunden gehabt nur leider wird das ganze dadurch immer noch nicht besser!!!
Habe k einfach auf 1 gesetzt und somit gibt es keine Null mehr
Erdberquark
Themenstarter
Forum-Anfänger
Beiträge: 29
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
Verfasst am : 20.06.2011, 13:40
Titel :
Habe nun endlich keinen ungültigen Index mehr
Nun habe ich ein andere Problem wie kann ich Scilab sagen wie viele nachkomme stellen er angeben soll??
Ich würde gerne berechnen
Y=1
Y= Y + 0,00005
Ergebnis
Y=1
_Peter_
Moderator
Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
Verfasst am : 21.06.2011, 16:15
Titel :
also in Matlab hilft der Befehl
Wobei dies nur für die Anzeige gilt. Intern rechnet Matlab so genau es geht immer.
Vielleicht funktioniert der Befehl auch bei Scilab.
Viel Erfolg!
_________________ Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe ?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Erdberquark
Themenstarter
Forum-Anfänger
Beiträge: 29
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
Verfasst am : 21.06.2011, 16:33
Titel :
Wie muss ich den Befehl den wenn anwenden Direkt wenn ich die Variable Deklariere??
_Peter_
Moderator
Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
Verfasst am : 22.06.2011, 09:02
Titel :
In Matlab geb ich das direkt im Command Window ein. Bei Scilab weiß ich das leider nicht. Habe keinerlei Erfahrungen damit. Sry.
_________________ Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe ?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
TheSaint
Forum-Anfänger
Beiträge: 13
Anmeldedatum: 05.04.11
Wohnort: ---
Version: ---
Verfasst am : 22.06.2011, 09:07
Titel :
Erdberquark hat Folgendes geschrieben:
Y=1
Y= Y + 0,00005
Ergebnis
Y=1
Setze mal anstelle des Kommas einen Punkt. Bei mir funktioniert das nämlich dann auch.
<-- see?
Erdberquark
Themenstarter
Forum-Anfänger
Beiträge: 29
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
Verfasst am : 24.06.2011, 14:01
Titel :
Hi,
Danke für deine Info nur leider ist der Komma ein Punkt
0.00005 ist nur ein fiktiver Wert.
Normalerweise wird der wert durch eine Matrix berechnet.
TheSaint
Forum-Anfänger
Beiträge: 13
Anmeldedatum: 05.04.11
Wohnort: ---
Version: ---
Verfasst am : 27.06.2011, 08:22
Titel :
Welche Informationen liefert Scilab über die verwendeten Variablen? Hilft dir das weiter?
TheSaint
Forum-Anfänger
Beiträge: 13
Anmeldedatum: 05.04.11
Wohnort: ---
Version: ---
Verfasst am : 13.07.2011, 09:30
Titel :
Wenn du deinen Programmcode reduzierst und die eine Funktion mal separat testest, kannst du dann etwas aus dem Ergebnis lesen, was einen Hinweis auf den Fehler liefert?
Oft hilft es, Probleme an einen anderen Ort zu transferieren, dass man eine Lösung ersichtlich machen kann. Ist ein oft genutztes Stilmittel in der Literatur und im Film.
Ich hoffe, mit diesem Ansatz kommst du weiter und gibst Antwort, wenn du etwas gefunden hast.
Gehe zu Seite 1 , 2 Weiter
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 - 2024
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.