2016-08-08 8 views
1

Ich habe mehrere Datensätze. Jede Menge ist eine Liste von Zahlen, die die Entfernung von 0 ist, die ein Teilchen zurückgelegt hat. Jeder Satz ist einer endlichen Zeit zugeordnet, also ist 1 die Entfernung bei T = 0; Satz 2 ist die Entfernung bei T = 1 und so weiter. Die Größe jedes Satzes ist die Gesamtzahl der Partikel und die Größe jedes Satzes ist gleich.Matlab - Konzentration vs Entfernung Diagramm (2D)

Ich möchte eine Konzentration vs Entfernung Linie darstellen.

Zum Beispiel, wenn es 1000 Partikel (die Größe der Sätze) gibt; Zur Zeit T = 0 ist die graphische Darstellung nur eine gerade Linie x = 0, weil alle Teilchen bei 0 sind (die Menge enthält 1000 Nullen). Also die Konzentration bei x = 0 = 100% und 0% bei allen anderen Entfernungen

Bei T = 1 und T = 2 und so weiter werden die Abstände (allgemein) zunehmen, so dass ich Sätze haben könnte, die so aussehen : (nur ein Beispiel)

T1 = (1,1,2,2,3,0,1,2,3,2,2,3,1,4 ...) usw. T2 = (2,9,3,2,2,6,4,5,4,3,1,4,5,8 ...)) etc

es ist wahrscheinlich, dass jede Zahl in jedem Satz in diesem Satz

Ziel mehr Parzellen zu haben einzigartig ist, ist (ich sie auf einem Diagramm schließlich zeichnen kann), die die Konzentration auf der y-Achse zeigen und der Abstand auf der x-Achse. Ich stelle mir vor, dass, wenn T T0, T1, T2 ansteigt, die Kurve abflacht, bis die Konzentration überall gleich ist.

Die x-Achse (Abstand) hat ein festes Maximum, das für jede Zeichnung gleich ist. So haben zum Beispiel einige Sätze eine Kurve, die auf der y-Achse (Konzentration) bei einem niedrigen Wert für x (Entfernung) auf Null fällt, aber wenn die Zeit zunimmt, stelle ich mir eine fast ebene Linie vor, wo die Linie nicht übergeht X-Achse (Konzentration ist überall nicht Null)

Ich habe dies mit einem Histogramm versucht, aber es gibt nicht wirklich die Ergebnisse, die ich will. Ich hätte gerne ein Liniendiagramm, aber ich muss versuchen, die Abstände in Sammelbehälter von allgemeinem Sinn zu legen.

danke W

concentration graph

einige grobe Daten

Y1 = 1.0e-09 * [0.3358, 0.3316, 0.3312, 0.3223, 0.2888, 0.2789, 0.2702,... 
    0.2114, 0.1919, 0.1743, 0.1738, 0.1702, 0.0599, 0.0003, 0, 0, 0, 0, 0, 0]; 

Y2 = 1.0e-08 * [0.4566, 0.4130, 0.3439, 0.3160, 0.3138, 0.2507, 0.2483,... 
    0.1714, 0.1371, 0.1039, 0.0918, 0.0636, 0.0502, 0.0399, 0.0350, 0.0182,... 
    0.0010, 0, 0, 0]; 

Y3 = 1.0e-07 * [0.2698, 0.2671, 0.2358, 0.2250, 0.2232, 0.1836, 0.1784,... 
    0.1690, 0.1616, 0.1567, 0.1104, 0.0949, 0.0834, 0.0798, 0.0479, 0.0296,... 
    0.0197, 0.0188, 0.0173, 0.0029]; 

Diese Datensätze, die Abstände von nur 20 Partikel enthalten. Der Y0 Satz ist Nullen. Ich werde mit Tausenden zu tun haben, daher werden die Datensätze zu groß sein.

Thankyou

+0

