VF_distributionVD_distributionVE_distribution
VI_distributionVBI_distributionVSI_distributionVLI_distributionVQI_distribution
VU_distributionVUB_distributionVUS_distributionVUL_distributionVUQ_distribution
FunktionVerteilungsfunktion (Histogramm-Berechnung)
Syntax C/C++#include <VFstd.h>
ui VF_distribution( uiVector Abund, fVector Limits, ui nbins, fVector X, ui sizex, int mode );
C++ VecObj#include <OptiVec.h>
ui vector<ui>::distribution( const vector<T>& Limits, const vector<T>& X, int mode=0 );
Pascal/Delphiuses VFstd;
function VF_distribution( Abund:uiVector; Limits:fVector; bins:UIntSize; X:fVector; sizex:UIntSize; mode:Integer ):UIntSize;
CUDA-Funktion C/C++#include <cudaVFstd.h>
int cudaVF_distribution( ui *h_nOutside, uiVector d_Abund, fVector d_Limits, ui nbins, fVector d_X, ui sizex, int mode );
int cusdVF_distribution( ui *d_nOutside, uiVector d_Abund, fVector d_Limits, ui nbins, fVector d_X, ui sizex, int mode );
ui VFcu_distribution( uiVector h_Abund, fVector h_Limits, ui nbins, fVector h_X, ui sizex, int mode );
CUDA-Funktion Pascal/Delphiuses VFstd;
function cudaVF_distribution( var h_nOutside:UIntSize; d_Abund:uiVector; d_Limits:fVector; bins:UIntSize; d_X:fVector; sizex:UIntSize; mode:Integer ): IntBool;
function cusdVF_distribution( d_nOutside:PUIntSize; d_Abund:uiVector; d_Limits:fVector; bins:UIntSize; d_X:fVector; sizex:UIntSize; mode:Integer ): IntBool;
function VFcu_distribution( h_Abund:uiVector; h_Limits:fVector; bins:UIntSize; h_X:fVector; sizex:UIntSize; mode:Integer ): UIntSize;
BeschreibungDiese Funktion zählt, wieviele Elemente von X in jedes einzelne der in Limits definierten Intervalle fallen. Die gefundenen Häufigkeitswerte werden in Abund gespeichert.
Es gibt nbins Intervalle (engl. bins). Die Größe des zu durchsuchenden Vektors ist sizex.

Limits muß in aufsteigender Folge sortiert sein. Die Abstände zwischen den einzelnen Werten von Limits müssen aber nicht unbedingt konstant sein.

Der Parameter mode entscheidet darüber, wie die in Limits angegebenen Werte interpretiert werden sollen.
mode > 0: Die Werte von Limits geben die Obergrenzen der Intervalle an.
mode < 0: Die Werte von Limits geben die Untergrenzen der Intervalle an.
mode = 0: Die Werte von Limits geben die Intervall-Mittelpunkte an. Ein X-Wert wird also demjenigen Intervall zugerechnet, zu dessen in Limits angegebenen Wert er den geringsten Abstand hat. Befindet sich ein X-Wert exakt in der Mitte zwischen zwei Limits-Werten, so wird er dem Intervall mit dem niedrigeren Index zugeschlagen. Das durch Limits0 angegebene Intervall ist nach unten hin offen, das durch Limitsnbins-1 angegebene reicht bis +HUGE_VAL.

Der Rückgabewert gibt die Anzahl der Elemente von X an, die außerhalb der spezifierten Intervalle liegen. Für mode > 0 sind dies die das höchste Limit übersteigenden Elemente und für mode < 0 die das niedrigste Limit unterschreitenden Elemente. Für mode = 0 ist der Rückgabewert immer 0, denn die Intervalle sind ja nach beiden Seiten hin offen, so daß jedes Element von X erfaßt wird.

Um die normierte Verteilungsfunktion zu erhalten, gebrauche man die Sequenz VF_distribution( Abund, Limits, nbins, X, sizex, 0 );
V_UItoD( Y, Abund, nbins );
VD_divC( Y, Y, nbins, VD_integralV(Limits,Y,nbins) );

Durch anschließenden Aufruf von
VD_runintegralC( Y, Y, nbins, 1.0 );
erhält man hieraus die kumulierte Verteilungsfunktion.

Zur Stapelverarbeitung mehrerer Vektoren gleicher Größe bieten sich die Funktionen MF_Rows_distribution (vorzugsweise fü C/C++) und MF_Cols_distribution (für Delphi) an.

Fehlerbehandlungkeine
RückgabewertAnzahl der nicht in Abund berücksichtigten Elemente von X
QuerverweisVF_searchV

VectorLib Inhaltsverzeichnis  OptiVec Home