亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ldpc_2.cpp

?? 關于Q元LDPC碼的C++仿真程序
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include <stdio.h>#include <math.h>#include <stdlib.h>#include <iostream.h>#include <fstream.h>#include <ctype.h>#include "Utils_1.h"#include "LDPC_1.h"
#include "LDPC_2.h"/********************************************************************************* * * MESSAGE * *********************************************************************************/void message::DFT2()          // A real-valued DFT - also IDFT{	static message Aux;      GFq mask, n0_index, n1_index;	BYTE j_bit;      if (GFq::IsPrimeQ)      {         cout << "Error, message::DFT2:  Only q that is a power of 2 is supported.\n";         exit(1);      }      for (int i  = 0; i < GFq::log_2_q; i++)      {	   Aux = *this;			// Initialize	   mask.val = 1 << i;         for (GFq j(0); j.val < q; j.val++)         {            j_bit = (j.val & mask.val) >> i;	// obtain value of j		n0_index.val = j.val & (~mask.val);	// turn bit off		n1_index.val = j.val | mask.val;    // turn bit on		//cout << (int)j_bit;            if (j_bit == 0)               Probs[j.val] = Aux[n0_index] + Aux[n1_index];            else               Probs[j.val] = Aux[n0_index] - Aux[n1_index];         }      }}/********************************************************************************* * * CHANNEL * *********************************************************************************/void channel::SimulateOutputVector(vector &InVector, vector &OutVector){   OutVector.Allocate(InVector.GetSize());   for (int i = 0; i < InVector.GetSize(); i++)   // Add noise to each component      OutVector[i] = this->SimulateOutput( /* channel in */ InVector[i] );    }/********************************************************************************* * * BSC Channel * *********************************************************************************/void BSC_Channel::ProcessMapping(LDPC_Code &Code){   mapping &MapInUse = Code.MapInUse;   for (GFq i(0); i.val < MapInUse.q; i.val++)      if ((MapInUse.map(i) != 0) && (MapInUse.map(i) != 1))      {         cout << "mapping levels must be (0,1)\n";         exit(1);      }}double H2(double p){   return -p*log2(p) - (1-p)*log2(1-p);}double H2Reverse(double H){   double pmin = 0,           pmax = 0.5,           tol = 0.0000001,          pmid;   if (H == 0)      return 0;   else if (H == 1.)      return 0.5;   while ((pmax - pmin) > tol)   {      pmid = (pmin + pmax) / 2.;      if (H2(pmid) > H)         pmax = pmid;      else         pmin = pmid;   }   return pmid;}double BSC_Channel::CapacityInBits(){   return 1 - H2(channel_p);}void BSC_Channel::PrintChannelData(LDPC_Code &Code){   double BitRate;   BitRate = Code.Calc_Bit_Rate();   cout  << "channel_p = " << channel_p         << "\nCapacity (bits per channel use) = " << 1 - H2(channel_p)          << " Max channel_p for Bit rate: " << H2Reverse(1. - BitRate);}/********************************************************************************* * * AWGN Channel * ********************************************************************************/double GaussGenerate(double sigma)  // Simulate the result of passing the zero vector through the AWGN{  static const double pi = 3.141592653;  double normal_random_number, x1, x2;  x1 = my_rand();  x2 = my_rand();

  if (x1 < EPSILON)
   x1 = EPSILON;
  normal_random_number = sqrt(-2 * log(x1)) * cos(2*pi * x2);    clip(normal_random_number);    return sigma * normal_random_number;}void AWGN_Channel::ProcessMapping(LDPC_Code &Code){   Code.MapInUse.Normalize();
}  double AWGN_Channel::CapacityInBits(){   double No = pow(noise_sigma,2.);   double SNR = 1./No;   return 0.5 * log(1. + SNR) / log(2.);}void AWGN_Channel::PrintChannelData(LDPC_Code &Code){   double BitRate, No, SNR, SNR_dB;      BitRate = Code.Calc_Bit_Rate();   No = pow(noise_sigma,2.);   SNR = 1./No;   SNR_dB = 10. * log10(SNR);   cout << "SNR(dB) = " << SNR_dB        << " SNR = " << SNR        << " Noise Sigma = " << noise_sigma        << "\nCapacity at SNR (symbols per channel use) = "         << 0.5 * log(1. + SNR) / log((double)GFq::q)        << "\nCapacity at SNR (bits per channel use) = "         << 0.5 * log(1. + SNR) / log(2.)        << "\nMinimum SNR for rate (dB) = "         << 10. * log(pow(2., 2.*BitRate) - 1.) / log(10.)        << " (absolute value) = " << pow(2., 2.*BitRate) - 1;}// override virtual functionsdouble AWGN_Channel::CalcProbForInput( double ChannelOutput, 				       double ChannelInput ){   static const double sqrt_2pi = sqrt(2*3.141592653);   double noise_prob = (1/(sqrt_2pi * noise_sigma)*	    exp(-pow(ChannelOutput-ChannelInput,2.)/(2.*NoiseVariance())));   return noise_prob;}double AWGN_Channel::SimulateOutput(double ChannelInput)  // Simulate the result of passing the zero vector through the AWGN{  return ChannelInput + GaussGenerate(noise_sigma);}double AWGN_Channel::NoiseVariance() {   return pow(noise_sigma, 2); }double AWGN_Channel::NoiseStdDev() {   return noise_sigma; }/**************************************************************************** * * Check node * ****************************************************************************/

