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

Simulink nimmt immer selben "rand" Werte an???

 

shinigami
Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 08.01.15
Wohnort: ---
Version: 2014,2016
     Beitrag Verfasst am: 29.11.2016, 11:32     Titel: Simulink nimmt immer selben "rand" Werte an???
  Antworten mit Zitat      
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??? Sad

Gruß
Private Nachricht senden Benutzer-Profile anzeigen


Tom_Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.11.2016, 12:13     Titel:
  Antworten mit Zitat      
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:
Code:

dessen Ausgang "y"auf einen Scope führt.
 
shinigami
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 08.01.15
Wohnort: ---
Version: 2014,2016
     Beitrag Verfasst am: 29.11.2016, 12:39     Titel:
  Antworten mit Zitat      
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ß

Bsp.slx
 Beschreibung:

Download
 Dateiname:  Bsp.slx
 Dateigröße:  13.64 KB
 Heruntergeladen:  325 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Tom_Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.11.2016, 14:09     Titel:
  Antworten mit Zitat      
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

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 08.01.15
Wohnort: ---
Version: 2014,2016
     Beitrag Verfasst am: 29.11.2016, 14:31     Titel:
  Antworten mit Zitat      
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ß
Private Nachricht senden Benutzer-Profile anzeigen
 
Tom_Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.11.2016, 14:38     Titel:
  Antworten mit Zitat      
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

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 08.01.15
Wohnort: ---
Version: 2014,2016
     Beitrag Verfasst am: 29.11.2016, 15:46     Titel:
  Antworten mit Zitat      
Hallo Tom,

anscheinend hatte ich das nicht gut formuliert Smile

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2016, 09:03     Titel:
  Antworten mit Zitat      
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

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 08.01.15
Wohnort: ---
Version: 2014,2016
     Beitrag Verfasst am: 30.11.2016, 11:10     Titel:
  Antworten mit Zitat      
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

bsp.slx
 Beschreibung:

Download
 Dateiname:  bsp.slx
 Dateigröße:  15.45 KB
 Heruntergeladen:  339 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Tom_Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2016, 12:27     Titel:
  Antworten mit Zitat      
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

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 08.01.15
Wohnort: ---
Version: 2014,2016
     Beitrag Verfasst am: 30.11.2016, 12:46     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Tom_Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2016, 15:50     Titel:
  Antworten mit Zitat      
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:
Code:

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

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 08.01.15
Wohnort: ---
Version: 2014,2016
     Beitrag Verfasst am: 30.11.2016, 16:29     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Tom_Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2016, 09:27     Titel:
  Antworten mit Zitat      
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

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 08.01.15
Wohnort: ---
Version: 2014,2016
     Beitrag Verfasst am: 01.12.2016, 11:09     Titel:
  Antworten mit Zitat      
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
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.