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

Trajektorie eines Punktes

 

VivaLaSimon
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 06.03.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.03.2019, 13:23     Titel: Trajektorie eines Punktes
  Antworten mit Zitat      
Guten Tag,

Ich habe gerade etwas Schwierigkeiten bei dem erstellen eines Weges und dessen Darstellung. Ich habe ein raumfestes Koordinatensystem und in diesem möchte ich nun in Simulink ein Fahrzeug fahren lassen, welches einen Weg in x und y Richtung fährt. Das mathematische lassen wir mal beiseite, aber wier kann ich dies abbilden? Wenn ich ein Scope benutze ist das ja immer nur 2 dimensional. Sagen wir zum Beispiel fährt mein Auto ein Kreis, sehe ich das im Scope nur als Cos und Sinus wenn ich x und y einzeln betrachte, ich würde aber gerne sozusagen von oben draufschauen und den Weg sehen.
Private Nachricht senden Benutzer-Profile anzeigen


fabianT
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 84
Anmeldedatum: 31.10.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2019, 16:31     Titel:
  Antworten mit Zitat      
Hallo,

es gibt unter Sinks eine Art X-Y Graph.

Viele Grüße
Fabian
Private Nachricht senden Benutzer-Profile anzeigen
 
VivaLaSimon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 06.03.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2019, 17:20     Titel:
  Antworten mit Zitat      
Vielen Dank. das habe ich wohl komplett übersehen.

Eine Frage hätte ich noch.
Ich habe einen Wert x, der sich verändert. Dieser Wert x soll nun in einer anderen Berechnung auf 0 gesetzt werden, aber weiter seinen eigentlichen Verlauf verfolgen.
Zum Beispiel wenn x = sin(t) ist und ein Wert y1(t=pi/2) auftaucht, soll x = 0 sein, aber der Verlauf der Sinuskurve weiterverfolgen und sozusagen, eben wie ein Sinus bei pi/2 aussieht, als cos(t) berechnet werden.

Da eine Idee wie das relativ einfach zu realisieren ist?

LG Simon
Private Nachricht senden Benutzer-Profile anzeigen
 
fabianT
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 84
Anmeldedatum: 31.10.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2019, 09:33     Titel:
  Antworten mit Zitat      
Hallo,

es gibt jetzt keine vorgefertigte Lösung dafür.

Du könntest Enabled Subsysteme nehmen um zwischen einer Sinusberechnung und Cosinusberechnung hin- und herzuschalten. Die Enabled Subsysteme musst du dann entsprechend mit einer Logik aktivieren...

Der Sinn ist mir jedoch noch nicht klar. Wenn der Sinus exakt weiterläuft, nur als Cosinus berechnet wird, macht es doch keinen Unterschied...

Viele Grüße
Fabian
Private Nachricht senden Benutzer-Profile anzeigen
 
VivaLaSimon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 06.03.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2019, 12:15     Titel:
  Antworten mit Zitat      
Habe ich mir fast schon gedacht dass es dafür keines gibt, aber Danke für den Tipp. Darauf bin ich bis dato nicht gekommen.

Der Sinn mit dem Sinus ist trivial, da ich das nur als Beispiel meinte, mein Wert X ist kein Sinus sondern eine strecke, welche eben ab gewissen Ereignissen immer ab diesem Zeitpunkt gemessen werden soll.

Liebe Grüße

Simon
Private Nachricht senden Benutzer-Profile anzeigen
 
fabianT
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 84
Anmeldedatum: 31.10.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2019, 12:19     Titel:
  Antworten mit Zitat      
Ok, alles klar.

Für solche Dinge gibt es vermutlich mehrere Vorgehensweisen. Ich würde mir mal

Switch Case
If else
Triggered Subsystem
Enabled Subsystem
Switches
Stateflow

anschauen. Gibt auch einiges dazu in der Doku,

Viele Grüße
Fabian
Private Nachricht senden Benutzer-Profile anzeigen
 
VivaLaSimon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 06.03.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2019, 19:55     Titel:
  Antworten mit Zitat      
Also das Problem hat sich nun mit einem Trigger, Switch Case und dahinter ein sample and hold erledigt. Danke dafür Smile

Jetzt kommt aber ein anderes Problem auf und zwar will ich in der angehängten Datei meine Ausgabe welche nach dem blauen Block kommt beibehalten und nicht mehr auf null setzen. Anders herum hat es gut geklappt. Nur stehe ich jetzt hier auf dem Schlauch. Zeit auf 100 stellen und in dem Scope schauen. Dort sollen die Werte aufaddiert werden. Folglich soll z.B. bei der Zeit zwischen 32 und 34 Sekunden der letzte Wert, also 26, parallel zur Zeitachse verlaufen.
Ich hoffe ich nerve nicht, aber ich sitze schon zu lange daran und komme nicht weiter.

