📄 lda3.c
字号:
#include <stdio.h>#include <gsl/gsl_math.h>
#include <gsl/gsl_eigen.h>#include <gsl/gsl_vector.h>#include <gsl/gsl_linalg.h>#include <gsl/gsl_complex.h>#include <gsl/gsl_complex_math.h>#include <gsl/gsl_permutation.h>#include <assert.h>#define N_data 10000#define windowLength 32
#define overLap 50
#define diff_window (windowLength-(windowLength*overLap)/100)#define class_num 8#define sample_num 100#define feature_num 6#define accelerometer_dim 3#define feature_vector_num feature_num*accelerometer#define lda_sample 25#define sample_dim 18
struct Feature
{
double mean[3]; //Mean
double std[3]; //Standard Deviation
double corrcoef[3]; //Correlation //double energy[3]; //Energy //double iqr[3]; //Interquartile Range double mad[3]; //Mean Absolute Deviation double rms[3]; //Root Mean Square double var[3]; //Variance
};
typedef struct Feature feature;
typedef feature *featurePtr;struct Matrix{ gsl_matrix* m;};typedef struct Matrix matrix;
typedef matrix *matrixPtr;
gsl_matrix_complex * lda( featurePtr, featurePtr, featurePtr, featurePtr, featurePtr, featurePtr, featurePtr, featurePtr );void gsl_matrix_mul_matrix(const gsl_matrix * , const gsl_matrix * , gsl_matrix * ); //matrix-multiply//sl_matrix *W;// gsl_matrix_complex *W_pre;gsl_matrix * class1_mean_prime; // 7 X 1gsl_matrix * class2_mean_prime;gsl_matrix * class3_mean_prime;gsl_matrix * class4_mean_prime;gsl_matrix * class5_mean_prime;gsl_matrix * class6_mean_prime;gsl_matrix * class7_mean_prime;gsl_matrix * class8_mean_prime;gsl_matrix * sw_class1_prime; // 7 X 7gsl_matrix * sw_class2_prime;gsl_matrix * sw_class3_prime;gsl_matrix * sw_class4_prime;gsl_matrix * sw_class5_prime;gsl_matrix * sw_class6_prime;gsl_matrix * sw_class7_prime;gsl_matrix * sw_class8_prime;//gsl_matrix *W = gsl_matrix_alloc (7, 18);
int main(){ double rand_num; double temp;
int rand_temp;
//float Acc_data[3][500], RTAcc[3][500], RTAcc_temp[3][1000];
int rec_result;
int is_stable;
int a;
FILE* f = fopen ("test.txt", "wb"); FILE* file_W = fopen("W_file.txt", "wb"); int i, j; //srand(time(NULL)); //double Acc_data[3][N_data]; gsl_matrix_complex *W_pre; gsl_matrix *W;
featurePtr RTFea; featurePtr LDAFea1; featurePtr LDAFea2; featurePtr LDAFea3; featurePtr LDAFea4; featurePtr LDAFea5; featurePtr LDAFea6; featurePtr LDAFea7; featurePtr LDAFea8; RTFea = malloc( sizeof( feature ) ); LDAFea1 = malloc( lda_sample*sizeof( feature ) ); LDAFea2 = malloc( lda_sample*sizeof( feature ) ); LDAFea3 = malloc( lda_sample*sizeof( feature ) ); LDAFea4 = malloc( lda_sample*sizeof( feature ) ); LDAFea5 = malloc( lda_sample*sizeof( feature ) ); LDAFea6 = malloc( lda_sample*sizeof( feature ) ); LDAFea7 = malloc( lda_sample*sizeof( feature ) ); LDAFea8 = malloc( lda_sample*sizeof( feature ) );
//srand( time( NULL ) ); //gsl_matrix *W = gsl_matrix_alloc (7, 18); class1_mean_prime = gsl_matrix_alloc (7, 1); class2_mean_prime = gsl_matrix_alloc (7, 1); class3_mean_prime = gsl_matrix_alloc (7, 1); class4_mean_prime = gsl_matrix_alloc (7, 1); class5_mean_prime = gsl_matrix_alloc (7, 1); class6_mean_prime = gsl_matrix_alloc (7, 1); class7_mean_prime = gsl_matrix_alloc (7, 1); class8_mean_prime = gsl_matrix_alloc (7, 1); sw_class1_prime = gsl_matrix_alloc (7, 7); sw_class2_prime = gsl_matrix_alloc (7, 7); sw_class3_prime = gsl_matrix_alloc (7, 7); sw_class4_prime = gsl_matrix_alloc (7, 7); sw_class5_prime = gsl_matrix_alloc (7, 7); sw_class6_prime = gsl_matrix_alloc (7, 7); sw_class7_prime = gsl_matrix_alloc (7, 7); sw_class8_prime = gsl_matrix_alloc (7, 7);
for( i=0;i<25;i++ )
{ rand_temp = rand()%10000;
LDAFea1[i].mean[0] = (double)( rand_temp/10000.0 );
LDAFea1[i].mean[0] = -4+8*LDAFea1[i].mean[0]; rand_temp = rand()%10000;
LDAFea1[i].mean[1] = (double)( rand_temp/10000.0 );
LDAFea1[i].mean[1] = -4+8*LDAFea1[i].mean[1]; rand_temp = rand()%10000;
LDAFea1[i].mean[2] = (double)( rand_temp/10000.0 );
LDAFea1[i].mean[2] = -4+8*LDAFea1[i].mean[2]; rand_temp = rand()%10000;
LDAFea1[i].std[0] = (double)( rand_temp/10000.0 );
LDAFea1[i].std[0] = -4+8*LDAFea1[i].std[0]; rand_temp = rand()%10000;
LDAFea1[i].std[1] = (double)( rand_temp/10000.0 );
LDAFea1[i].std[1] = -4+8*LDAFea1[i].std[1]; rand_temp = rand()%10000;
LDAFea1[i].std[2] = (double)( rand_temp/10000.0 );
LDAFea1[i].std[2] = -4+8*LDAFea1[i].std[2]; rand_temp = rand()%10000;
LDAFea1[i].corrcoef[0] = (double)( rand_temp/10000.0 );
LDAFea1[i].corrcoef[0] = -4+8*LDAFea1[i].corrcoef[0]; rand_temp = rand()%10000;
LDAFea1[i].corrcoef[1] = (double)( rand_temp/10000.0 );
LDAFea1[i].corrcoef[1] = -4+8*LDAFea1[i].corrcoef[1]; rand_temp = rand()%10000;
LDAFea1[i].corrcoef[2] = (double)( rand_temp/10000.0 );
LDAFea1[i].corrcoef[2] = -4+8*LDAFea1[i].corrcoef[2]; rand_temp = rand()%10000;
LDAFea1[i].mad[0] = (double)( rand_temp/10000.0 );
LDAFea1[i].mad[0] = -4+8*LDAFea1[i].mad[0]; rand_temp = rand()%10000;
LDAFea1[i].mad[1] = (double)( rand_temp/10000.0 );
LDAFea1[i].mad[1] = -4+8*LDAFea1[i].mad[1]; rand_temp = rand()%10000;
LDAFea1[i].mad[2] = (double)( rand_temp/10000.0 );
LDAFea1[i].mad[2] = -4+8*LDAFea1[i].mad[2]; rand_temp = rand()%10000;
LDAFea1[i].rms[0] = (double)( rand_temp/10000.0 );
LDAFea1[i].rms[0] = -4+8*LDAFea1[i].rms[0]; rand_temp = rand()%10000;
LDAFea1[i].rms[1] = (double)( rand_temp/10000.0 );
LDAFea1[i].rms[1] = -4+8*LDAFea1[i].rms[1]; rand_temp = rand()%10000;
LDAFea1[i].rms[2] = (double)( rand_temp/10000.0 );
LDAFea1[i].rms[2] = -4+8*LDAFea1[i].rms[2]; rand_temp = rand()%10000;
LDAFea1[i].var[0] = (double)( rand_temp/10000.0 );
LDAFea1[i].var[0] = -4+8*LDAFea1[i].var[0]; rand_temp = rand()%10000;
LDAFea1[i].var[1] = (double)( rand_temp/10000.0 );
LDAFea1[i].var[1] = -4+8*LDAFea1[i].var[1]; rand_temp = rand()%10000;
LDAFea1[i].var[2] = (double)( rand_temp/10000.0 );
LDAFea1[i].var[2] = -4+8*LDAFea1[i].var[2]; fprintf(f, "%f, ", LDAFea1[i].mean[0]); fprintf(f, "%f, ", LDAFea1[i].mean[1]); fprintf(f, "%f, ", LDAFea1[i].mean[2]); fprintf(f, "%f, ", LDAFea1[i].std[0]); fprintf(f, "%f, ", LDAFea1[i].std[1]); fprintf(f, "%f, ", LDAFea1[i].std[2]); fprintf(f, "%f, ", LDAFea1[i].corrcoef[0]); fprintf(f, "%f, ", LDAFea1[i].corrcoef[1]); fprintf(f, "%f, ", LDAFea1[i].corrcoef[2]); fprintf(f, "%f, ", LDAFea1[i].mad[0]); fprintf(f, "%f, ", LDAFea1[i].mad[1]); fprintf(f, "%f, ", LDAFea1[i].mad[2]); fprintf(f, "%f, ", LDAFea1[i].rms[0]); fprintf(f, "%f, ", LDAFea1[i].rms[1]); fprintf(f, "%f, ", LDAFea1[i].rms[2]); fprintf(f, "%f, ", LDAFea1[i].var[0]); fprintf(f, "%f, ", LDAFea1[i].var[1]); fprintf(f, "%f\n", LDAFea1[i].var[2]); //fprintf(f, "\n"); } for( i=0;i<25;i++ )
{ rand_temp = rand()%10000;
LDAFea2[i].mean[0] = (double)( rand_temp/10000.0 );
LDAFea2[i].mean[0] = -4+8*LDAFea2[i].mean[0]; rand_temp = rand()%10000;
LDAFea2[i].mean[1] = (double)( rand_temp/10000.0 );
LDAFea2[i].mean[1] = -4+8*LDAFea2[i].mean[1]; rand_temp = rand()%10000;
LDAFea2[i].mean[2] = (double)( rand_temp/10000.0 );
LDAFea2[i].mean[2] = -4+8*LDAFea2[i].mean[2]; rand_temp = rand()%10000;
LDAFea2[i].std[0] = (double)( rand_temp/10000.0 );
LDAFea2[i].std[0] = -4+8*LDAFea2[i].std[0]; rand_temp = rand()%10000;
LDAFea2[i].std[1] = (double)( rand_temp/10000.0 );
LDAFea2[i].std[1] = -4+8*LDAFea2[i].std[1]; rand_temp = rand()%10000;
LDAFea2[i].std[2] = (double)( rand_temp/10000.0 );
LDAFea2[i].std[2] = -4+8*LDAFea2[i].std[2]; rand_temp = rand()%10000;
LDAFea2[i].corrcoef[0] = (double)( rand_temp/10000.0 );
LDAFea2[i].corrcoef[0] = -4+8*LDAFea2[i].corrcoef[0]; rand_temp = rand()%10000;
LDAFea2[i].corrcoef[1] = (double)( rand_temp/10000.0 );
LDAFea2[i].corrcoef[1] = -4+8*LDAFea2[i].corrcoef[1]; rand_temp = rand()%10000;
LDAFea2[i].corrcoef[2] = (double)( rand_temp/10000.0 );
LDAFea2[i].corrcoef[2] = -4+8*LDAFea2[i].corrcoef[2];
rand_temp = rand()%10000;
LDAFea2[i].mad[0] = (double)( rand_temp/10000.0 );
LDAFea2[i].mad[0] = -4+8*LDAFea2[i].mad[0];
rand_temp = rand()%10000;
LDAFea2[i].mad[1] = (double)( rand_temp/10000.0 );
LDAFea2[i].mad[1] = -4+8*LDAFea2[i].mad[1];
rand_temp = rand()%10000;
LDAFea2[i].mad[2] = (double)( rand_temp/10000.0 );
LDAFea2[i].mad[2] = -4+8*LDAFea2[i].mad[2];
rand_temp = rand()%10000;
LDAFea2[i].rms[0] = (double)( rand_temp/10000.0 );
LDAFea2[i].rms[0] = -4+8*LDAFea2[i].rms[0];
rand_temp = rand()%10000;
LDAFea2[i].rms[1] = (double)( rand_temp/10000.0 );
LDAFea2[i].rms[1] = -4+8*LDAFea2[i].rms[1];
rand_temp = rand()%10000;
LDAFea2[i].rms[2] = (double)( rand_temp/10000.0 );
LDAFea2[i].rms[2] = -4+8*LDAFea2[i].rms[2];
rand_temp = rand()%10000;
LDAFea2[i].var[0] = (double)( rand_temp/10000.0 );
LDAFea2[i].var[0] = -4+8*LDAFea2[i].var[0];
rand_temp = rand()%10000;
LDAFea2[i].var[1] = (double)( rand_temp/10000.0 );
LDAFea2[i].var[1] = -4+8*LDAFea2[i].var[1];
rand_temp = rand()%10000;
LDAFea2[i].var[2] = (double)( rand_temp/10000.0 );
LDAFea2[i].var[2] = -4+8*LDAFea2[i].var[2]; fprintf(f, "%f, ", LDAFea2[i].mean[0]); fprintf(f, "%f, ", LDAFea2[i].mean[1]); fprintf(f, "%f, ", LDAFea2[i].mean[2]); fprintf(f, "%f, ", LDAFea2[i].std[0]); fprintf(f, "%f, ", LDAFea2[i].std[1]); fprintf(f, "%f, ", LDAFea2[i].std[2]); fprintf(f, "%f, ", LDAFea2[i].corrcoef[0]); fprintf(f, "%f, ", LDAFea2[i].corrcoef[1]); fprintf(f, "%f, ", LDAFea2[i].corrcoef[2]); fprintf(f, "%f, ", LDAFea2[i].mad[0]); fprintf(f, "%f, ", LDAFea2[i].mad[1]); fprintf(f, "%f, ", LDAFea2[i].mad[2]); fprintf(f, "%f, ", LDAFea2[i].rms[0]); fprintf(f, "%f, ", LDAFea2[i].rms[1]); fprintf(f, "%f, ", LDAFea2[i].rms[2]); fprintf(f, "%f, ", LDAFea2[i].var[0]); fprintf(f, "%f, ", LDAFea2[i].var[1]); fprintf(f, "%f\n", LDAFea2[i].var[2]); } for(i=0;i<25;i++) { rand_temp = rand()%10000;
LDAFea3[i].mean[0] = (double)( rand_temp/10000.0 );
LDAFea3[i].mean[0] = -4+8*LDAFea3[i].mean[0]; rand_temp = rand()%10000;
LDAFea3[i].mean[1] = (double)( rand_temp/10000.0 );
LDAFea3[i].mean[1] = -4+8*LDAFea3[i].mean[1];
rand_temp = rand()%10000;
LDAFea3[i].mean[2] = (double)( rand_temp/10000.0 );
LDAFea3[i].mean[2] = -4+8*LDAFea3[i].mean[2];
rand_temp = rand()%10000;
LDAFea3[i].std[0] = (double)( rand_temp/10000.0 );
LDAFea3[i].std[0] = -4+8*LDAFea3[i].std[0];
rand_temp = rand()%10000;
LDAFea3[i].std[1] = (double)( rand_temp/10000.0 );
LDAFea3[i].std[1] = -4+8*LDAFea3[i].std[1];
rand_temp = rand()%10000;
LDAFea3[i].std[2] = (double)( rand_temp/10000.0 );
LDAFea3[i].std[2] = -4+8*LDAFea3[i].std[2];
rand_temp = rand()%10000;
LDAFea3[i].corrcoef[0] = (double)( rand_temp/10000.0 );
LDAFea3[i].corrcoef[0] = -4+8*LDAFea3[i].corrcoef[0];
rand_temp = rand()%10000;
LDAFea3[i].corrcoef[1] = (double)( rand_temp/10000.0 );
LDAFea3[i].corrcoef[1] = -4+8*LDAFea3[i].corrcoef[1];
rand_temp = rand()%10000;
LDAFea3[i].corrcoef[2] = (double)( rand_temp/10000.0 );
LDAFea3[i].corrcoef[2] = -4+8*LDAFea3[i].corrcoef[2];
rand_temp = rand()%10000;
LDAFea3[i].mad[0] = (double)( rand_temp/10000.0 );
LDAFea3[i].mad[0] = -4+8*LDAFea3[i].mad[0];
rand_temp = rand()%10000;
LDAFea3[i].mad[1] = (double)( rand_temp/10000.0 );
LDAFea3[i].mad[1] = -4+8*LDAFea3[i].mad[1];
rand_temp = rand()%10000;
LDAFea3[i].mad[2] = (double)( rand_temp/10000.0 );
LDAFea3[i].mad[2] = -4+8*LDAFea3[i].mad[2];
rand_temp = rand()%10000;
LDAFea3[i].rms[0] = (double)( rand_temp/10000.0 );
LDAFea3[i].rms[0] = -4+8*LDAFea3[i].rms[0];
rand_temp = rand()%10000;
LDAFea3[i].rms[1] = (double)( rand_temp/10000.0 );
LDAFea3[i].rms[1] = -4+8*LDAFea3[i].rms[1];
rand_temp = rand()%10000;
LDAFea3[i].rms[2] = (double)( rand_temp/10000.0 );
LDAFea3[i].rms[2] = -4+8*LDAFea3[i].rms[2];
rand_temp = rand()%10000;
LDAFea3[i].var[0] = (double)( rand_temp/10000.0 );
LDAFea3[i].var[0] = -4+8*LDAFea3[i].var[0];
rand_temp = rand()%10000;
LDAFea3[i].var[1] = (double)( rand_temp/10000.0 );
LDAFea3[i].var[1] = -4+8*LDAFea3[i].var[1];
rand_temp = rand()%10000;
LDAFea3[i].var[2] = (double)( rand_temp/10000.0 );
LDAFea3[i].var[2] = -4+8*LDAFea3[i].var[2]; fprintf(f, "%f, ", LDAFea3[i].mean[0]); fprintf(f, "%f, ", LDAFea3[i].mean[1]); fprintf(f, "%f, ", LDAFea3[i].mean[2]); fprintf(f, "%f, ", LDAFea3[i].std[0]); fprintf(f, "%f, ", LDAFea3[i].std[1]); fprintf(f, "%f, ", LDAFea3[i].std[2]); fprintf(f, "%f, ", LDAFea3[i].corrcoef[0]); fprintf(f, "%f, ", LDAFea3[i].corrcoef[1]); fprintf(f, "%f, ", LDAFea3[i].corrcoef[2]); fprintf(f, "%f, ", LDAFea3[i].mad[0]); fprintf(f, "%f, ", LDAFea3[i].mad[1]); fprintf(f, "%f, ", LDAFea3[i].mad[2]); fprintf(f, "%f, ", LDAFea3[i].rms[0]); fprintf(f, "%f, ", LDAFea3[i].rms[1]); fprintf(f, "%f, ", LDAFea3[i].rms[2]); fprintf(f, "%f, ", LDAFea3[i].var[0]); fprintf(f, "%f, ", LDAFea3[i].var[1]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -