public static bool ResizeMatrix(Kalman k, double[,] m, KALMAN_RESIZE f) { int r = k.T; int c = 0; if (f == KALMAN_RESIZE.E) { c = k.n; } else if (f == KALMAN_RESIZE.V) { c = (k.n * k.n + k.n) / 2; } else if (f == KALMAN_RESIZE.BIG_S) { c = k.r; } else if (f == KALMAN_RESIZE.BIG_P) { c = (k.r * k.r + k.r) / 2; } else if (f == KALMAN_RESIZE.LL) { c = 1; } else if (f == KALMAN_RESIZE.K) { c = k.r * k.n; } else { return(false); } m = null; if (m.GetLength(0) != r || m.GetLength(1) != c) { m = new double[r, c]; } return(m != null); }
public static bool CheckMatrix(Kalman k, double[,] m, KALMAN_CHECK f) { int r = 0; int c = 0; bool symm = (f == KALMAN_CHECK.Q || f == KALMAN_CHECK.R); if (f == KALMAN_CHECK.F || f == KALMAN_CHECK.Q || f == KALMAN_CHECK.P) { r = c = k.r; } else if (f == KALMAN_CHECK.A) { r = k.k; c = k.n; } else if (f == KALMAN_CHECK.H) { r = k.r; c = k.n; } else if (f == KALMAN_CHECK.R) { r = c = k.n; } else if (f == KALMAN_CHECK.S || f == KALMAN_CHECK.m) { r = k.r; c = 1; } if (m.GetLength(0) != r || m.GetLength(1) != c) { return(false); } else if (symm) { return(false); } return(true); }