SSCP Eigen_and_SSCP_project (I, SSCP thee) { try { iam (Eigen); if (thy numberOfRows != my dimension) { Melder_throw (U"SSCP_and_Eigen_project: dimensions don't agree."); } autoSSCP him = SSCP_create (my numberOfEigenvalues); Eigen_and_SSCP_project_ (me, thee, him.peek()); return him.transfer(); } catch (MelderError) { Melder_throw (U"SSCP not projected."); } }
autoDiscriminant Discriminant_create (long numberOfGroups, long numberOfEigenvalues, long dimension) { try { autoDiscriminant me = Thing_new (Discriminant); my eigen = Eigen_create (numberOfEigenvalues, dimension); my numberOfGroups = numberOfGroups; my groups = SSCPList_create (); my total = SSCP_create (dimension); my aprioriProbabilities = NUMvector<double> (1, numberOfGroups); my costs = NUMmatrix<double> (1, numberOfGroups, 1, numberOfGroups); return me; } catch (MelderError) { Melder_throw (U"Discriminant not created."); } }