void KstCSD::commonConstructor(const QString& in_tag, KstVectorPtr in_V, double in_freq, bool in_average, bool in_removeMean, bool in_apodize, ApodizeFunction in_apodizeFxn, int in_windowSize, int in_averageLength, double in_gaussianSigma, const QString& in_vectorUnits, const QString& in_rateUnits, PSDType in_outputType, const QString& vecName) { _typeString = i18n("Cumulative Spectral Decay"); _inputVectors[INVECTOR] = in_V; setTagName(in_tag); _frequency = in_freq; _average = in_average; _apodize = in_apodize; _windowSize = in_windowSize; _apodizeFxn = in_apodizeFxn; _gaussianSigma = in_gaussianSigma; _removeMean = in_removeMean; _averageLength = in_averageLength; _vectorUnits = in_vectorUnits; _rateUnits = in_rateUnits; _outputType = in_outputType; if (_frequency <= 0.0) { _frequency = 1.0; } KstMatrixPtr outMatrix = new KstMatrix(in_tag+"-csd", this, 1, 1); outMatrix->setLabel(i18n("Power [%1/%2^{1/2}]").arg(_vectorUnits).arg(_rateUnits)); outMatrix->setXLabel(i18n("%1 [%2]").arg(vecName).arg(_vectorUnits)); outMatrix->setYLabel(i18n("Frequency [%1]").arg(_rateUnits)); _outMatrix = _outputMatrices.insert(OUTMATRIX, outMatrix); KST::addMatrixToList(outMatrix); updateMatrixLabels(); (*_outMatrix)->setDirty(); }
void KstCSD::commonConstructor(const QString& in_tag, KstVectorPtr in_V, double in_freq, bool in_average, bool in_removeMean, bool in_apodize, int in_apodizeFxn, int in_windowSize, int in_length, double in_gaussianSigma, const QString& in_vectorUnits, const QString& in_rateUnits, const QString& vecName) { _typeString = i18n("Cumulative Spectral Decay"); _inputVectors[INVECTOR] = in_V; setTagName(in_tag); _frequency = in_freq; _average = in_average; _apodize = in_apodize; _windowSize = in_windowSize; _apodizeFxn = in_apodizeFxn; _gaussianSigma = in_gaussianSigma; _removeMean = in_removeMean; _length = in_length; _vectorUnits = in_vectorUnits; _rateUnits = in_rateUnits; if (!_average) { _length = int(ceil(log(_windowSize)/log(2.0))); } if (_length < 2) { _length = 2; } if (_length > KSTCSDMAXLEN) { _length = KSTCSDMAXLEN; } if (_frequency <= 0.0) { _frequency = 1.0; } int psdLength = int(pow(2.0, (double)(_length-1))); KstMatrixPtr outMatrix = new KstMatrix(in_tag+"-csd", psdLength, 1); outMatrix->setLabel(i18n("Power [%1/%2^{1/2}]").arg(_vectorUnits).arg(_rateUnits)); outMatrix->setXLabel(i18n("%1 [%2]").arg(vecName).arg(_vectorUnits)); outMatrix->setYLabel(i18n("Frequency [%1]").arg(_rateUnits)); if (outMatrix->sampleCount() != psdLength) { _length = 1; KstDebug::self()->log(i18n("Attempted to create a CSD that used all memory."), KstDebug::Error); } outMatrix->setProvider(this); _outMatrix = _outputMatrices.insert(OUTMATRIX, outMatrix); KST::addMatrixToList(outMatrix); (*_outMatrix)->setDirty(); }
void KstCSD::commonConstructor(const QString& in_tag, KstVectorPtr in_V, double in_freq, bool in_average, bool in_removeMean, bool in_apodize, ApodizeFunction in_apodizeFxn, int in_windowSize, int in_averageLength, double in_gaussianSigma, const QString& in_vectorUnits, const QString& in_rateUnits, PSDType in_outputType, bool in_interpolateHoles, const QString& vecName) { _typeString = i18n("Spectrogram"); _type = "Spectrogram"; _inputVectors[INVECTOR] = in_V; setTagName(KstObjectTag::fromString(in_tag)); _frequency = in_freq; _average = in_average; _apodize = in_apodize; _windowSize = in_windowSize; _apodizeFxn = in_apodizeFxn; _gaussianSigma = in_gaussianSigma; _removeMean = in_removeMean; _averageLength = in_averageLength; _vectorUnits = in_vectorUnits; _rateUnits = in_rateUnits; _outputType = in_outputType; _interpolateHoles = in_interpolateHoles; if (_frequency <= 0.0) { _frequency = 1.0; } { KstWriteLocker blockMatrixUpdates(&KST::matrixList.lock()); KstMatrixPtr outMatrix = new KstMatrix(KstObjectTag("csd", tag()), this, 1, 1); outMatrix->setLabel(i18n("Power [%1/%2^{1/2}]").arg(_vectorUnits).arg(_rateUnits)); outMatrix->setXLabel(i18n("%1 [%2]").arg(vecName).arg(_vectorUnits)); outMatrix->setYLabel(i18n("Frequency [%1]").arg(_rateUnits)); _outMatrix = _outputMatrices.insert(OUTMATRIX, outMatrix); } updateMatrixLabels(); (*_outMatrix)->setDirty(); }