|
|
Simulink nimmt immer selben "rand" Werte an??? |
|
shinigami |
Forum-Anfänger
|
|
Beiträge: 41
|
|
|
|
Anmeldedatum: 08.01.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2014,2016
|
|
|
|
|
|
Verfasst am: 29.11.2016, 10:32
Titel: Simulink nimmt immer selben "rand" Werte an???
|
|
Hallo Leute,
ich habe ein Problem mit Simulink, weil man mit dem rand Befehl keine anderen Werte bekommt.
Ich habe eine Funktion geschrieben und rufe diese mit dem entsprechenden Block in Simulink auf, aber iwie nimmt Simulink immer die selben Werte.
Ich möchte immer nur Werte zwischen 0 <= p <=1
Wie kann ich das Problem lösen???
Gruß
|
|
|
|
|
Tom_Gast |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.11.2016, 11:13
Titel:
|
|
Hallo,
also bei mir funktioniert das einwandfrei*.
Ohne Modell und Code ist es daher unmöglich zu sagen, warum es bei dir nicht funktioniert.
Hast du das womöglich in einem Subystem, das nur einmal aufgerufen wird?
Es gibt übrigens auch den Block "Random Number" bei Sources der ebenfalls zufällige Zahlen ausgibt.
Gruß Tom
*Ich habe eine einfache Matlab function als Block mit folgendem Code:
dessen Ausgang "y"auf einen Scope führt.
|
|
|
shinigami |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 41
|
|
|
|
Anmeldedatum: 08.01.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2014,2016
|
|
|
|
|
|
Verfasst am: 29.11.2016, 11:39
Titel:
|
|
Hallo Tom,
Danke schon mal für deine Antwort.
Habe dir ein Bsp. hochgeladen, da erkennst du mein Problem besser.
Ist total komisch wie das arbeitet??????
Gruß
Beschreibung: |
|
Download |
Dateiname: |
Bsp.slx |
Dateigröße: |
13.64 KB |
Heruntergeladen: |
361 mal |
|
|
|
Tom_Gast |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.11.2016, 13:09
Titel:
|
|
Hallo,
was meinst du mit "komisch arbeiten"? Bei mir funktioniert auch dein Beispiel korrekt.
Du solltest genau schreiben, was du für ein Ergebnis erwartest.
Oder meinst du, dass ein Wert immer für 0,2 Sekunden gleich bleibt und erst dann wechselt? Das liegt dann an der Step Size.
Gruß Tom
|
|
|
shinigami |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 41
|
|
|
|
Anmeldedatum: 08.01.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2014,2016
|
|
|
|
|
|
Verfasst am: 29.11.2016, 13:31
Titel:
|
|
Hallo Tom,
also ich brauche eigentlich in jedem Zeitschritt eine andere Matrix.
Z.B.:
K = rand(4)
--> aber das soll sich alle 2s ändern.
In Matlab macht der das mit entsprechenden Befehlen und Funktionen, aber sobald ich das in Simulink eingebe und diesen über den "function-block" aufrufe, gibt der mir immer den selben Wert für die Matrix bzw. den Verlauf, den du in meiner Datei sehen kannst.
Gruß
|
|
|
Tom_Gast |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.11.2016, 13:38
Titel:
|
|
Hallo,
jetzt wird mir klar was du meinst; der gesamte Verlauf ändert sich von Simulation zu Simulation nicht.
Das ist merkwürdig, da weiß ich leider auch nicht weshalb das so ist bzw. wie man das Problem behebt.
Gruß Tom
|
|
|
shinigami |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 41
|
|
|
|
Anmeldedatum: 08.01.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2014,2016
|
|
|
|
|
|
Verfasst am: 29.11.2016, 14:46
Titel:
|
|
Hallo Tom,
anscheinend hatte ich das nicht gut formuliert
Aber ich habe das Problem zum TEIL lösen können...
1. Problem(gelöst) : Das "rand" in ein gaine bzw. const.-block schreiben, dann erhält man bei jedem play einen anderen Wert.
2. Problem(ungelöst): Nun brauche ich etwas, womit ich sagen kann, dass die Matrix K alle t (t = irgendeine Zeitperiode) neu berechnet wird
--> quasi eine Schleife bzw. etwas was in Simulink sagt: "ok, jetzt neue rand(4) berechnen..."
Hättest du bzw. jmdn anderes dafür eine Idee?!
Gruß
|
|
|
Tom_Gast |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.11.2016, 08:03
Titel:
|
|
Hallo,
solche Aufgabenstellungen löse ich immer mit einem getriggerten Subsystem. Die Berechnung der Zufallszahl kommt also in dieses Subsystem und das Subsystem triggert z.B. auf positive Flanken. Als Triggersignal kannst du dann einen Pulsgenerator verwenden, der eine Periodendauer von 4 Sekunden (oder je nachdem wie oft es aufgerufen werden soll) hat.
Gruß Tom
|
|
|
shinigami |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 41
|
|
|
|
Anmeldedatum: 08.01.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2014,2016
|
|
|
|
|
|
Verfasst am: 30.11.2016, 10:10
Titel:
|
|
Hallo Tom,
ich habe zwar etwas aufgebaut bin mir aber nicht ganz sicher, ob das auch richtig?!
Könntest du es dir einmal anschauen?
Danke noch mal !
Gruß
Nick
Beschreibung: |
|
Download |
Dateiname: |
bsp.slx |
Dateigröße: |
15.45 KB |
Heruntergeladen: |
360 mal |
|
|
|
Tom_Gast |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.11.2016, 11:27
Titel:
|
|
Hallo,
ja das sieht gut aus. Du muss halt darauf achten, dass bei dir eine neue Zufallszahl bei einer fallenden Flanke berechnet wird. D.h. er berechnet beim ersten mal schon nach einer Sekunde eine neue Zufallszahl und dann im 2-Sekundentakt. Ich würde daher auf die steigende Flanke triggern (rising edge), sodass immer im 2-Sekundentakt eine neue Zufallszahl berechnet wird.
Gruß Tom
|
|
|
shinigami |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 41
|
|
|
|
Anmeldedatum: 08.01.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2014,2016
|
|
|
|
|
|
Verfasst am: 30.11.2016, 11:46
Titel:
|
|
Hallo,
also ich habe es mit allen möglichen Einstellungen versucht, aber das Ergebnis immer das selbe und außerdem muss ich auch noch schaffen, dass der z.b. alle 5s die Matrix neu berechnet.
Ist schon komisch, dass die function Blöcke mit rand nicht so funktionieren?!
Gruß
Nick
|
|
|
Tom_Gast |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.11.2016, 14:50
Titel:
|
|
Hallo,
ich habe mal etwas recherchiert und in diesem Thread
http://www.gomatlab.de/zufallszahl-t360.html
wird sehr gut erklärt, warum das so ist und wie du das beheben kannst.
Nehme also den Block "Random Numbers" und gib bei "Seed" z.B. das hier ein:
Bemerkung: 2^32-1 ist die maximale Anzahl an möglichen Seeds.
Dann funktioniert es.
Wenn du möchtest, dass alle 5 Sekunden eine neue Zufallszahl berechnet wird, stellst du einfach die Periodendauer vom Pulsgenerator auf 5 Sekunden.
Gruß Tom
|
|
|
shinigami |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 41
|
|
|
|
Anmeldedatum: 08.01.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2014,2016
|
|
|
|
|
|
Verfasst am: 30.11.2016, 15:29
Titel:
|
|
Hallo,
Danke Tom.
Habe es angepasst und es funktioniert soweit, also die Matrix ändert sich nun nach jedem "run".
Ich habe auch die Periode eingestellt, aber die Matrix müsste ja in Abhängigkeit der Flanken(egal ob steigende oder fallende) aufgestellt werden bzw. neu berechnet werden oder sehe ich das falsch? Wenn ich 5xfallende Flanken habe müsste ja dann 5xdie Matrix da stehen.
Gruß
Nick
|
|
|
Tom_Gast |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.12.2016, 08:27
Titel:
|
|
Hallo,
also ich verstehe nicht genau, was du meinst, vorallem mit Matrix, denn der Block Random Numbers gibt doch nur eine Folge von Zufallszahlen aus.
Was möchtest du genau haben?
Gruß Tom
|
|
|
shinigami |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 41
|
|
|
|
Anmeldedatum: 08.01.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2014,2016
|
|
|
|
|
|
Verfasst am: 01.12.2016, 10:09
Titel:
|
|
Hallo,
also ich möchte in Simulink alle z.B. 5s eine neue Matrix eingeben. Dafür habe ich das mit dem "function" Block gelöst, damit der Wert bzw. die Matrix immer wieder neu berechnet wird.
Nun erhalte ich zwar immer neue Matrizen, aber ich kann nicht beeinflussen, wie lange die Simulation mit der berechneten Matrix arbeitet, sprich sie soll immer alle 5s mit einer neuen Matrix WEITER rechnen.
Ich hoffe ich konnte mein Problem ordentlich formulieren.
Gruß
Nick
|
|
|
|
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.
|
|