GenSVM
gensvm_simplex.c
Go to the documentation of this file.
1 
31 #include "gensvm_simplex.h"
32 
44 void gensvm_simplex(struct GenModel *model)
45 {
46  long i, j, K = model->K;
47 
48  for (i=0; i<K; i++) {
49  for (j=0; j<K-1; j++) {
50  if (i <= j) {
51  matrix_set(model->U, K-1, i, j,
52  -1.0/sqrt(2.0*(j+1)*(j+2)));
53  } else if (i == j+1) {
54  matrix_set(model->U, K-1, i, j,
55  sqrt((j+1)/(2.0*(j+2))));
56  } else {
57  matrix_set(model->U, K-1, i, j, 0.0);
58  }
59  }
60  }
61 }
62 
82 void gensvm_simplex_diff(struct GenModel *model)
83 {
84  long i, j, l, K = model->K;
85  double value;
86 
87  // UU is a 2D block matrix, where block i has the differences:
88  // U(i, :) - U(j, :) for all j
89  for (i=0; i<K; i++) {
90  for (j=0; j<K; j++) {
91  for (l=0; l<K-1; l++) {
92  value = matrix_get(model->U, K-1, i, l);
93  value -= matrix_get(model->U, K-1, j, l);
94  matrix_set(model->UU, K-1, i*K+j, l, value);
95  }
96  }
97  }
98 }
void gensvm_simplex(struct GenModel *model)
Generate matrix of simplex vertex coordinates.
double * UU
simplex difference matrix
Definition: gensvm_base.h:122
#define matrix_get(M, cols, i, j)
void gensvm_simplex_diff(struct GenModel *model)
Generate the simplex difference matrix.
A structure to represent a single GenSVM model.
Definition: gensvm_base.h:92
double * U
simplex matrix
Definition: gensvm_base.h:120
Header file for gensvm_simplex.c.
long K
number of classes in the dataset
Definition: gensvm_base.h:95
#define matrix_set(M, cols, i, j, val)