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

Vorausschau auf eine Funktion/ zeitlicher Vorsprung

 

luna
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 14.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.04.2010, 08:09     Titel: Vorausschau auf eine Funktion/ zeitlicher Vorsprung
  Antworten mit Zitat      
Hallo Zusammen,
habe schon wieder einmal ein Frage, da ich nach ewiger Recherche nicht weiter bin.
Ich habe folgendes Problem:

Ich habe eine Sprungfunktion die ich von MatLab nach Simulink importiere als fromWorkspace.
Nun möchteich eine Vorausschau "bauen". Sprich meine Sprungfunktion sind Geschwindigkeitsvorgaben und ich möchte jetzt die Fahrerkurve dazu konstruieren: Bildlich: Der Fahrer sieht ein Schild und beschleunigt oder bremst schon bevor er dieses erreicht hat.
Hier brachte mich ein Kollege auf die Idee die gleiche Funktion einfach nochmal mit etwas zeitlichem Vorsprung vorauszuschicken udn dann eine Art Ausgleichsfunktion reinzulegen.

Und jetzt frage ich mich wie ich das machen soll. Ich habe zwar alle erdenklichen Delay und Offset-Blöcke gefunden, brauche ja aber genau das Gegenteil, die Sprungfunktion soll VORAUSEILEN (meine Originalfunktion möchte ich nicht hinterherhlaufen lassen, da sie nachher aus Messwerten besteht). Habe auch schon versucht negative Werte bei Delay einzugeben, denn das wäre es ja, was ich brauche, aber das mag Simulink nicht.

Habt Ihr eine Idee?! Hab ich mal wieder einen Block übersehen der sowas kann? Oder muss ich ein Embedded File schreiben?!
Wäre echt toll, wenn sich wieder jemand erbarmen würde und mir helfen könnte, hab da echt schon viel Zeit in die Suche gesteckt und bin mittlerweile an Ende mit meinem Latein!
Danke! luna
Private Nachricht senden Benutzer-Profile anzeigen


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.04.2010, 08:15     Titel: Re: Vorausschau auf eine Funktion/ zeitlicher Vorsprung
  Antworten mit Zitat      
luna hat Folgendes geschrieben:
Habe auch schon versucht negative Werte bei Delay einzugeben, denn das wäre es ja, was ich brauche, aber das mag Simulink nicht.


So einen Block nennt man Umgangssprachlich auch Glaskugel ;) In dem Fall ist die Zukunft zwar wirklich bekannt, aber allgemein ist es aktuell nicht möglich, zu wissen, was in 10 Sekunden passieren wird.

Am einfachsten wäre es, wenn Du dein Eingangssignal noch vor der Simulation anpasst. Also einfach alle Werte im Eingangsvektor nach hinten schieben.

Oder wenn es direkt in der Simulation sein soll und die Orte der Schilder als Position bekannt sind: Zwei Positionen berechnen. Die eine Position gibt den tatsächlichen Standort des Autos an, die andere den Ort, wo der Fahrer gerade hinsieht (z.B. Standort + 50m + 0.5*Geschwindigkeit).
Wenn die Position der Schilder nur zeitlich bekannt ist, musst Du wohl an den Eingangsdaten drehen.
Private Nachricht senden Benutzer-Profile anzeigen
 
luna
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 14.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.04.2010, 08:39     Titel:
  Antworten mit Zitat      
ok, super Epfi du bist ja voll schnell!!!
danke.
Glaskugel, ... lustig...
es wäre sehr gut, das ganze als block zu realisieren, denn ich muss das Modell noch an mehreren Stellen anwenden.
Jetzt bin ich bisschen ratlos, wie ich aus der einen Position in Simulink die andere berechnen kann. Hab ja als input eine Matrix mit Spalte1 = Strecke, Spalte2= Sollgeschwindigkeit.
Muss ich da dann ne zweite Matrix fromWorkspace laden, die mir den Versatz angibt und die ich addieren kann? Meinst Du so?
Sry vielleicht steh ich bissle (!) auf dem Schlauch Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.04.2010, 08:46     Titel:
  Antworten mit Zitat      
luna hat Folgendes geschrieben:
ok, super Epfi du bist ja voll schnell!!!

Das war ein Glückstreffer ;)

Zitat:
Muss ich da dann ne zweite Matrix fromWorkspace laden, die mir den Versatz angibt und die ich addieren kann?

Der Versatz ist ja vermutlich konstant.

Code:

sollgeschwindigkeiten = [
   strecke1, geschwindigkeit1;
   strecke2, geschwindigkeit2;
   ...
]
 

Das ist ja Dein Vektor mit den Soll-Geschwindigkeiten, richtig? Wenn der Fahrer die nun 50m früher wahrnehmen soll, dann musst Du einfach 50m von allen Streckenvektoren abziehen und schon macht er alles 50m früher.
Private Nachricht senden Benutzer-Profile anzeigen
 
luna
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 14.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.04.2010, 08:54     Titel:
  Antworten mit Zitat      
Schon wieder Antwort *freu* DANKE!
So sieht meine Strecke aus, ich muss auch sagen, dass das nur ein Beispiel ist und das auch noch sehr viel mehr Werte werden, desh. kann ich nicht immer 50 abziehen (das dauert ja dann ewig).
ich importiere da dann VGG
Code:

p0 = 0;    
p1 = 100;
p2 = 800;
p3 = 1500;
p4 = 2000;

intervall = 1; %kann man auch weglassen, weiß ich
s1 = [p0:intervall:p1];  %wie Delta s
s2 = [p1:intervall:p2];  
s3 = [p2:intervall:p3];  
s4 = [p3:intervall:p4];

Vgg1 = 8.33 .* ones(size(s1));        % 30km/h
Vgg2 = 13.89 .* ones(size(s2));       % 50km/h
Vgg3 = 33.33 .* ones(size(s3));       % 120 km/h
Vgg4 = 19.44 .* ones(size(s4));       % 70km/h


s = [s1 s2 s3 s4]; Vgg = [Vgg1 Vgg2 Vgg3 Vgg4];

% Druck der gegebenen Werte:

plot(s,Vgg,'.-');
xlabel ('zurückgelegte Streck in m');
ylabel ('Maximalgeschwindigkeit laut Gesetzgeber in m/sec');
grid on

VGG=[ s ; Vgg ]'
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.04.2010, 09:23     Titel:
  Antworten mit Zitat      
Wenn alles 50m früher passieren soll, müsste es eigentlich mit
Code:
s = s - 50;

klappen. Wobei es mit dem ersten Wegpunkt etwas schwierig sein könnte, der ist dann ja bei -50m...
Private Nachricht senden Benutzer-Profile anzeigen
 
luna
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 14.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.04.2010, 09:54     Titel:
  Antworten mit Zitat      
Danke,

ich hab mir jetzt mein Progrämmchen kopiert un neu unter "Vorausschau" gespeichert, hab dann einen Offset für die Punkte gebastelt:
Code:

offset= 50;
p0=0-offset;
etc...
 


das hab ich dann auch mit fromworkspace importiert und mit mux in einem scope anzeigen lassen.

das ist jetzt nicht toll (wg eben dem negativen Startwert) aber mir fällt nichts besseres ein. Immerhin kann ich den offset dann beliebig anpassen.
Jetzt muss ich nur noch eine gute Ausgleichsfunktion finden, Wink mal gucken wann das zum Forumsthema wird Sad

herzlichen Dank aus der "Glaskugel" Wink
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 - 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.