Skip to content
Snippets Groups Projects
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()
{
}