Domanda

Sono codifica un applet interattiva con Piccolo e ho bisogno di includere una gaussiana curva (alias normale grafico distribuzione ) al suo interno.

Mi immagino qualsiasi tipo di implementazione Java sarebbe sufficiente, ma non riesco a trovare alcuna. Idealmente, mi piacerebbe passare un insieme di valori e hanno il grafico disegnato in un pannello, un oggetto di immagine o tutto ciò che può essere incorporato in un applet.

Prima di mettere le mani sporche di codifica io stesso, Qualcuno sa di un pezzo di lavoro di codice per farlo?

Le implementazioni in altre lingue vengono accolti, purché siano facilmente trasportabili a Java.

È stato utile?

Soluzione

Non so se funziona, ma Google ha gettato su questo codice per tracciare una distribuzione gaussiana .

La home page di questo progetto è qui .

Se Piccolo non esegue il tracciato per te, lo farei forse usare JFreeChart per la plotting reale, dal momento che è ampiamente supportato e molto capace. (Io non sono a conoscenza Piccolo)

Altri suggerimenti

Edit: Sembra che il href="http://commons.apache.org/math/" rel="nofollow noreferrer"> biblioteca ha una sezione statistiche. Specificamente, un intero pacchetto su Distribuzioni . Speriamo che theres alcune persone matematica là fuori, perché non riesco a ricordare le statistiche di base ... ecco il mio tentativo di usare la loro biblioteca. Ho solo una finestra scorrevole qui e calcolare il P tra questi valori. Che cosa è il vero modo per ottenere un PDF da questo? Hanno solo una funzione 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;
    }
}

Presumo che si desidera che la funzione di densità di probabilità per il grafico. Il sono su wikipedia , dal momento che non so come includere la matematica markup qui. Basta usare p (x) come valore Y e X come valore X e si può ottenere un abbastanza facile grafico 2-D da questo.

Hai guardato Mathtools sotto Java ?

Ok, come su questo ... si dà una serie di punti X (normalizzato, naturalmente, è possibile convertire i pixel X a questi dividendo ogni posizione pixel per la larghezza della vostra immagine), e si tornerà alture della curva di distribuzione (ancora una volta, si moltiplicano per il vostro fattore di normalizzazione). Questo è per il caso base in cui media è 0 e la deviazione standard è 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;
}

Dovrebbe essere abbastanza facile da implementare uno che prende media arbitraria e la deviazione standard se non può essere trovato in rete.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top