Frage

Ich bin Codierung ein interaktives Applet mit Piccolo und ich brauche eine Gaußsche einschließen Kurve (aka Normalverteilung Diagramm ) in seinem Inneren.

stelle ich mir jede Art von Java-Implementierung wäre genug, aber ich kann keine finden. Im Idealfall würde Ich mag eine Reihe von Werten zu übergeben und das Diagramm in einem Panel, ein Bildobjekt oder irgendetwas gezogen haben, die in einem Applet eingebettet werden können.

Bevor meine Hände schmutzig zu machen es Codierung selbst, weiß jemand ein Arbeits Stück Code, es zu tun?

Implementationen in anderen Sprachen sind willkommen, solange sie auf Java leicht tragbar sind.

War es hilfreich?

Lösung

Sie wissen nicht, ob es funktioniert, aber Google warf dieser Code eine Gaußsche Verteilung plotten.

Die Homepage für dieses Projekt ist hier .

Wenn Piccolo führt keine Plotten für Sie, würde ich vielleicht verwenden JFreeChart für die ist Plotten, da es weithin unterstützt wird und sehr fähig. (Ich bin nicht vertraut mit Piccolo)

Andere Tipps

Edit: Es sieht aus wie der Apache Commons Math Bibliothek einen Statistikteil hat. Insbesondere wird ein ganzes Paket auf gemeinsamen Distributions . Hoffentlich Theres einige Mathe Leute da draußen, weil ich nicht grundlegende Statistiken erinnern kann ... hier ist mein Versuch, die ihre Bibliothek. Ich habe nur ein Schiebefenster hier und die P zwischen diesen Werten berechnen. Was ist der wahre Weg, um ein PDF daraus zu bekommen? Sie haben nur eine CDF-Funktion.

public void testNormalDist() throws MathException {
    DistributionFactory f = DistributionFactory.newInstance();
    NormalDistribution n = f.createNormalDistribution(0.0d, 1.0d);
    double lastx = Double.NEGATIVE_INFINITY;
    double nextx = Double.NEGATIVE_INFINITY;
    for (int i=-100; i < 100; i++) {
        nextx = i / 100d;
        System.out.println(n.cumulativeProbability(lastx, nextx));
        lastx = nextx;
    }
}

Ich nehme an, Sie die Wahrscheinlichkeitsdichtefunktion für die Grafik soll. Die Gleichungen sind auf wikipedia , da ich weiß nicht, wie Mathe Markup hier aufzunehmen. Verwenden Sie einfach p (x) als Y-Wert und X als X-Wert und Sie können eine ziemlich einfache 2-d Diagramm aus, dass zu bekommen.

Haben Sie sich unter mathtools unter Java ?

Ok, wie wäre es damit ... Sie geben ihm eine Reihe von X Punkten (normalisiert, natürlich, Sie Ihre X-Pixel auf diese durch Teilen jeder Pixelposition durch die Breite des Bildes umwandeln kann), und es wird wieder die Höhen der Verteilungskurve (wieder, indem Sie Ihren Normierungsfaktor multiplizieren). Dies ist für den Grund Fall, in dem Mittelwert 0 und Standardabweichung ist 1.

public double[] normalDistBasic(double[] xarray, double mu) {
    double[] yarray = new double[xarray.length];
    double rad2pi = 2.50662827d;
    for (int off = 0; off < yarray.length; off++) {
        double x = xarray[off];
        double ss = -1d * x * x / 2d;
        yarray[off] = (-1f / rad2pi) * Math.exp(ss);
    }
    return yarray;
}

Es sollte ziemlich einfach sein, eine zu implementieren, die beliebige Mittelwert und Standardabweichung nimmt, wenn man nicht im Netz gefunden werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top