Home | Develop | Download | Contact
example_channel_model_bsc.cpp
1 
46 #include <Pds/Ra>
47 #include <Pds/It>
48 
49 int main(void)
50 {
51  unsigned int L=1000000;
52  unsigned int M=5;
53  unsigned int N=24;
54  unsigned int n;
55 
56  Pds::Matrix U;
57  Pds::Vector Up;
58  Pds::Vector p(M);
59 
60  Pds::Vector Rho=Pds::GeomSpace(0.01,0.5,N);
61  Pds::Vector BER(N);
62 
63  for(n=0;n<N;n++)
64  {
65  if(n==0) L=200/1.0e-5;
66  else L=200/BER[n-1];
67 
68  Pds::Vector Us(L);
69  p.Fill(Rho[n]);
70  Us.FillRandC(0.5);
71 
72  U=Pds::ChannelModel::Bsc(Us,p);
73  Up=U.MeanInRows();
74  U.MakeEmpty();
75 
76  BER.SetRaw(n,Us.Xor(Up).Mean());
77  Up.MakeEmpty();
78 
79  std::cout<<"p: "<<Rho[n]<<"\tBERm: "<<BER[n]<<"\n";
80  }
81 
82  Pds::Octave::XLabel="Rho";
83  Pds::Octave::YLabel="BER";
84  Pds::Octave::Legend={"Rho","BER"};
85  Pds::Octave::Plot::LogLogXYXY(Rho,Rho,Rho,BER,"temporal.m","example_channel_model_bsc.png");
86 
87  Pds::Vector BERteo=Pds::Ceo::Binary::Ber::SymetricModel(Rho,M);
88  Pds::Octave::XLabel="BERteo";
89  Pds::Octave::YLabel="BER";
90  Pds::Octave::Legend={"BERteo","BER"};
91  Pds::Octave::Plot::LogLogXYXY(Rho,BERteo,Rho,BER,"temporal.m","example_channel_model_bsc_theoric.png");
92  return 0;
93 }
double SymetricModel(double rho, unsigned int M)
Retorna la taza de erro de bit, , en el problema CEO binario simétrico de M fontes ,...
Pds::Matrix Bsc(const Pds::Vector &Us, const Pds::Vector &p)
Retorna el resultado de passar un vector por un banco de canales BSC de probabilidades .

Enlaces de interés

HomePage Bazaar Download Bug report Ayuda Developer Feed