![]() |
|
| void apop_matrix_normalize | ( | gsl_matrix * | data, | |
| const char | row_or_col, | |||
| const char | normalization | |||
| ) |
Normalize each row or column in the given matrix, one by one.
Basically just a convenience fn to iterate through the columns and run apop_vector_normalize for you.
| data | The data set to normalize. | |
| row_or_col | Either 'r' or 'c'. | |
| normalization | see apop_vector_normalize. |
| void apop_vector_normalize | ( | gsl_vector * | in, | |
| gsl_vector ** | out, | |||
| const char | normalization_type | |||
| ) |
This function will normalize a vector, either such that it has mean zero and variance one, or such that it ranges between zero and one, or sums to one.
| in | A gsl_vector which you have already allocated and filled. NULL input gives NULL output. (No default) | |
| out | If normalizing in place, NULL. If not, the address of a gsl_vector. Do not allocate. (default = NULL.) | |
| normalization_type | 'p': normalized vector will sum to one. E.g., start with a set of observations in bins, end with the percentage of observations in each bin. (the default) 'r': normalized vector will range between zero and one. Replace each X with (X-min) / (max - min). 's': normalized vector will have mean zero and variance one. Replace each X with , where is the sample standard deviation.'m': normalize to mean zero: Replace each X with ![]() |
#include <apop.h> int main(void){ gsl_vector *in, *out; in = gsl_vector_calloc(3); gsl_vector_set(in, 1, 1); gsl_vector_set(in, 2, 2); printf("The orignal vector:\n"); apop_vector_show(in); apop_vector_normalize(in, &out, 's'); printf("Standardized with mean zero and variance one:\n"); apop_vector_show(out); apop_vector_normalize(in, &out, 'r'); printf("Normalized range with max one and min zero:\n"); apop_vector_show(out); apop_vector_normalize(in, NULL, 'p'); printf("Normalized into percentages:\n"); apop_vector_show(in); }
This function uses the Designated initializers syntax for inputs.
| double* apop_vector_percentiles | ( | gsl_vector * | data, | |
| char | rounding | |||
| ) |
Returns a vector of size 101, where returned_vector[95] gives the value of the 95th percentile, for example. Returned_vector[100] is always the maximum value, and returned_vector[0] is always the min (regardless of rounding rule).
| data | a gsl_vector of data. (No default, must not be NULL.) | |
| rounding | This will either be 'u', 'd', or 'a'. Unless your data is exactly a multiple of 101, some percentiles will be ambiguous. If 'u', then round up (use the next highest value); if 'd' (or anything else), round down to the next lowest value; if 'a', take the mean of the two nearest points. If 'u' or 'a', then you can say "5% or more of the sample is below returned_vector[5]"; if 'd' or 'a', then you can say "5% or more of the sample is above returned_vector[5]". (Default = 'd'.) |