Lines Matching refs:pca
28 #include "pca.h"
39 PCA *pca;
43 pca= av_mallocz(sizeof(*pca));
44 pca->n= n;
45 pca->z = av_malloc_array(n, sizeof(*pca->z));
46 pca->count=0;
47 pca->covariance= av_calloc(n*n, sizeof(double));
48 pca->mean= av_calloc(n, sizeof(double));
50 return pca;
53 void ff_pca_free(PCA *pca){
54 av_freep(&pca->covariance);
55 av_freep(&pca->mean);
56 av_freep(&pca->z);
57 av_free(pca);
60 void ff_pca_add(PCA *pca, double *v){
62 const int n= pca->n;
65 pca->mean[i] += v[i];
67 pca->covariance[j + i*n] += v[i]*v[j];
69 pca->count++;
72 int ff_pca(PCA *pca, double *eigenvector, double *eigenvalue){
75 const int n= pca->n;
76 double *z = pca->z;
81 pca->mean[j] /= pca->count;
84 pca->covariance[j + i*n] /= pca->count;
85 pca->covariance[j + i*n] -= pca->mean[i] * pca->mean[j];
86 pca->covariance[i + j*n] = pca->covariance[j + i*n];
88 eigenvalue[j]= pca->covariance[j + j*n];
97 sum += fabs(pca->covariance[j + i*n]);
121 double covar= pca->covariance[j + i*n];
129 pca->covariance[j + i*n]=0.0;
151 ROTATE(pca->covariance,FFMIN(k,i),FFMAX(k,i),FFMIN(k,j),FFMAX(k,j))
155 pca->covariance[j + i*n]=0.0;
175 PCA *pca;
184 pca= ff_pca_init(LEN);
205 ff_pca_add(pca, v);
209 ff_pca(pca, eigenvector, eigenvalue);
211 pca->count= 1;
212 pca->mean[i]= 0;
217 // pca.covariance[i + i*LEN]= pow(0.5, fabs
219 printf("%f ", pca->covariance[i + j*LEN]);
230 v[j] += pca->covariance[FFMIN(k,j) + FFMAX(k,j)*LEN] * eigenvector[i + k*LEN];