summaryrefslogtreecommitdiff
path: root/OASIS/c/src/ekd_pca.h
diff options
context:
space:
mode:
authorEric Dao <eric@erickhangdao.com>2023-05-12 14:09:07 -0400
committerEric Dao <eric@erickhangdao.com>2023-05-12 14:09:07 -0400
commit191e4bd8beae134295d481773823142d2fdc6a98 (patch)
treeaaca4e7f8e229f9bd551d9bb1583b8ecd7a59d4a /OASIS/c/src/ekd_pca.h
parent186daed7e179241377c117e9d208ccd301d4d712 (diff)
downloadura-master.tar.gz
ura-master.tar.bz2
ura-master.zip
refactored tool chain setup, able to debug and run from vscode nowHEADmaster
Diffstat (limited to 'OASIS/c/src/ekd_pca.h')
-rw-r--r--OASIS/c/src/ekd_pca.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/OASIS/c/src/ekd_pca.h b/OASIS/c/src/ekd_pca.h
new file mode 100644
index 0000000..842e485
--- /dev/null
+++ b/OASIS/c/src/ekd_pca.h
@@ -0,0 +1,38 @@
+#ifndef EKD_PCA_H
+#define EKD_PCA_H
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+#include "ekd_blas.h"
+
+#define NUM_DNEG_IMAGES 134
+#define NUM_DPOS_IMAGES 99
+#define NUM_IMAGES 233
+#define IMAGE_WIDTH 144
+#define IMAGE_HEIGHT 176
+#define FEATURE_VECTOR_SIZE 25344
+#define MAX_ITERATIONS 100
+#define TOLERANCE 1e-3
+
+typedef enum {
+ MEAN_UNIT_VARIANCE,
+ MEAN
+} centre_scale_operation_e;
+
+// Prototypes
+void centre_scale(float** input_matrix, uint32_t rows, uint32_t cols, centre_scale_operation_e operation);
+void covariance(float** input_matrix, uint32_t rows, uint32_t cols, float** covariance_matrix);
+void house_holder_vector(float* input_vector, uint32_t size);
+void house_holder_transformation(float* house_holder_vector, uint32_t size, float** house_holder_matrix);
+void qr_decomposition(float** input_matrix, uint32_t size, float** resultant_matrix);
+void qr_algorithm(float** input_matrix, uint32_t rows, uint32_t cols, float** resultant_matrix);
+void power_iteration(float** input_matrix, uint32_t size, float* eigen_vector);
+float eigen_value_compute(float* eigen_vector, float** input_matrix, uint32_t size);
+void subtract_eigen(float* eigen_vector, float** input_matrix, float** resultant_matrix, float eigen_value, uint32_t size);
+void pca_covariance_method(float** input_matrix, uint32_t rows, uint32_t cols, float** resultant_matrix, uint32_t components);
+
+#endif /* EKD_PCA_H */ \ No newline at end of file