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

Ploten von Gleichverteilten Zufallszahlen

 

Mads

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2010, 08:52     Titel: Ploten von Gleichverteilten Zufallszahlen
  Antworten mit Zitat      
Hallo zusammen!

Zunächstmal ich habe leider fast überhaupt keine ahnung von Matlab.

Also ich möchte gleichverteilte Zufallszahlen generieren und in einem Vektor speichern. Soweit sogut das hab ich noch geschafft. Dann habe ich die floats noch auf 2 Stellen hinter dem Komma gekürzt.

Code:

t=rand(10,1,'uniform')
t=round(100*t)/100
 


Nun beginnt mein Problem ich möchte jetzt die Häufigkeit zählen, wie oft eine Zufallszahl auftritt und anschließend soll die Zufallszahl auf die x und die Häufigkeit aus die y Achse.

Ich hab es mit zwei for-Schleifen versucht:

Code:

for i=1:10
  for j=i+1:10
    if t(i)~=t(j)
      n(i)=1
    elseif t(i)==t(j)
      n(i)=n(i)+1
    end
  end
  hold on
  plot(t(i),n(i))
end
 


leider gibts einen fehler mit hold (benutze nicht matlab sonder scilab)
ich hab keinen Plan ob das so überhaupt möglich ist.

Gruß Mads


edit by denny: Bitte die Code-Umgebung verwenden. Danke!
Wenn du Scilab programmierst,
dann gehört deine Frage hier in Scilab Unterforum. Deshalb verschiebe ich deinen Betrag mal dahin.


Achi
Forum-Guru

Forum-Guru


Beiträge: 250
Anmeldedatum: 14.04.10
Wohnort: ---
Version: R2007a
     Beitrag Verfasst am: 21.10.2010, 09:07     Titel:
  Antworten mit Zitat      
t=rand(10,1,'uniform') funktioniert bei mir nicht!
DIe Methode 'uniform' gibts doch gar nicht in dem Zusammenhang?

Und wo hast du floats? Das sind double, falls du es nicht explizit so definiert hast! Gib mal vorher format long ein und du wirst es sehen.

Ich denke mit dem Befehl unique kommst du weiter und schenkst dir dien Schleife. Obs unique in Scilab gibt weiss ich natürlich nicht. Rolling Eyes
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
Verschoben: 21.10.2010, 09:42 Uhr von denny
Von Programmierung nach Scilab / Xcos (ehemals Scicos) Forum
 
aj.geissler
Forum-Guru

Forum-Guru



Beiträge: 251
Anmeldedatum: 26.11.07
Wohnort: Seeheim-Jugenheim
Version: ---
     Beitrag Verfasst am: 22.10.2010, 21:30     Titel:
  Antworten mit Zitat      
Hi,

falls Dir eine Grafik langt, probiere bitte "histplot".

Ansonsten könnte Dir evtl. meine Routine histcalc, basierend auf sparse-Funktionen helfen:

Code:

function H=histcalc(x);
// H=histcalc(x)
//
// Histogram of a vector or a matrix
//
// The vector or matrix x is converted to integer.
// A histogram vector with max(x)-Elements is created.
// Each position J of the vector H contains the number of elements
// of x, which have the value J.
//
// H is a sparse vector !
//
// The execution time is dependent on the different kind of
// entries of x. It is not mainly dependant on the size of x!
//
// Much faster is the function fasthist !

[zx,sx]=size(x);
x=int(x);

range_min=min(x);
range_max=max(x);
H=spzeros(1,range_max);

while ~isempty(x),
  minx=min(x);
  if minx>0,
    kcount=length(find(x==minx));
    H(minx)=kcount;
  end
  x=x(x~=minx);
end

endfunction
 
 
 


Ein Beispiel zur Nutzung_:

Code:

 rand('uniform');
  x=8 .*rand(1,1E4)+10;
  H=full(histcalc(x));
  k=(1:1:length(H))+0.5;
  bar(k,H);
  // That's it
 


Vielleicht hilft Dir das weiter ?

Grüße
Andreas
_________________

Andreas Geißler
Private Nachricht senden Benutzer-Profile anzeigen
 
Mads

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.10.2010, 09:20     Titel: zweiter Versuch
  Antworten mit Zitat      
Danke erstmal für eure Vorschläge!

Ich habs mit unique mal Versuch ud mich zunächst darauf beschränkt überflüssige wert rauszukicken.

Ich kann vorgfertigte Sachen leiden nicht verwenden, da ich einen Vortrag drüber halten muss und dann muss ich ja alles kapiert haben.

Code:
%
t=rand(100,1,'uniform')
t=round(100*t)/100
a=unique(t)
m=zeros(100,1)
m(1,1)=a(1,1)

for i=2:100
  d(i)=a(i-1)  
  if a(i)>d(i)
    m(i)=a(i)    
elseif a(i)==d(i)
  else
  end
end

disp(m)
 


Mach ich das für nur 5 ZZ dann klappts mach ich mehr kommt jedesmal

if a(i)>d(i)
!--error 21
ungültiger Index.

Wenn das dann klappt will ich den neuen Vektor mit dem alten Vergleichen und das die häufigkeiten zählen.

Danke Mads
 
Mads

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.10.2010, 14:33     Titel: verwendung von histplot
  Antworten mit Zitat      
Ich hab es jetzt mal mit histplot versucht super tipp allerdings benötige ich die Verteilungsfunktion als plot also die addition der anzahlen....gibts dafür auch was?
 
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.