Report abuse


			
#include 
#include 
#include 
#include 


#include 
#include 
#include 
#include "boost/smart_ptr.hpp"




using namespace itpp;
using namespace std;
using namespace boost::spirit;

typedef boost::scoped_ptr pam;

#import "ScriptController.h"

@implementation ScriptController





- (IBAction)okClicked:(id)sender
{
  Hello h;
  bvec i = "001";

  bool result = h.do_modulation(i);


  if(result)
  {
  string str = "1,2,3,4";
  vector v;

  [textField setStringValue:@"HELLLOOO"];

  }

  else
  {
	[textField setStringValue:@"Failure"];
  }


}



-(id) init {

  self = [super init];
  if (self != nil) {
	
	

	
	
  }
  return self;

}




@end


Hello::Hello()
{


}
Hello::~Hello()
{

}





bool Hello::do_modulation(bvec input)
{

  //Scalars
  int N;
  double N0;

  //Vectors
  bvec bits, dec_bits;
  vec symbols, rec;

  //Classes
  BPSK bpsk;  //The BPSK modulator/debodulator class
  BERC berc;  //The Bit Error Rate Counter class

  //Init
  N = 500000; //The number of bits to simulate
  N0 = 1;     //0 dB SNR

  //Randomize the random number generator
  RNG_randomize();

  //Generate the bits:
  bits = randb(N);

  //Do the BPSK modulation
  bpsk.modulate_bits(bits, symbols);

  //Add the AWGN
  rec = symbols + sqrt(N0/2)* randn(N);

  //Decode the received bits
  bpsk.demodulate_bits(rec, dec_bits);

  //Count the number of errors
  berc.count(bits,dec_bits);

  //Print the results
  cout << "There were " << berc.get_errors() << " received bits in error." << endl;
  cout << "There were " << berc.get_corrects() << " correctly received bits." << endl;
  cout << "The error probability was " << berc.get_errorrate() << endl;
  cout << "The theoretical error probability is " << 0.5*erfc(1.0) << endl;

  pam p(new PAM(2));
  //PAM *p = new PAM(2);
  vec output; //modulated thing
  bvec demodded_out;

  //The following line of code simulates the transmitter end.
  p->modulate_bits(input,output);


   //The following simulates the receiver end.
   p->demodulate_bits(output,demodded_out);

   if(demodded_out == input)
   {
	 return true;
	 
   }
      return false;


}