Können Sie ein visuelles (grobes) Beispiel zu dem geben, was Sie sich vorstellen? Und auch einige minimale Daten, die ausreichen, um es zu erstellen? – EBH

+0

Hallo EBH; Ich habe den ursprünglichen Beitrag bearbeitet, um eine Skizze dessen zu enthalten, was ich zu tun versuche. In diesem Fall gibt es 20 Partikel. Zum Zeitpunkt T0 sind alle Teilchen bei y = 0; so ist die Konzentration bei y = 0 100%. Im Unendlichen sollte die Konzentration überall (fast) gleich sein, eine gerade Linie. Ich werde eine Menge von Malen modellieren, aber nur 3 oder 4 auf einem Graph plotten. Hoffe, das hilft, und danke – William

Antwort

0

Nun, im Grunde, verpassen Sie einfach den Befehl hold. Aber zuerst, setzen alle Ihre Daten in einer Matrix, wie folgt aus:

Y = [1.0e-09 * [0.3358, 0.3316, 0.3312, 0.3223, 0.2888, 0.2789, 0.2702,... 
    0.2114, 0.1919, 0.1743, 0.1738, 0.1702, 0.0599, 0.0003, 0, 0, 0, 0, 0, 0]; 
    1.0e-08 * [0.4566, 0.4130, 0.3439, 0.3160, 0.3138, 0.2507, 0.2483,... 
    0.1714, 0.1371, 0.1039, 0.0918, 0.0636, 0.0502, 0.0399, 0.0350, 0.0182,... 
    0.0010, 0, 0, 0]; 
    1.0e-07 * [0.2698, 0.2671, 0.2358, 0.2250, 0.2232, 0.1836, 0.1784,... 
    0.1690, 0.1616, 0.1567, 0.1104, 0.0949, 0.0834, 0.0798, 0.0479, 0.0296,... 
    0.0197, 0.0188, 0.0173, 0.0029]]; 

Dann müssen Sie bei jedem Schritt plotten getrennt, und verwenden Sie die hold on sie auf den gleichen Achsen einzufügen:

hold on 
for r = size(Y,1):-1:1 
    histogram(Y(r,:)); 
end 
hold off 
T_names = [repmat('T',size(Y,1),1) num2str((size(Y,1):-1:1).')]; 
legend(T_names) 

welche geben Sie (die Beispieldaten): Multiple histograms

Beachten Sie, dass in der Schleife ich rückwärts auf den Zeilen durchlaufen - das ist nur die engeren Histogramme Grundstück auf der breiter zu machen, so dass man deutlich sehen alle von ihnen können .

EDIT

Falls Sie weiterhin Linien, und nicht bins, müssen Sie zuerst durch histcounts die Histogrammwerte erhalten, so dass sie dann wie eine Linie zeichnen:

hold on 
for r = 1:size(Y,1) 
    [H,E] = histcounts(Y(r,:)); 
    plot(E,[H(1) H]) 
end 
hold off 
T_names = [repmat('T',size(Y,1),1) num2str((1:size(Y,1)).')]; 
legend(T_names) 

Mit Ihrer kleinen Beispieldaten sieht es jedoch nicht so beeindruckend aus: Multiple line histograms

+0

Das ist fantastisch; Vielen Dank. Ich habe mit dem Histogramm gespielt; aber ich versuche ein einfaches Liniendiagramm wie die Skizze, die ich gezeichnet habe. Ist das möglich? Vielen Dank. – William

+0

@William siehe meine Bearbeitung der Antwort – EBH

+0

Hallo, das ist viel mehr wie es! Vielen Dank! Ist der grobe Charakter der Kurve auf die Tatsache zurückzuführen, dass nur drei Behälter pro Datensatz vorhanden sind? Wenn ein Datensatz beispielsweise 1000 Datenpunkte hat, kann ich die Anzahl der Bins erhöhen und eine optimale Übereinstimmung der Grafik erzielen? Vielen Dank für Ihre Hilfe, sehr geschätzt. – William