00001 #ifndef _MQSTAT_H_
00002 #define _MQSTAT_H_
00003
00004
00005
00006
00007
00008
00018 enum { EXCLUDE_ZEROS = 0,
00019 INCLUDE_ZEROS = 1};
00020
00021 enum { MQDESCRIPTIVE_STATISTICS_DATA_TYPE_VECTOR = 0,
00022 MQDESCRIPTIVE_STATISTICS_DATA_TYPE_MATRIX = 1};
00023
00028 struct MQDescriptiveStatistics
00029 {
00030 unsigned data_type:2;
00031 unsigned is_median_set: 1;
00032 unsigned is_mean_set: 1;
00033 unsigned is_data_set: 1;
00034
00035 float mean;
00036 float median;
00037 float sample_variance;
00038 float avg_absolute_deviation_from_median;
00039 float median_absolute_deviation_from_median;
00040 void* data;
00041 int start_index_vector[2];
00042 int stop_index_vector[2];
00043 int N;
00044 };
00045
00046 typedef struct MQDescriptiveStatistics MQDescriptiveStatistics;
00047
00048 void MQDescriptiveStatistics_init(MQDescriptiveStatistics* stat);
00049 void MQDescriptiveStatistics_setDataAsVector(MQDescriptiveStatistics* stat, float* vector, int start_index, int stop_index);
00050 void MQDescriptiveStatistics_setDataAsMatrix(MQDescriptiveStatistics* stat, float** matrix, int row_start, int row_end, int col_start, int col_stop);
00051
00052 void MQDescriptiveStatistics_fprint(FILE* fp, MQDescriptiveStatistics* stat);
00053
00054 int MQDescriptiveStatistics_calc(MQDescriptiveStatistics* stat);
00055 int MQDescriptiveStatistics_calcAboveMinimum(MQDescriptiveStatistics* stat, float minimum_value);
00056 int MQDescriptiveStatistics_calcWithExclusion(MQDescriptiveStatistics* stat, float exclusion_value);
00057
00058 float MQDescriptiveStatistics_getMedian(MQDescriptiveStatistics* stat);
00059 float MQDescriptiveStatistics_getMedianAboveMinimum(MQDescriptiveStatistics* stat, float minimum_value);
00060 float MQDescriptiveStatistics_getMedianWithExclusion(MQDescriptiveStatistics* stat, float exclude_value);
00061
00062 float MQDescriptiveStatistics_getMean (MQDescriptiveStatistics* stat);
00063 float MQDescriptiveStatistics_getMeanAboveMinimum (MQDescriptiveStatistics* stat, float minimum_value);
00064 float MQDescriptiveStatistics_getMeanWithExclusion(MQDescriptiveStatistics* stat, float exclusion_value);
00065
00066 float MQDescriptiveStatistics_getSumOfSquareDeviation(MQDescriptiveStatistics* stat, float value);
00067 float MQDescriptiveStatistics_getSumOfSquareDeviationAboveMinimum(MQDescriptiveStatistics* stat, float value, float minimum_value, int* new_size);
00068 float MQDescriptiveStatistics_getSumOfSquareDeviationWithExclusion(MQDescriptiveStatistics* stat, float value, float exclusion_value, int* new_size);
00069
00070 float MQDescriptiveStatistics_getSumOfAbsoluteDeviation(MQDescriptiveStatistics* stat, float value);
00071 float MQDescriptiveStatistics_getSumOfAbsoluteDeviationAboveMinimum(MQDescriptiveStatistics* stat, float value, float minimum_value, int* new_size);
00072 float MQDescriptiveStatistics_getSumOfAbsoluteDeviationWithExclusion(MQDescriptiveStatistics* stat, float value, float exclusion_value, int* new_size);
00073
00074 float* MQDescriptiveStatistics_getAbsoluteDeviationVector(MQDescriptiveStatistics* stat, float value);
00075 float* MQDescriptiveStatistics_getAbsoluteDeviationVectorAboveMinimum(MQDescriptiveStatistics* stat, float value, float minimum_value, int* new_size);
00076 float* MQDescriptiveStatistics_getAbsoluteDeviationVectorWithExclusion(MQDescriptiveStatistics* stat, float value, float exclusion_value, int* new_size);
00077
00078 float MQDescriptiveStatistics_getStandardDeviation(MQDescriptiveStatistics* stat);
00079 float MQDescriptiveStatistics_getStandardDeviationAboveMinimum(MQDescriptiveStatistics* stat, float value);
00080 float MQDescriptiveStatistics_getStandardDeviationWithExclusion(MQDescriptiveStatistics* stat, float value);
00081
00082 float MQDescriptiveStatistics_getMADM(MQDescriptiveStatistics* stat);
00083 float MQDescriptiveStatistics_getAADM(MQDescriptiveStatistics* stat);
00084
00085 #endif
00086