#include <cstdlib>
#include <cstdio>
#include <iostream>
+#include <string>
+#include <fstream>
#include <stdexcept>
#include <cmath>
#include "quicksort_index.h"
#include "interleaver.h"
+
+
+
interleaver::interleaver()
{
d_K=0;
//######################################################################
//# Generate a random interleaver
//######################################################################
-interleaver::interleaver(int K, unsigned int seed)
+interleaver::interleaver(int K, int seed)
{
d_K=K;
d_INTER.resize(d_K);
d_DEINTER.resize(d_K);
- srand(seed);
+ if(seed>=0) srand((unsigned int)seed);
std::vector<int> tmp(d_K);
for(int i=0;i<d_K;i++) {
d_INTER[i]=i;
tmp[i] = rand();
}
- //quicksort_index <int> (tmp,d_INTER,0,d_K-1); //got to resolve this...
- quicksort_index1 (tmp,d_INTER,0,d_K-1);
+ quicksort_index <int> (tmp,d_INTER,0,d_K-1);
// generate DEINTER table
for(int i=0;i<d_K;i++) {
}
}
+
+
+
+
+//######################################################################
+//# Write an INTERLEAVER specification from a file.
+//# Format
+//# K
+//# blank line
+//# list of space separated K integers from 0 to K-1 in appropriate order
+//# optional comments
+//######################################################################
+void interleaver::write_interleaver_txt(std::string filename)
+{
+ std::ofstream interleaver_fname (filename.c_str());
+ if (!interleaver_fname) {std::cout << "file not found " << std::endl ; exit(-1);}
+ interleaver_fname << d_K << std::endl;
+ interleaver_fname << std::endl;
+ for(int i=0;i<d_K;i++)
+ interleaver_fname << d_INTER[i] << ' ';
+ interleaver_fname << std::endl;
+ interleaver_fname.close();
+}