Verfasst am: 30.01.2012, 23:50
Titel: 2000000 messwerte nach häufigkeit in einer Grafik einfärbe
Hallo zusammen,
ich habe eine Tabelle mit ca. 2000 0000 Spannungswerten und dem dazugehörigen Leistungswerten. Nun möchte ich diese Werte als Punkte in einer Grafik ausgeben lassen (x-Achse: Spannung, y-Achse: Leistung).
Damit ich aber auch die Häufigkeit der Messpunkte mit einbringe, möchte ich diese je nach Anzahl farbig machen (Bsp. tritt ein Wert 500 mal auf dann schwarz, tritt ein wert 10 mal auf dann grau).
Wie könnte ich das umsetzen?
Hab die Daten bereits nach den Spannungswerten sortiert, aber leider hab ich keine ahnung wie ich weiter verfahren könnte...
hoffe ihr könnt mir weiter helfen
es geht bestimmt viel schlauer, aber habs grad mal so auf die schnelle probiert.
d.h. ich frag mich auch ob das das ist was du haben möchtest.
Code:
U_komplett=randi(150,100,1);
P_komplett=U_komplett.^2;
U=unique(U_komplett);
P=unique(P_komplett);
bins=length(U);
[n x]=hist(U_komplett,bins);
figure;
for idx=1:bins
switch1 case n(idx)>1 && n(idx)<=2 %die grenzen halt entsprechend anpassen
linestyle='-<r';
case n(idx)>2 && n(idx)<=4
linestyle='-<k';
case n(idx)>4 && n(idx)<=7
linestyle='-<b';
case n(idx)>7 && n(idx)<=10
linestyle='-<g';
case n(idx)>10
linestyle='-<c';
otherwise continue end plot(U(idx),P(idx),linestyle) hold on
end
ja dass wollte ich machen.
Nur möchte ich gerne in verschiedenen Grauabstufungen arbeiten. Wie kann man die Farben dann mit dieser Grauabstufung definieren?
Außerdem hab ich noch dass Problem das mir nicht mehr die kompletten Punkte eingezeichnet werden, nach unique hab ich noch ca. 4000 000 Werte, dh diese Werte kommen einfach vor....
Eingezeichnet werden aber nur 2000 Werte.
zu der anzahl der werte:
hast du vielleicht deine grenzen inkorrekt gesetzt? dass du irgendwo nur > wo >= hinmuesste hin. oder irgendeinen fall nicht abgedeckt?
wird der plot befehl den deine 4e6mal ausgeführt? einfach mal einen zähler vor den plot befehl setzen und mitzählen lassen...
das funktioniert soweit ganz gut. das problem ist nur dass es auf grund der datenmenge sehr lange dauert bis die grafik gezeichnet ist. Außerdem kann ich die Grafik auch nicht speichern (bekomme da immer eine Fehlermeldung). Hast du vllt eine tipp wie ich die datei anders zeichnen lassen kann?
spontane antwort nach alkohol
ich koennte mir vorstellen, dass es einfacher waere einfache in neuen vektoren die entsprechenden werte zu speichern, die die gleiche farbe haben und anschließen die neuen vektoren als ganzes zu plotten...
also ala:
if gleiche anzahl
packe werte in cell element 1
end usw...
Code:
switch1 case case1
zielvektor{1}(end+1)=deine zahl. %usw fuer die anderen cases..
case case2
case case3
end
figure;
for idx=1:length(zielvektor) plot(zielvektor{idx})% eventuell hier hlat die parameter einfuegen. end
also ich hab jetzt versucht den code auf meine variablen zu übertragen. aber irgendwie haut es nicht so wirklich hin. Hier schonmal der verwendete code:
Code:
anzahl=Zneu(:,3);
bins=length(Zneu);
Zneusort=[length(Zneu),3];
for idx=1:bins
switch1 case anzahl(idx)>1 && anzahl(idx)<=10
Zneusort{1}(1+end)=[Zneu(idx,1),Zneu(idx,2),Zneu(idx,3)];
case anzahl(idx)<10 && anzahl(idx)<=50
Zneusort{2}(1+end)=[Zneu(idx,1),Zneu(idx,2),Zneu(idx,3)];
case anzahl (idx)>50
Zneusort{3}(1+end)=[Zneu(idx,1),Zneu(idx,2),Zneu(idx,3)];
otherwise continue end end
Wenn ich die frühere Variante verwende dauert es bis zu einer stunde bis die grafik erstellt ist und beim speichern kommt es meist zu gar keiner fehlermeldung sondern matlab hängt sich auf.
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
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.