void BandFilterSpectrogram_and_PCA_drawComponent (BandFilterSpectrogram me, PCA thee, Graphics g, long component, double dblevel, double frequencyOffset, double scale, double tmin, double tmax, double fmin, double fmax) { if (component < 1 || component > thy numberOfEigenvalues) { Melder_throw (U"Component too large."); } // Scale Intensity autoBandFilterSpectrogram fcopy = (BandFilterSpectrogram) Data_copy (me); BandFilterSpectrogram_equalizeIntensities (fcopy.peek(), dblevel); autoMatrix mdb = Spectrogram_to_Matrix_dB ((Spectrogram) fcopy.peek(), BandFilterSpectrogram_DBREF, BandFilterSpectrogram_DBFAC, BandFilterSpectrogram_DBFLOOR); autoMatrix him = Eigen_and_Matrix_project (thee, mdb.peek(), component); for (long j = 1; j <= my nx; j++) { his z[component][j] = frequencyOffset + scale * his z[component][j]; } Matrix_drawRows (him.peek(), g, tmin, tmax, component - 0.5, component + 0.5, fmin, fmax); }
void FilterBank_and_PCA_drawComponent (I, PCA thee, Graphics g, long component, double dblevel, double frequencyOffset, double scale, double tmin, double tmax, double fmin, double fmax) { iam (FilterBank); if (component < 1 || component > thy numberOfEigenvalues) { Melder_throw (U"Component too large."); } // Scale Intensity autoFilterBank fcopy = (FilterBank) Data_copy (me); FilterBank_equalizeIntensities (fcopy.peek(), dblevel); autoMatrix him = Eigen_and_Matrix_project (thee, fcopy.peek(), component); for (long j = 1; j <= my nx; j++) { fcopy -> z[component][j] = frequencyOffset + scale * fcopy -> z[component][j]; } Matrix_drawRows (fcopy.peek(), g, tmin, tmax, component - 0.5, component + 0.5, fmin, fmax); }