void Fft<std::complex<double> >::forward( const std::vector<std::complex<double> >& data, unsigned int fftSize, std::vector<std::complex<double> >& forwardResult) { queso_not_implemented(); std::complex<double> z = data[0]; z += 0.; // just to avoid icpc warnings unsigned int f = fftSize; f += 1; // just to avoid icpc warnings forwardResult[0] = 0.; // just to avoid icpc warnings #if 0 if (forwardResult.size() != fftSize) { forwardResult.resize(fftSize,std::complex<double>(0.,0.)); std::vector<std::complex<double> >(forwardResult).swap(forwardResult); } std::vector<double> internalData(fftSize,0.); unsigned int minSize = std::min((unsigned int) data.size(),fftSize); for (unsigned int j = 0; j < minSize; ++j) { internalData[j] = data[j]; } gsl_fft_real_workspace* realWkSpace = gsl_fft_real_workspace_alloc(fftSize); gsl_fft_real_wavetable* realWvTable = gsl_fft_real_wavetable_alloc(fftSize); gsl_fft_real_transform(&internalData[0], 1, fftSize, realWvTable, realWkSpace); gsl_fft_real_wavetable_free(realWvTable); gsl_fft_real_workspace_free(realWkSpace); unsigned int halfFFTSize = fftSize/2; double realPartOfFFT = 0.; double imagPartOfFFT = 0.; for (unsigned int j = 0; j < internalData.size(); ++j) { if (j == 0) { realPartOfFFT = internalData[j]; imagPartOfFFT = 0.; } else if (j < halfFFTSize) { realPartOfFFT = internalData[2*j-1]; imagPartOfFFT = internalData[2*j ]; } else if (j == halfFFTSize) { realPartOfFFT = internalData[2*j-1]; imagPartOfFFT = 0.; } else { realPartOfFFT = internalData[2*(fftSize-j)-1]; imagPartOfFFT = -internalData[2*(fftSize-j) ]; } forwardResult[j] = std::complex<double>(realPartOfFFT,imagPartOfFFT); } #endif return; }
void ImportControlNetWorkOrder::syncRedo() { QDir cnetFolder = project()->addCnetFolder("controlNetworks"); QStringList cnetFileNames = internalData(); QList< QPair<FileName, Progress *> > cnetFileNamesAndProgress; foreach (FileName fileName, cnetFileNames) { Progress *readProgress = new Progress; cnetFileNamesAndProgress.append(qMakePair(fileName, readProgress)); readProgress->DisableAutomaticDisplay(); m_readProgresses.append(readProgress); }
void Fft<double>::inverse( const std::vector<double>& data, unsigned int fftSize, std::vector<std::complex<double> >& inverseResult) { if (inverseResult.size() != fftSize) { inverseResult.resize(fftSize,std::complex<double>(0.,0.)); std::vector<std::complex<double> >(inverseResult).swap(inverseResult); } std::vector<double> internalData(2*fftSize,0.); // Yes, twice the fftSize unsigned int minSize = std::min((unsigned int) data.size(),fftSize); for (unsigned int j = 0; j < minSize; ++j) { internalData[2*j] = data[j]; } //if (m_subDisplayFile()) { // *m_subDisplayFile() << "In Fft<double>::inverse()" // << ": about to call gsl_fft_complex_inverse()" // << " with fftSize = " << fftSize // << "; internalData.size() = " << internalData.size() // << std::endl; //} gsl_fft_complex_workspace* complexWkSpace = gsl_fft_complex_workspace_alloc(fftSize); gsl_fft_complex_wavetable* complexWvTable = gsl_fft_complex_wavetable_alloc(fftSize); gsl_fft_complex_inverse(&internalData[0], 1, fftSize, complexWvTable, complexWkSpace); gsl_fft_complex_wavetable_free(complexWvTable); gsl_fft_complex_workspace_free(complexWkSpace); //if (m_subDisplayFile()) { // *m_subDisplayFile() << "In Fft<double>::inverse()" // << ": returned from gsl_fft_complex_inverse()" // << " with fftSize = " << fftSize // << "; inverseResult.size() = " << inverseResult.size() // << std::endl; //} for (unsigned int j = 0; j < fftSize; ++j) { inverseResult[j] = std::complex<double>(internalData[2*j],internalData[2*j+1]); } return; }
bool ImportControlNetWorkOrder::execute() { WorkOrder::execute(); QStringList cnetFileNames = QFileDialog::getOpenFileNames( qobject_cast<QWidget *>(parent()), tr("Import Control Networks"), "", tr("Isis control nets (*.net);;All Files (*)")); if (!cnetFileNames.isEmpty()) { QUndoCommand::setText(tr("Import %1 Control Networks").arg(cnetFileNames.count())); } setInternalData(cnetFileNames); return internalData().count() > 0; }
void Fft<std::complex<double> >::inverse( const std::vector<std::complex<double> >& data, unsigned int fftSize, std::vector<std::complex<double> >& inverseResult) { if (inverseResult.size() != fftSize) { inverseResult.resize(fftSize,std::complex<double>(0.,0.)); std::vector<std::complex<double> >(inverseResult).swap(inverseResult); } std::vector<double> internalData(2*fftSize,0.); // Yes, twice the fftSize unsigned int minSize = 2 * std::min((unsigned int) data.size(),fftSize); // Yes, 2* for (unsigned int j = 0; j < minSize; ++j) { internalData[2*j ] = data[j].real(); internalData[2*j+1] = data[j].imag(); } gsl_fft_complex_workspace* complexWkSpace = gsl_fft_complex_workspace_alloc(fftSize); gsl_fft_complex_wavetable* complexWvTable = gsl_fft_complex_wavetable_alloc(fftSize); gsl_fft_complex_inverse(&internalData[0], 1, fftSize, complexWvTable, complexWkSpace); gsl_fft_complex_wavetable_free(complexWvTable); gsl_fft_complex_workspace_free(complexWkSpace); for (unsigned int j = 0; j < fftSize; ++j) { inverseResult[j] = std::complex<double>(internalData[2*j],internalData[2*j+1]); } return; }
QVariant ApplicationFileModel::data(const QModelIndex &index, int role) const { return internalData(index, role); }
void Fft<double>::forward( const std::vector<double>& data, unsigned int fftSize, std::vector<std::complex<double> >& forwardResult) { if (forwardResult.size() != fftSize) { forwardResult.resize(fftSize,std::complex<double>(0.,0.)); std::vector<std::complex<double> >(forwardResult).swap(forwardResult); } std::vector<double> internalData(fftSize,0.); unsigned int minSize = std::min((unsigned int) data.size(),fftSize); for (unsigned int j = 0; j < minSize; ++j) { internalData[j] = data[j]; } //double sumOfAllTerms = 0.; //for (unsigned int j = 0; j < fftSize; ++j) { // sumOfAllTerms += internalData[j]; //} //allocTables(fftSize); gsl_fft_real_workspace* realWkSpace = gsl_fft_real_workspace_alloc(fftSize); gsl_fft_real_wavetable* realWvTable = gsl_fft_real_wavetable_alloc(fftSize); gsl_fft_real_transform(&internalData[0], 1, fftSize, realWvTable, realWkSpace); gsl_fft_real_wavetable_free(realWvTable); gsl_fft_real_workspace_free(realWkSpace); //freeTables(); //std::cout << "After FFT" // << ", sumOfAllTerms = " << sumOfAllTerms // << ", sumOfAllTerms - dft[0] = " << sumOfAllTerms - internalData[0] // << std::endl; unsigned int halfFFTSize = fftSize/2; double realPartOfFFT = 0.; double imagPartOfFFT = 0.; for (unsigned int j = 0; j < internalData.size(); ++j) { if (j == 0) { realPartOfFFT = internalData[j]; imagPartOfFFT = 0.; } else if (j < halfFFTSize) { realPartOfFFT = internalData[2*j-1]; imagPartOfFFT = internalData[2*j ]; } else if (j == halfFFTSize) { realPartOfFFT = internalData[2*j-1]; imagPartOfFFT = 0.; } else { realPartOfFFT = internalData[2*(fftSize-j)-1]; imagPartOfFFT = -internalData[2*(fftSize-j) ]; } forwardResult[j] = std::complex<double>(realPartOfFFT,imagPartOfFFT); } return; }