GFq &check_node::Value()
{
   static GFq Aux;

   Aux = 0;
   for (int i = 0; i < GetDegree(); i++)
      Aux += GetEdge(i).label * GetEdge(i).LeftNode().Symbol;

   return Aux;
}



node &check_node::AdjacentNode(int index){   return GetEdge(index).LeftNode();}message &FastCalcLeftboundMessage(message AuxLeft[],                                   message AuxRight[],			          int left_index,                                  int degree){  static message Aux;  // Init to delta pulse   Aux.Set_q(GFq::q);  Aux = AuxLeft[left_index];  Aux *= AuxRight[left_index];  Aux.DFT2();  Aux.Reverse();	// estimate of symbol value = (- sum of others)  return Aux;}void check_node::CalcAllLeftboundMessages( ){  static message Vectors[MAX_DEGREE];  static message AuxLeft[MAX_DEGREE];  static message AuxRight[MAX_DEGREE];  static GFq ZERO(0);  // Calc auxiliary DFTs  for (int i = 0; i < GetDegree(); i++)  {     Vectors[i] = GetEdge(i).RightBoundMessage;     Vectors[i].PermuteTimes(GetEdge(i).label.Inverse());  }
  //-------------------------------------------------------------
  // If power of two - use DFT2
  //-------------------------------------------------------------
  if (!GFq::IsPrimeQ)
  {     for (int i = 0; i < GetDegree(); i++)
	 {
         Vectors[i].DFT2();
	 }

      // Calc auxiliary values     AuxLeft[0].Set_q(GFq::q);     AuxLeft[0] = 1.;     for (int i = 1; i < GetDegree(); i++)     {        AuxLeft[i] = AuxLeft[i - 1];        AuxLeft[i] *= Vectors[i - 1];     }     AuxRight[GetDegree() - 1].Set_q(GFq::q);     AuxRight[GetDegree() - 1] = 1.;     for (int i = GetDegree() - 2; i >= 0; i--)     {        AuxRight[i] = AuxRight[i + 1];        AuxRight[i] *= Vectors[i + 1];     }     // Calc leftbound messages     for (int i = 0; i < GetDegree(); i++)     {       GetEdge(i).LeftBoundMessage = FastCalcLeftboundMessage(AuxLeft, AuxRight, i, GetDegree());
       GetEdge(i).LeftBoundMessage.PermuteTimes(GetEdge(i).label);     }
  }
}/************************************************************************* * * Node * *************************************************************************/void node::Disconnect(){   // while edges remain, disconnect the first one    while (degree > 0) edges[0]->Disconnect();}/************************************************************************* * * Variable node * *************************************************************************/node &variable_node::AdjacentNode(int index){   return GetEdge(index).RightNode();}message &variable_node::CalcRightboundMessage( int rightbound_index )// rightbound_index is -1 if calculation is meant for final estimate{  static message Aux;  Aux = InitialMessage;  for (int i = 0; i < GetDegree(); i++)  {     // ignore intrinsic information

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久国产精品免费免费搜索| 国产麻豆精品在线| 欧美日韩一区久久| 亚洲va在线va天堂| 91精品国产综合久久蜜臀| 奇米影视在线99精品| 日韩欧美在线1卡| 国产一区二区三区精品视频| 国产清纯白嫩初高生在线观看91 | 一区二区三区免费在线观看| 欧美日本国产一区| 美女看a上一区| 国产三级久久久| 91丝袜美腿高跟国产极品老师| 一级日本不卡的影视| 在线不卡免费av| 国产精品一区二区久激情瑜伽| 国产精品午夜久久| 在线视频综合导航| 久久99在线观看| 日本一区二区三区国色天香 | 成人性生交大合| 亚洲自拍偷拍图区| 精品日韩在线观看| 色综合久久天天综合网| 免费成人结看片| 亚洲三级视频在线观看| 日韩视频免费观看高清完整版 | 欧美日高清视频| 福利一区福利二区| 午夜免费久久看| 中文字幕va一区二区三区| 欧美体内she精视频| 国产成人午夜片在线观看高清观看| 亚洲靠逼com| 久久一夜天堂av一区二区三区| 一本到三区不卡视频| 久久69国产一区二区蜜臀| 亚洲美女一区二区三区| 2021中文字幕一区亚洲| 欧洲国产伦久久久久久久| 国产精品影视在线观看| 日本不卡一二三| 曰韩精品一区二区| 国产精品久久久久天堂| 精品粉嫩aⅴ一区二区三区四区| 欧美无砖专区一中文字| av不卡免费在线观看| 国产最新精品免费| 午夜精品视频在线观看| 亚洲人成网站色在线观看 | 中文字幕精品一区| 日韩女优制服丝袜电影| 欧美三区免费完整视频在线观看| 成人午夜精品一区二区三区| 激情五月婷婷综合| 日韩国产欧美视频| 亚洲成在线观看| 亚洲精品国产第一综合99久久| 国产欧美日韩激情| 久久精品一区二区三区四区| 日韩欧美成人激情| 欧美成人乱码一区二区三区| 欧美色老头old∨ideo| 色狠狠色噜噜噜综合网| 91免费国产在线| 99久久精品国产麻豆演员表| 东方欧美亚洲色图在线| 国产电影一区在线| 国产精品一区二区果冻传媒| 国产麻豆9l精品三级站| 国产精品资源在线看| 国内精品视频一区二区三区八戒| 麻豆精品一区二区三区| 麻豆精品在线视频| 国产一区久久久| 国产精品18久久久久| 国产成人在线看| 成人国产精品免费观看动漫| 风流少妇一区二区| 99久久夜色精品国产网站| 99视频国产精品| 日本道精品一区二区三区 | 成人激情电影免费在线观看| 成人av在线观| 91污片在线观看| 在线观看一区二区精品视频| 色呦呦一区二区三区| 欧美三级日本三级少妇99| 欧美疯狂做受xxxx富婆| 欧美变态tickling挠脚心| 国产目拍亚洲精品99久久精品| 国产精品伦理一区二区| 一区二区三区四区激情| 日韩av不卡在线观看| 国产乱人伦精品一区二区在线观看 | 久久久久久夜精品精品免费| 国产色综合一区| 亚洲欧美日韩一区二区| 亚洲大片精品永久免费| 国产综合色视频| 99这里只有久久精品视频| 欧美午夜免费电影| 欧美精品一区二区三区蜜桃视频| 国产性做久久久久久| 亚洲精品v日韩精品| 久久精品国产一区二区| 国产成人一区在线| 欧美日韩国产一级二级| 精品日韩欧美在线| 亚洲日本护士毛茸茸| 久久狠狠亚洲综合| 99re这里都是精品| 精品奇米国产一区二区三区| 中文字幕+乱码+中文字幕一区| 亚洲小少妇裸体bbw| 国产一区在线观看麻豆| 欧美午夜精品电影| 中文字幕精品一区| 秋霞电影一区二区| 91视频在线看| 久久综合久久综合久久综合| 亚洲一区二区欧美激情| 国产成人自拍网| 欧美一区二区三区在线观看视频| 国产喂奶挤奶一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了| 久久66热re国产| 欧美午夜精品久久久久久孕妇 | 91啪亚洲精品| 久久久久国产成人精品亚洲午夜| 一区二区三区波多野结衣在线观看| 老色鬼精品视频在线观看播放| 一本色道久久综合精品竹菊| 久久伊人中文字幕| 天涯成人国产亚洲精品一区av| 9人人澡人人爽人人精品| 精品少妇一区二区三区视频免付费| 亚洲免费资源在线播放| 国产成人精品三级| 91麻豆精品国产无毒不卡在线观看| 精品一区二区三区免费观看| 国产精品久久久久影院老司| 久久不见久久见免费视频7| 日本电影欧美片| 日韩一区在线播放| 国产精品一卡二卡在线观看| 91精品国产综合久久小美女| 亚洲线精品一区二区三区八戒| 99综合影院在线| 国产精品女人毛片| 国产美女精品一区二区三区| 欧美电影免费观看高清完整版在线 | 美女视频一区在线观看| 欧美日韩一区视频| 亚洲伊人色欲综合网| 色狠狠色狠狠综合| 亚洲欧美区自拍先锋| 成人av小说网| 中文字幕一区二区不卡| 成人免费视频app| 国产精品欧美一区喷水| 成人美女视频在线观看18| 日本一区二区三区在线不卡| 国产福利精品一区二区| 国产午夜精品一区二区三区嫩草 | 亚洲一区二区精品3399| 欧美网站一区二区| 婷婷开心久久网| 欧美精品vⅰdeose4hd| 五月天国产精品| 欧美一区二区免费观在线| 免费观看在线色综合| 日韩三级.com| 国产在线精品一区二区| 久久精品综合网| 成人做爰69片免费看网站| 中文字幕五月欧美| 日本高清成人免费播放| 亚洲成a人片在线观看中文| 91麻豆精品国产自产在线观看一区| 日韩精品1区2区3区| 26uuu国产在线精品一区二区| 国产成人一区二区精品非洲| 国产精品毛片久久久久久久| 91福利视频网站| 日韩精品乱码av一区二区| 久久青草欧美一区二区三区| 成人免费视频视频在线观看免费 | 亚洲一线二线三线久久久| 337p亚洲精品色噜噜噜| 国产在线精品不卡| 国产精品久久久久精k8| 欧美午夜一区二区三区免费大片| 日韩黄色免费电影| 国产三级一区二区三区| 91精彩视频在线| 精品一区二区影视| 亚洲欧洲日韩女同| 欧美日韩国产一级二级|