2 changed files with 56 additions and 16 deletions
@ -1,13 +1,50 @@ |
|||||
#include <math.hpp> |
#include <math.hpp> |
||||
#include <cmath> |
#include <cmath> |
||||
|
#include <fstream> |
||||
|
#include <ctime> |
||||
|
|
||||
|
void create_plot_file(std::string filename, const math::csignal& tfd) { |
||||
|
std::ofstream data_file(filename + ".data"); |
||||
|
for (int i=0; i<tfd.size(); ++i) { |
||||
|
data_file << tfd[i].real() |
||||
|
<< " " |
||||
|
<< tfd[i].imag() |
||||
|
<< std::endl; |
||||
|
} |
||||
|
data_file.close(); |
||||
|
} |
||||
|
|
||||
int main(int argc, char** argv) { |
int main(int argc, char** argv) { |
||||
math::csignal s; |
math::csignal s; |
||||
|
double fe = 6000; |
||||
|
double f0 = 400; |
||||
|
int n = 30; |
||||
|
if (argc > 1) { |
||||
|
n = atoi(argv[1]); |
||||
|
} |
||||
|
|
||||
for (int i=0; i<100; ++i) { |
for (int i=0; i<100; ++i) { |
||||
s.push_back(std::sin(2*math::pi()*50*i/100)); |
s.push_back(math::complex(std::sin(2*math::pi()*f0*float(i)/fe), 0)); |
||||
} |
} |
||||
math::csignal tfd = math::fft(s); |
|
||||
|
|
||||
|
math::csignal tfd; |
||||
|
clock_t begin = std::clock(); |
||||
|
|
||||
|
for (int i=0; i<n; ++i) { |
||||
|
tfd = math::fft(s, 2000); |
||||
|
} |
||||
|
|
||||
|
clock_t end = clock(); |
||||
|
std::cout << "Time to compute " << n << " fft: "<< double(end-begin) / CLOCKS_PER_SEC << std::endl; |
||||
|
std::cout << "Average time: " << double(end-begin) / CLOCKS_PER_SEC / n << std::endl; |
||||
|
|
||||
|
math::csignal mod; |
||||
|
for (int i=0; i<tfd.size(); ++i) { |
||||
|
double R = tfd[i].real(); |
||||
|
double I = tfd[i].imag(); |
||||
|
double a = std::sqrt(R*R + I*I); |
||||
|
mod.push_back(math::complex(float(i)/tfd.size()*fe, a)); |
||||
|
} |
||||
|
create_plot_file("graph", mod); |
||||
return 0; |
return 0; |
||||
} |
} |
||||
|
|||||
Loading…
Reference in new issue