src/channel.c

Go to the documentation of this file.
00001 /*
00002    libit - Library for basic source and channel coding functions
00003    Copyright (C) 2005-2005 Vivien Chappelier, Herve Jegou
00004 
00005    This library is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU Library General Public
00007    License as published by the Free Software Foundation; either
00008    version 2 of the License, or (at your option) any later version.
00009 
00010    This library is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013    Library General Public License for more details.
00014 
00015    You should have received a copy of the GNU Library General Public
00016    License along with this library; if not, write to the Free
00017    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00018 */
00019 
00020 /*
00021   Channels and modulation
00022   Copyright (C) 2005 Vivien Chappelier, Herve Jegou
00023 */
00024 
00025 #include <it/vec.h>
00026 #include <it/source.h>
00027 #include <it/random.h>
00028 #include <it/channel.h>
00029 
00030 /* simple BSPK modulation */
00031 vec modulate_bpsk (bvec b)
00032 {
00033   idx_t i;
00034   vec  m = vec_new (bvec_length (b));
00035 
00036   for (i = 0; i < bvec_length (b); i++)
00037     m[i] = b[i] ? 1 : -1;
00038 
00039   return (m);
00040 }
00041 
00042 
00043 bvec channel_bsc (bvec v, double crossover_proba)
00044 {
00045   idx_t i;
00046   bvec received = bvec_new (bvec_length (v));
00047 
00048   for (i = 0; i < bvec_length (v); i++)
00049     if (it_rand () < crossover_proba)
00050       received[i] = 1 - v[i];
00051     else
00052       received[i] = v[i];
00053 
00054   return received;
00055 }
00056 
00057 
00058 vec channel_awgn (vec v, double sigma)
00059 {
00060   vec  received = source_gaussian (vec_length (v), 0.0, sigma);
00061   vec_add (received, v);
00062   return received;
00063 }

Hosted by
Copyright (C) 2005-2006 Hervé Jégou
Vivien Chappelier
Francois Cayre
libit logo courtesy of Jonathan Delhumeau