From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../Aufgabenblatt1/DFTApp/src/DFTProcessor.cpp | 167 +++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 Master/Modellbildung_und_Simulation/Aufgabenblatt1/DFTApp/src/DFTProcessor.cpp (limited to 'Master/Modellbildung_und_Simulation/Aufgabenblatt1/DFTApp/src/DFTProcessor.cpp') diff --git a/Master/Modellbildung_und_Simulation/Aufgabenblatt1/DFTApp/src/DFTProcessor.cpp b/Master/Modellbildung_und_Simulation/Aufgabenblatt1/DFTApp/src/DFTProcessor.cpp new file mode 100644 index 0000000..97571f9 --- /dev/null +++ b/Master/Modellbildung_und_Simulation/Aufgabenblatt1/DFTApp/src/DFTProcessor.cpp @@ -0,0 +1,167 @@ +/* + * DFTProcessor.cpp + * + * Created on: 29.04.2011 + * Author: sven + */ +#ifndef DFTPROCESSOR_H_ + #include "DFTProcessor.h" +#endif + +#ifndef _GLIBCXX_IOSTREAM + #include +#endif + +#ifndef _GLIBCXX_FSTREAM + #include +#endif + +#include +#include +#include +#include + +const double PI = 3.14159265358979323846264338327950288419716939; + +const char* ORIG_FILENAME = "orig.wav"; +const char* IDFT_FILENAME = "idft.wav"; + +DFTProcessor::DFTProcessor(DFTAppParameters& params) +:mParams(params) +,mNumDftSamples(mParams.getNumSamples() / 2) +,mInputData(mParams.getNumSamples()) +,mRe(mNumDftSamples) +,mIm(mNumDftSamples) +,mIdft(mParams.getNumSamples()) +{ + std::cout << "DFT processing " << mParams.getNumSamples() << + " samples of" << mParams.getInputFilename() << std::endl; + std::ifstream inFile; + std::ofstream origFile; + std::ofstream idftFile; + inFile.open(mParams.getInputFilename().c_str(), std::ios::in | std::ios::binary); + origFile.open(ORIG_FILENAME, std::ios::out | std::ios::binary); + idftFile.open(IDFT_FILENAME, std::ios::out | std::ios::binary); + int dataStartOffset = 0x2C; + char header[dataStartOffset]; + inFile.read(&header[0],dataStartOffset); + memcpy(&mSampleRate,((&header[0])+0x18),4); + origFile.write((char*) &header[0],dataStartOffset); + idftFile.write((char*) &header[0],dataStartOffset); + short data; + std::cout << "Original file:" << std::endl; + for (unsigned i=0;i::const_iterator specIter; + for(specIter = mSpectrum.begin() ; specIter != mSpectrum.end() ; specIter++) { + const SpectralData& actSpec = *specIter; + if (specIter != mSpectrum.begin()) { + csvFile << std::endl; + } + csvFile << actSpec.mFreq << ";"; + csvFile << std::setprecision (12) << std::fixed << actSpec.mAmplitude; + csvFile << ";"; + csvFile << std::setprecision (12) << std::fixed << actSpec.mPhase; + } + csvFile.close(); +} + +void DFTProcessor::startGnuPlot() +{ + int i = system("gnuplot spectrum.plt -p"); + if (i != 0) { + std::cerr << "Error starting gnuplot: " << i << std::endl; + } +} -- cgit v1.2.3