| @@ -32,6 +32,7 @@ typedef struct PCA{ | |||||
| int n; | int n; | ||||
| double *covariance; | double *covariance; | ||||
| double *mean; | double *mean; | ||||
| double *z; | |||||
| }PCA; | }PCA; | ||||
| PCA *ff_pca_init(int n){ | PCA *ff_pca_init(int n){ | ||||
| @@ -41,6 +42,7 @@ PCA *ff_pca_init(int n){ | |||||
| pca= av_mallocz(sizeof(PCA)); | pca= av_mallocz(sizeof(PCA)); | ||||
| pca->n= n; | pca->n= n; | ||||
| pca->z = av_malloc(sizeof(*pca->z) * n); | |||||
| pca->count=0; | pca->count=0; | ||||
| pca->covariance= av_mallocz(sizeof(double)*n*n); | pca->covariance= av_mallocz(sizeof(double)*n*n); | ||||
| pca->mean= av_mallocz(sizeof(double)*n); | pca->mean= av_mallocz(sizeof(double)*n); | ||||
| @@ -51,6 +53,7 @@ PCA *ff_pca_init(int n){ | |||||
| void ff_pca_free(PCA *pca){ | void ff_pca_free(PCA *pca){ | ||||
| av_freep(&pca->covariance); | av_freep(&pca->covariance); | ||||
| av_freep(&pca->mean); | av_freep(&pca->mean); | ||||
| av_freep(&pca->z); | |||||
| av_free(pca); | av_free(pca); | ||||
| } | } | ||||
| @@ -70,7 +73,7 @@ int ff_pca(PCA *pca, double *eigenvector, double *eigenvalue){ | |||||
| int i, j, pass; | int i, j, pass; | ||||
| int k=0; | int k=0; | ||||
| const int n= pca->n; | const int n= pca->n; | ||||
| double z[n]; | |||||
| double *z = pca->z; | |||||
| memset(eigenvector, 0, sizeof(double)*n*n); | memset(eigenvector, 0, sizeof(double)*n*n); | ||||