autoDiagonalizer CrossCorrelationTables_to_Diagonalizer (CrossCorrelationTables me, long maxNumberOfIterations, double tol, int method) { try { CrossCorrelationTable him = (CrossCorrelationTable) my item[1]; autoDiagonalizer thee = Diagonalizer_create (his numberOfColumns); Diagonalizer_and_CrossCorrelationTables_improveDiagonality (thee.peek(), me, maxNumberOfIterations, tol, method); return thee; } catch (MelderError) { Melder_throw (U"Diagonalizer not created from CrossCorrelationTables."); }; }
autoDiagonalizer CrossCorrelationTableList_to_Diagonalizer (CrossCorrelationTableList me, long maxNumberOfIterations, double tol, int method) { try { Melder_assert (my size > 0); CrossCorrelationTable him = my at [1]; autoDiagonalizer thee = Diagonalizer_create (his numberOfColumns); Diagonalizer_and_CrossCorrelationTableList_improveDiagonality (thee.get(), me, maxNumberOfIterations, tol, method); return thee; } catch (MelderError) { Melder_throw (U"Diagonalizer not created from CrossCorrelationTableList."); }; }
autoDiagonalizer MixingMatrix_to_Diagonalizer (MixingMatrix me) { try { if (my numberOfRows != my numberOfColumns) { Melder_throw (U"The number of channels and the number of components must be equal."); } autoDiagonalizer thee = Diagonalizer_create (my numberOfRows); NUMpseudoInverse (my data, my numberOfRows, my numberOfColumns, thy data, 0); return thee; } catch (MelderError) { Melder_throw (me, U": no Diagonalizer created."); } }