Matlab < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 15:34 Do 12.11.2009 | Autor: | uecki |
Hallo
Ich habe hier folgendes programmiert:
clc; clear all, close all;
x=randn(100000,1); %normalverteilte Zufallszahlen erzeugung
y=randn(100000,1);
z=x+y;
w=-5:0.1:5; %Intervall für die Zeichnung(en)
hist(x,w);
hist(y,w);
hist(z,w);
So, und jetzt möchte ich alle drei hist-Zeichnungen in eine "Oberfläche" packen.
Ich dachte schon mit subplot(hist(x,w),hist(y,w),hist(z,w))...aber geht leider nicht.
Hat jemand ne Idee?
Danke schon mal!
LG
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 16:17 Do 12.11.2009 | Autor: | Frasier |
Hallo uecki,
du benutzt subplot einfach nur falsch.
clc; clear all, close all;
x=randn(100000,1); %normalverteilte Zufallszahlen erzeugung
y=randn(100000,1);
z=x+y;
w=-5:0.1:5; %Intervall für die Zeichnung(en)
subplot(3,1,1);
hist(x,w);
subplot(3,1,2);
hist(y,w);
subplot(3,1,3);
hist(z,w);
lg
F.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 10:11 Mo 16.11.2009 | Autor: | uecki |
Hallo,
vielen Dank, das hat funktioniert.
Jetzt habe ich noch eine andere Frage.
Ich möchte von einem Histogramm eine Teilfläche anders färben.
Ungefähr so: hist(a,w); find(a<b) und die a<b sollen dann in einer anderen Farbe im gleichen Histogramm eingefärbt werden.
Kann mir da jemand helfen?
Danke schon mal!
LG
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 11:12 Mo 16.11.2009 | Autor: | Frasier |
Hallo uecki,
direkt mit hist ist mir keine Möglichkeit bekannt.
Aber du kannst die Daten für das Histogramm mit hist berechnen und dann mit bar darstellen lassen.
Dann hast du etwas mehr Möglichkeiten.
x=randn(100000,1); %normalverteilte Zufallszahlen erzeugung
w=-5:0.1:5; %Intervall für die Zeichnung(en)
[n,xout]=hist(x,w);
thresh=2500;
ind1=n<thresh;
ind2=n>=thresh;
hold;
bar(xout(ind1),n(ind1),'FaceColor','r');
bar(xout(ind2),n(ind2),'FaceColor','b');
hold off;
lg
F.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 12:02 Mo 16.11.2009 | Autor: | uecki |
Hab ich gemacht. Das sieht jetzt so aus:
clc;clear all;close all;
%%Eingabe
MW=0.5;
OT = 1;
UT = -1;
%%Berechnungen und Zeichnungen
w=-5:0.1:5; %Intervall für die Zeichnung
x= randn(1000000,1) +MW; %Normalverteilte Zufallszahlen
[n,xout]=hist(x,w); %Histogramm
ind1=n<=UT;
ind2=n>=OT;
hold;
bar(n(ind1),xout(ind1),'FaceColor','r');
bar(n(ind2),xout(ind2),'FaceColor','r');
hold on;
plot([MW,MW],[0,50000],'r') %Mittelwert für Zeichnung
hold on
plot([OT,OT],[0,50000],'g') %OT für Zeichnung
hold on
plot([UT,UT],[0,50000],'g') %UT für Zeichnung
hold on
Es kommt garnichts, wenn ich es durchlaufen lasse....
Bei: bar(n(ind1),xout(ind1),'FaceColor','r');
bar(n(ind2),xout(ind2),'FaceColor','r'); war ich mir nicht sicher, ob ich das umtauschen muss oder nicht, also die beiden n(ind1) und xout(ind1). Aber egal wie rum ich es mache, es geht nicht.
Was habe ich falsch?
Danke!!!
LG
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 21:28 Di 17.11.2009 | Autor: | Frasier |
Hallo uecki,
ich weiß zwar nicht, was du da machst, aber du hast beim Aufruf der bar-Funktion n und xout vertauscht. Und offenbar auch bei der Abfrage von UT und OT.
clc;clear all;close all;
%%Eingabe
MW=0.5;
OT = 1;
UT = -1;
%%Berechnungen und Zeichnungen
w=-5:0.1:5; %Intervall für die Zeichnung
x= randn(1000000,1) +MW; %Normalverteilte Zufallszahlen
[n,xout]=hist(x,w); %Histogramm
ind1=xout<=UT;
ind2=xout>=OT;
hold;
bar(xout(ind1),n(ind1),'FaceColor','b');
bar(xout(ind2),n(ind2),'FaceColor','r');
plot([MW,MW],[0,50000],'r') %Mittelwert für Zeichnung
plot([OT,OT],[0,50000],'g') %OT für Zeichnung
plot([UT,UT],[0,50000],'g') %UT für Zeichnung
hold off;
lg
F.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:57 Mi 18.11.2009 | Autor: | uecki |
Ja, ich weiß das ich die vertauscht hatte, hatte ich doch auch geschrieben. Aber es ging ja egal wie rum nicht...Aber die Aufgabe hat sich jetzt erledigt.
Vielen Dank für die Hilfe aufjedenfall!
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:51 Mi 18.11.2009 | Autor: | Frasier |
Hallo,
das lag wohl daran, dass du ind1 und ind2 mit n kleiner/größer geprüft hast und nicht mit xout.
Dann war ind1 ein logischer Vektor voller Nullen und es gab bei der Indizierung einen Fehler.
lg
F.
|
|
|
|