Question

Je codage d'une applet interactif avec Piccolo et je dois inclure une gaussienne courbe (alias tableau de distribution normale ) à l'intérieur.

J'imagine tout type d'implémentation Java serait suffisant, mais je ne trouve pas. Idéalement, je voudrais passer un ensemble de valeurs et ont le tableau dessiné dans un panneau, un objet image ou tout ce qui peut être intégré dans une applet.

Avant de mettre la main moi-même de codage sale, personne ne sait d'un morceau de travail de code pour le faire?

Implémentations dans d'autres langues sont les bienvenues, aussi longtemps qu'ils sont facilement portables Java.

Était-ce utile?

La solution

Je ne sais pas si cela fonctionne, mais Google a jeté up ce code pour tracer une de distribution gaussienne.

La page d'accueil de ce projet est .

Si Piccolo ne fonctionne pas pour vous le tracé, je le ferais peut-être utiliser JFreeChart pour la réelle tracé, car il est largement soutenu et très capable. (Je ne suis pas familier avec Piccolo)

Autres conseils

Edit: Il ressemble à la bibliothèque Apache Commons Math a une section de statistiques. Plus précisément, un paquet tout sur Distributions . Espérons que certains theres mathématiques là-bas parce que je ne me souviens pas des statistiques de base ... voici ma tentative d'utiliser la leur bibliothèque. J'ai juste une fenêtre glissante ici et calculer la P entre ces valeurs. Quelle est la véritable façon d'obtenir un PDF de tout cela? Ils ont seulement une fonction CDF.

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;
    }
}

Je suppose que vous voulez que la fonction de densité de probabilité pour le graphique. sont sur wikipedia , puisque je ne sais pas comment inclure les balises mathématiques ici. Il suffit d'utiliser p (x) comme valeur Y et X comme valeur X et vous pouvez obtenir un graphique assez facile 2-d de cela.

Avez-vous regardé MathTools sous Java ?

Ok, que diriez-vous ... vous lui donnez un tableau de points de X (normalisé, bien sûr, vous pouvez convertir vos pixels X à ces en divisant chaque position de pixel par la largeur de l'image), et elle retournera les hauteurs de la courbe de distribution (encore une fois, multiplier par le facteur de normalisation). Ceci est le cas où de base moyenne est 0 et l'écart type est égal à 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;
}

Il devrait être assez facile à mettre en œuvre qui prend moyenne arbitraire et l'écart-type si l'on ne peut pas être trouvé sur le net.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top