LG

Simon

untitled.slx
 Beschreibung:

Download
 Dateiname:  untitled.slx
 Dateigröße:  29.54 KB
 Heruntergeladen:  292 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
VivaLaSimon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 06.03.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2019, 11:44     Titel:
  Antworten mit Zitat      
Da darauf anscheinend niemand eine Antwort hat, dann vielleicht auf diese Frage.

Ich möchte mehrere Sprünge erstellen, welche jedoch erst bei einer gewissen Eingangsvariable sich ändern.
Ich habe es mit einem 1-D-Lookuptable versucht, jedoch lässt sich da nicht ganz genau ein Sprung darstellen.

LG

Simon
Private Nachricht senden Benutzer-Profile anzeigen
 
fabianT
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 84
Anmeldedatum: 31.10.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2019, 13:20     Titel:
  Antworten mit Zitat      
Hallo,

dein Modell kann ich nicht öffnen...

Sprünge (0-1, 1-0) kannst du auf ganz viele verschiedene Art und Weisen modellieren (Step Blöcke, Simulink Logic, Stateflow,...).
Wieso es mit einer LUT nicht möglich ist, verstehe ich nicht ganz. Wahrscheinlich ist der Solver nicht richtig eingestellt, sodass es aussieht als ob es kein Sprung ist...

Viele Grüße
Fabian
Private Nachricht senden Benutzer-Profile anzeigen
 
VivaLaSimon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 06.03.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2019, 17:21     Titel:
  Antworten mit Zitat      
Mein Modell habe ich in der Version 2018b gespeichert. Wenn es daran nicht liegt, dann speichere die Datei mal als .slx statt als .zip Datei und es müsste klappen

Mit einem Step Block kann ich ja nur einen Sprung simulieren. Wie aber gesagt möchte ich zum Beispiel bei dem Eingangswert 10 auf 2 springen bis Eingang 12 erreicht und daraufhin bei einem Eingangswert von 12 auf -2 und bei 14 auf 10 und dann auf 0 bis dahin und ...
Mit Simulink Logic ist das etwas für die Größe meiner Daten zu aufwendig und mit Stateflow kenne ich mich nicht aus. Gibt es denn da keinen anderen Block der einen Sprung nach einem Eingang regeln kann?

Liebe Grüße
Simon
Private Nachricht senden Benutzer-Profile anzeigen
 
fabianT
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 84
Anmeldedatum: 31.10.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.04.2019, 08:04     Titel:
  Antworten mit Zitat      
Hallo,

das Modell habe ich schon als slx versucht zu öffnen...

Deine Anwendung sieht nach einer typischen Lookup Table aus. Interpolation musst du aber ausstellen, also "flat" wählen, siehe Beispiel im Anhang.

Viele Grüße
Fabian

LUTFlat.slx
 Beschreibung:

Download
 Dateiname:  LUTFlat.slx
 Dateigröße:  21.02 KB
 Heruntergeladen:  286 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
VivaLaSimon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 06.03.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.04.2019, 08:44     Titel:
  Antworten mit Zitat      
Guten Morgen,

Ich habe dein Modell mal so bearbeitet wie ich mir das vorstelle, nur sodass man bei den Breakpoints eben statt 5 und 5.001 einfach 5 und 5 schreiben kann. Interpoliert habe ich meine Werte nicht.

Liebe Grüße
Simon

LUTFlat.slx
 Beschreibung:

Download
 Dateiname:  LUTFlat.slx
 Dateigröße:  21.07 KB
 Heruntergeladen:  289 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
fabianT
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 84
Anmeldedatum: 31.10.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.04.2019, 09:05     Titel:
  Antworten mit Zitat      
Hallo,

das Problem hier ist, dass der Variable Step solver keine Zero Crossings Funktionalität hat, sodass er nicht erkennt, wenn sich der Wert ändert...

Als Lösung kannst du entweder eine Max Step Size einstellen, einen Fixed Step solver verwenden oder deinen Ansatz wählen...

Bitte berücksichtige, dass es in Simulink wohl nie einen exakten Sprung geben wird. Beim Step Block werden zero Crossings verwendet um den Zeitpunkt des Sprunges genau zu detektieren. Der zeitliche Unterschied ist dann sehr klein, ~ 1e-15 oder so...

Viele Grüße
Fabian
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.