コード例 #1
0
ファイル: stats.c プロジェクト: Gaikokujin/WinNT4
BOOL 
Get_Stats(
    double      *array,               
    long        num_samples,          
    const       filter_option,        
    long        var_limit,             
    PTEST_STATS stats)                 

    {  

        double  Averagetmp;
        double  StdDevtmp;
        long    NumSamplestmp;

        if(!GetAverage(array, num_samples, &Averagetmp))
            return FALSE; 

        SortUp(array, num_samples);

        if(!GetStdDev(array, Averagetmp, num_samples, &StdDevtmp))
            return FALSE;

        stats->Minimum_Result   = array[0];
        stats->Maximum_Result   = array[num_samples - 1];

        if(filter_option == NO_FILTER)
        {
            stats->Average = Averagetmp;
            stats->StdDev  = StdDevtmp;
            stats->NumSamplesValid  = num_samples;
            return TRUE;
        }


        NumSamplestmp   = num_samples;
        if(!FilterResults(array,&Averagetmp,&StdDevtmp,&NumSamplestmp,var_limit,filter_option))
            return FALSE;

        stats->Average              = Averagetmp;
        stats->StdDev               = StdDevtmp;
        stats->NumSamplesValid      = NumSamplestmp;
        return TRUE;

    }
コード例 #2
0
JBoolean
JPlotLinearFit::GetGoodnessOfFit
	(
	JFloat* value
	)
	const
{
	const JPlotDataBase* data = GetDataToFit();
	const JSize count = data->GetElementCount();
	if (data->HasXErrors() || data->HasYErrors())
		{
		*value = itsChi2/(itsRealCount - 2);
		}
	else
		{
		*value = GetStdDev();
		}

	return kJTrue;
}
コード例 #3
0
ファイル: stats.c プロジェクト: Gaikokujin/WinNT4
BOOL 
FilterResults(
    double  Sorted_Array[], 
    double  *tmpAverage, 
    double  *tmpSD, 
    long    *tmpNumSamples, 
    long    limit,
    const   filter_option)
    {


        switch (filter_option)
        {
            case HI_FILTER:
            {
                while(*tmpSD > (double)limit)
                {

                    if(*tmpNumSamples <= 2)return FALSE;

                    (*tmpAverage)   *= (*tmpNumSamples);
                    (*tmpAverage)   -= Sorted_Array[(*tmpNumSamples) - 1];
                    (*tmpNumSamples)--;
                    (*tmpAverage)   /= (*tmpNumSamples);

                    GetStdDev(Sorted_Array, *tmpAverage, *tmpNumSamples, &(*tmpSD));
                
                }
            
                if(*tmpSD < 0)return FALSE;
            }
            break;

            case LO_FILTER:
            {

                while(*tmpSD > (double)limit)
                {

                    if(*tmpNumSamples <= 2)return FALSE;

                    (*tmpAverage)   *= (*tmpNumSamples);
                    (*tmpAverage)   -= (*Sorted_Array);
                    Sorted_Array++;
                    (*tmpNumSamples)--;
                    (*tmpAverage)   /= (*tmpNumSamples);

                    GetStdDev(Sorted_Array, *tmpAverage, *tmpNumSamples, &(*tmpSD));
                
                }
            
                if(*tmpSD < 0)return FALSE;

            }
            break;

            case HI_LO_FILTER:
            {
                
                while(*tmpSD > (double)limit)
                {

                    if(*tmpNumSamples <= 2)return FALSE;

                    if(fabs((*Sorted_Array) - (*tmpAverage)) > fabs(Sorted_Array[*tmpNumSamples - 1] - *tmpAverage))
                    {
                        (*tmpAverage)   *= (*tmpNumSamples);
                        (*tmpAverage)   -= (*Sorted_Array);
                        Sorted_Array++;
                    }
                    else
                    {
                        (*tmpAverage)   *= (*tmpNumSamples);
                        (*tmpAverage)   -= Sorted_Array[(*tmpNumSamples) - 1];
                    }                       

                    (*tmpNumSamples)--;
                    (*tmpAverage)   /= (*tmpNumSamples);

                    GetStdDev(Sorted_Array, *tmpAverage, *tmpNumSamples, &(*tmpSD));
                
                }
            
                if(*tmpSD < 0)return FALSE;

            }
            break;

            default:
            return FALSE;

        }               //switch filter_option

        return TRUE;
                        
    }   
コード例 #4
0
ファイル: Stats.hpp プロジェクト: MultiTool/Volvox
 /* ********************************************************************** */
 void Print_Me(){
   printf("Min:%1.4f, Max:%1.4f, Avg:%1.4f, StdDev:%1.4f ", Min, Max, Avg, GetStdDev());
 }