autoCrossCorrelationTables CrossCorrelationTables_and_Diagonalizer_diagonalize (CrossCorrelationTables me, Diagonalizer thee) { try { autoCrossCorrelationTables him = CrossCorrelationTables_create (); for (long i = 1; i <= my size; i++) { CrossCorrelationTable item = (CrossCorrelationTable) my item[i]; autoCrossCorrelationTable ct = CrossCorrelationTable_and_Diagonalizer_diagonalize (item, thee); Collection_addItem_move (him.peek(), ct.move()); } return him; } catch (MelderError) { Melder_throw (U"CrossCorrelationTables not diagonalized."); } }
autoCrossCorrelationTableList CrossCorrelationTableList_and_Diagonalizer_diagonalize (CrossCorrelationTableList me, Diagonalizer thee) { try { autoCrossCorrelationTableList him = CrossCorrelationTableList_create (); for (long i = 1; i <= my size; i ++) { CrossCorrelationTable item = my at [i]; autoCrossCorrelationTable ct = CrossCorrelationTable_and_Diagonalizer_diagonalize (item, thee); his addItem_move (ct.move()); } return him; } catch (MelderError) { Melder_throw (U"CrossCorrelationTableList not diagonalized."); } }
FORM (CrossCorrelationTables_and_Diagonalizer_getDiagonalityMeasure, L"CrossCorrelationTables & Diagonalizer: Get diagonality measure", 0) NATURAL (L"First table", L"1") NATURAL (L"Last table", L"100") OK DO CrossCorrelationTables ccts = FIRST (CrossCorrelationTables); Diagonalizer d = FIRST (Diagonalizer); double dm = CrossCorrelationTables_and_Diagonalizer_getDiagonalityMeasure (ccts, d, 0, GET_INTEGER (L"First table"), GET_INTEGER (L"Last table")); Melder_information (Melder_double (dm), L" (= average sum of squared off-diagonal elements)"); END DIRECT (CrossCorrelationTable_and_Diagonalizer_diagonalize) CrossCorrelationTable cct = FIRST (CrossCorrelationTable); Diagonalizer d = FIRST (Diagonalizer); praat_new (CrossCorrelationTable_and_Diagonalizer_diagonalize (cct, d), cct->name, L"_", d->name); END DIRECT (CrossCorrelationTables_and_Diagonalizer_diagonalize) CrossCorrelationTables ccts = FIRST (CrossCorrelationTables); Diagonalizer d = FIRST (Diagonalizer); praat_new (CrossCorrelationTables_and_Diagonalizer_diagonalize (ccts, d), ccts->name, L"_", d->name); END FORM (CrossCorrelationTables_and_MixingMatrix_improveUnmixing, L"", 0) LABEL (L"", L"Iteration parameters") NATURAL (L"Maximum number of iterations", L"100") POSITIVE (L"Tolerance", L"0.001") OPTIONMENU (L"Diagonalization method", 2) OPTION (L"qdiag") OPTION (L"ffdiag")
FORM (CrossCorrelationTableList_and_Diagonalizer_getDiagonalityMeasure, U"CrossCorrelationTableList & Diagonalizer: Get diagonality measure", nullptr) NATURAL (U"First table", U"1") NATURAL (U"Last table", U"100") OK DO CrossCorrelationTableList ccts = FIRST (CrossCorrelationTableList); Diagonalizer d = FIRST (Diagonalizer); double dm = CrossCorrelationTableList_and_Diagonalizer_getDiagonalityMeasure (ccts, d, 0, GET_INTEGER (U"First table"), GET_INTEGER (U"Last table")); Melder_information (dm, U" (= average sum of squared off-diagonal elements)"); END DIRECT (CrossCorrelationTable_and_Diagonalizer_diagonalize) CrossCorrelationTable cct = FIRST (CrossCorrelationTable); Diagonalizer d = FIRST (Diagonalizer); autoCrossCorrelationTable thee = CrossCorrelationTable_and_Diagonalizer_diagonalize (cct, d); praat_new (thee.move(), cct -> name, U"_", d -> name); END DIRECT (CrossCorrelationTableList_and_Diagonalizer_diagonalize) CrossCorrelationTableList ccts = FIRST (CrossCorrelationTableList); Diagonalizer d = FIRST (Diagonalizer); autoCrossCorrelationTableList thee = CrossCorrelationTableList_and_Diagonalizer_diagonalize (ccts, d); praat_new (thee.move(), ccts->name, U"_", d->name); END FORM (CrossCorrelationTableList_and_MixingMatrix_improveUnmixing, U"", nullptr) LABEL (U"", U"Iteration parameters") NATURAL (U"Maximum number of iterations", U"100") POSITIVE (U"Tolerance", U"0.001") OPTIONMENU (U"Diagonalization method", 2)