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

Zufallszahl in einem Array

 

Paule492

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.07.2017, 10:35     Titel: Zufallszahl in einem Array
  Antworten mit Zitat      
Hallo liebe Forumsgemeinde,

ich bin noch nicht so gut bewandert mit Matlab von daher ist es wo möglich nur ein simpler Anfängerfehler.
Zu meinem Problem:
Ich möchte mit Hilfe einer For-Schleife ein Array befüllen. Die Werte dafür sollen über eine While-Schleife erzeugt werden. Wenn ich nun das Programm ablaufen lasse wird immer nur der gleiche Wert gespeichert, was auch logisch ist da u und f_x innerhalb der For-Schleife ihren Wert nach Beendigung der While-Schleife beibehalten. Von daher ist die Frage wie ich dies ändern kann, damit ich unterschiedliche Werte erhalten kann.

Beste Grüße

Paul

Code:
data=10;
f_x=0;
 u=1;

for n=1:data
   
    while f_x<u
         x= rand*pi; %Zufallszahl soll im Intervall von [0,PI] liegen
         u= rand*0,5;    %Zufallszahl soll im Intervall von [0,0,5] liegen
       f_x= 0.5*sin(x);
       
    end
x(n)=f_x;

end
plot(x,x(n),'.')
 


Xaratau
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 14.06.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 06.07.2017, 12:34     Titel:
  Antworten mit Zitat      
Hallo

Was hat u für einen Zweck in deinem Code?

Achte auch darauf, für Kommazahlen den Punkt zu verwenden und kein Komma.
Private Nachricht senden Benutzer-Profile anzeigen
 
Paul492

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.07.2017, 12:49     Titel:
  Antworten mit Zitat      
Naja ich möchte halt so eine Art Rejection Sampling programmieren und habe da zu den Pseudocode siehe Anhang

Pseudo_Code_Rejection_Sampling.pdf
 Beschreibung:

Download
 Dateiname:  Pseudo_Code_Rejection_Sampling.pdf
 Dateigröße:  55.87 KB
 Heruntergeladen:  678 mal
 
Xaratau
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 14.06.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 06.07.2017, 13:08     Titel:
  Antworten mit Zitat      
Du musst vermutlich vor der while schleife die Variablen zurücksetzen, ansonsten springt er nicht wieder in die while schleife hinein (hier also u=1, damit er immer in die while schleife springt).
Was ich noch nicht verstehe, ist es gewollt, dass x und x(n) dieselbe variable sind?

Wenn du für x(n) eine andere Ergebnissvariable verwendest sollte es funktionieren:

Code:
data=10;
f_x=0;
 u=1;

for n=1:data
    x=0;
    u=1;
    while f_x<u
         x= rand*pi; %Zufallszahl soll im Intervall von [0,PI] liegen
         u= rand*0.5;    %Zufallszahl soll im Intervall von [0,0,5] liegen
       f_x= 0.5*sin(x);
       
    end
erg(n)=f_x;

end


Hier werden nun in erg(n) die Ergebnisse gespeichert.
Private Nachricht senden Benutzer-Profile anzeigen
 
Paul492

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.07.2017, 13:36     Titel:
  Antworten mit Zitat      
Nein sollten zwei unterschiedliche Variablen darstellen, dementsprechend danke für den Hinweis, funktioniert jetzte.
Noch eine andere Sache wenn ich die Werte erg(n) als Kordinaten in einem Punkt-Diagramm darstellen möchte, müsste ich ja die x- Werte auch einer Laufvariable zu ordnen oder? Weil jetzt wird mir nur ein Punkt angezeigt
Code:
data=10;
f_x=0;

for n=1:data
   
    u=1;
    while f_x<u
         x(n)= rand*pi; %Zufallszahl soll im Intervall von [0,PI] liegen
         u= rand*0.5;    %Zufallszahl soll im Intervall von [0,0,5] liegen
       f_x= 0.5*sin(x(n));
       
    end
erg(n)=f_x;

end
plot(x(n),erg(n),'.')
 
Xaratau
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 14.06.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 07.07.2017, 06:14     Titel:
  Antworten mit Zitat      
Ja das ist richtig, du musst jedoch beim Plotten die gesamte Variable eingeben.
Mit erg(n) gibts du nur die n-te Ziffer in erg aus.
Also einfach
Code:
verwenden.
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 - 2025 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.