-
Kristoffer Tondel authoredKristoffer Tondel authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
DFT.cc 1.73 KiB
#include <complex>
#include <cmath>
#include <iomanip>
#include "DFT.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std::complex_literals;
int main()
{
// inFile innehåller uHatt data och outFile är resulterande filen
std::string inFile{"sinusKoefficenter.txt"};
std::string outFile{"sinusFHat.txt"};
// Definerar omega,my och n
double omega{1};
std::complex<double> my{std::exp(1i * omega)};
int const n{20};
std::complex<double> F[n][n];
std::complex<double> fHat[n];
std::complex<double> uHat[n];
std::string dataLine;
std::ifstream myfile (inFile);
int loop = 0;
std::complex<double> temperaryNumber;
if (myfile.is_open())
{
while (std::getline (myfile,dataLine) )
{
std::istringstream is(dataLine);
is >> temperaryNumber;
uHat[loop] = temperaryNumber;
loop++;
}
myfile.close();
}
// Behövs för att skriva få rätt format på raderna i filename2
std::ostringstream strConverter;
std::string output;
std::ofstream dataFile;
dataFile.open(outFile);
// Sätter önskad antal decimaler
dataFile << std::fixed << std::setprecision(2);
for(int i = 0; i<n; i++)
{
for(int j = 0; j<n; j++)
{
std::complex<double> exponent = static_cast<double> (i*j);
F[j][i] = std::pow(my,exponent);
fHat[i] = fHat[i] + F[j][i]*uHat[i];
}
strConverter.str("");
strConverter << fHat[i];
output = strConverter.str().substr(1, strConverter.str().size() - 2);
dataFile << output << '\n';
}
dataFile.close();
std::cout << "done"<<'\n';
return 0;
}
DFT::DFT()
{
}