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

Error 21 (ungültiger Index)

 

Erdberquark
Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2011, 12:11     Titel: Error 21 (ungültiger Index)
  Antworten mit Zitat      
Tag alle zusammen,

leider habe ich mal wieder ein Problem Wink

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:
Code:

"!--error 21
ungültiger Index.

at line       6 of function lane_change called by :  
  lane1 = lane_change (pos1,pos2,v1,TL,lane1,k,yd1,yd2);
at line     126 of exec file called by :    
exec ueberholen4.sce"

 

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
Private Nachricht senden Benutzer-Profile anzeigen


_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 16.06.2011, 16:43     Titel:
  Antworten mit Zitat      
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:
Code:

values = [5, 4, 3];
values(0) -> ungültiger Index
values(1) -> 5
values(2) -> 4
values(3) -> 3
values(4) -> ungültiger Index
 

_________________

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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Erdberquark
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2011, 07:20     Titel:
  Antworten mit Zitat      
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.

Code:

k=0;
for i = 0:0.01:10, // (10)
  clf(1);
  k = k+1;


Also macht doch k bis 1000 und yd2 bis 1001 sollte doch keine Probleme machen oder???
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 17.06.2011, 11:45     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Erdberquark
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2011, 12:07     Titel:
  Antworten mit Zitat      
Hi,

ja ich bin mir sicher Wink

Schau mal im Anhang.


Dort siehst du die letzten Werte von YD2

Oder liegt das daran das die Zahl nicht gerade groß ist???

Unbenannt.PNG
 Beschreibung:

Download
 Dateiname:  Unbenannt.PNG
 Dateigröße:  7.33 KB
 Heruntergeladen:  1120 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 18.06.2011, 13:32     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Erdberquark
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2011, 08:04     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Erdberquark
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2011, 13:40     Titel:
  Antworten mit Zitat      
Habe nun endlich keinen ungültigen Index mehr Wink


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
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 21.06.2011, 16:15     Titel:
  Antworten mit Zitat      
also in Matlab hilft der Befehl
Code:


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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Erdberquark
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2011, 16:33     Titel:
  Antworten mit Zitat      
Wie muss ich den Befehl den wenn anwenden Direkt wenn ich die Variable Deklariere??
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 22.06.2011, 09:02     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
TheSaint
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 05.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.06.2011, 09:07     Titel:
  Antworten mit Zitat      
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.
Code:
Y = Y + 0.00005
 Y  = 1.00005
<-- see?
Private Nachricht senden Benutzer-Profile anzeigen
 
Erdberquark
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 08.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2011, 14:01     Titel:
  Antworten mit Zitat      
Hi,

Danke für deine Info nur leider ist der Komma ein Punkt Wink

0.00005 ist nur ein fiktiver Wert.

Normalerweise wird der wert durch eine Matrix berechnet.
Private Nachricht senden Benutzer-Profile anzeigen
 
TheSaint
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 05.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.06.2011, 08:22     Titel:
  Antworten mit Zitat      
Welche Informationen liefert Scilab über die verwendeten Variablen? Hilft dir das weiter?
Private Nachricht senden Benutzer-Profile anzeigen
 
TheSaint
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 05.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2011, 09:30     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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 - 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.