Home | Develop | Download | Contact
example_ceo_model_fusion.cpp
1 
43 #include <Pds/Ra>
44 #include <Pds/It>
45 
46 int main(void)
47 {
48  unsigned int L=100000;
49 
50  // Dados do canal
51  double ps=0.5;
52  Pds::Vector f0={1,2,3,4,5};
53  Pds::Vector p;
54 
55  unsigned int N=24;
56  Pds::Vector Rho=Pds::GeomSpace(0.01,0.1,N);
57  Pds::Vector BER(N);
58 
59  for(unsigned int n=0;n<N;n++)
60  {
61  if(n==0) L=200/1.0e-5;
62  else L=200/BER[n-1];
63 
64  p=f0*Rho[n];
65 
66  // Source Us
67  Pds::Vector Us(L);
68  Us.FillRandC(ps);
69 
70  // Input channel U
71  Pds::Matrix U=Pds::ChannelModel::Bsc(Us,p);
72 
73  // Second fusion method: NaiveBayes
74  Pds::Vector Unb=Pds::Ceo::Binary::Fusion::NaiveBayes(ps,p,U);
75  U.MakeEmpty();
76 
77  // BER
78  BER.SetRaw(n,Us.Xor(Unb).Mean());
79  Unb.MakeEmpty();
80 
81  std::cout<<"p: "<<Rho[n]<<"\tBERm: "<<BER[n]<<"\n";
82  }
83 
84  Pds::Octave::XLabel="Rho";
85  Pds::Octave::YLabel="BER";
86  Pds::Octave::Legend={"Rho","BER"};
87  Pds::Octave::Plot::LogLogXYXY(Rho,Rho,Rho,BER,"temporal.m","example_ceo_model_fusion.png");
88 
89  return 0;
90 }
Pds::Vector NaiveBayes(double ps, Pds::Vector p, const Pds::Matrix &U, double Umbral=0.5)
Retorna una aproximación del vector a partir de las muestras en .
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