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

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

?? reed_solomon0.h

?? DSP中實現的RS編碼+MFSK調制的實現
?? H
?? 第 1 頁 / 共 2 頁
字號:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
 
 


int dec_to_gf[16];  // globe parameters; store the gf_exp (see figure 1)
int p_vect[80];     // arrays for transforming form GF to Dec and Dec
int gf_to_dec[16];  // to GF. they initial in funciont initial().
int *Temp,*Result,*EncodeOut;

        
void initial(int m)  // when you want to use RS prog , this one must run first.
{
	//生成函數 f(D)=D^3+D+1; GF(2^3)
	// for different m there are different f(D).
	int gd[8][5]={{0,1,3},{0,1,4},{0,2,5},{0,1,6},{0,3,7},{0,2,3,4,8},{0,4,9},{0,3,10}};  
	//本原多項式
    int gd_len[8]={3,3,3,3,3,5,3,3};
    int pow2=(int)pow(2,m);	
    	
	int gf_vect[16],gf_exp[16];            // 用矢量表示。
    int i,j;
    int gf_temp[80];   // 存放多項式[000],按二進制表示。1表示此系數有=[pow2][m+1]

	int h;
	int sum;
	int k;

	// allocate the memory  
	// for example 
	// when m=3      
	//        index = 0,1,2
	// the gf_temp ={1,0,0
	//               0,1,0
	//               0,0,1 
	//               1,1,0 
	//                ...}
    //gf_temp=(int *)calloc(pow2*(m+1),sizeof(int));  
    //gf_vect=(int *)calloc(pow2,sizeof(int));
	//gf_exp= (int *)calloc(pow2,sizeof(int));
		//             THE GF(2^3)
	    //        gf_exp              gf_temp
		// ═══╤═══╤═════╤═══
		//   i   │gf_exp│polynomial│vector
		// ───┼───┼─────┼───
		//   0   │ a^0  │        1 │ 001 
		//   1   │ a^1  │     a    │ 010 
		//   2   │ a^2  │ a^2      │ 100 
		//   3   │ a^3  │     a +1 │ 011 
		//   4   │ a^4  │ a^2 +a   │ 110 
		//   5   │ a^5  │ a^2 +a+1 │ 111  
		//   6   │ a^6  │ a^2   +1 │ 101   
		//   7   │ a^7  │      0   │ 000  
		// ═══╧═══╧═════╧═══
	    //           figure 1
   // there are the py's coefficient stored in gf_temp[][],for example 
   //if shi vecotor expression is [001] then gf_temp[][]={1,0,0,0} 
   // the gf_temp[][m+1] is to judge if the expression is exceed the
   // GF(2^3), for an instance ,if the gf_temp[][]={0,0,0,1},this is 
   //to say that it is exceed the domain of GF, the max bit 1 should 
   //be replaced by 1+a, the program should to adjust this instance.
   //becasue a^3=a+1(it is depended on the f(D)=D^3+D+1),so the gf_temp[][]
   //={0,0,0,1} should be rewritted as gf_temp[][]={1,1,0,0}; 
   // initial the array gf_temp.
	gf_temp[0]=1;
   for(j=1;j<m+1;j++)
   {
     gf_temp[j]=0;
   }
   for(i=1;i<pow2;i++)
   {
        gf_temp[m*i+0]=0;     
		 // the LSB is initial to 0;
		 // then we left shift 1 bit.that is equal to multiply by 2
		 //  the now value is equal to the last value mult by 2
		 //  for example the last valuse is 010,the now value should be 100,
		 //  all those are expressed by vector.		 
         for (j=m+1;j>0;j--)
         {
			 if (i!=pow2-1) gf_temp[m*i+j]=gf_temp[(i-1)*m+j-1];
		     else gf_temp[m*i+j]=0;
         }
		 
         // just as tell above , when the value is exceed the GF domain 
		 // we shoud adjust this value.
		 h=0;
		 if (gf_temp[m*i+m]==1)
         {
           for(k=0;k<m;k++)
           {
              if(k==gd[m-3][h] && h!=gd_len[m-3])
			  {
				  gf_temp[m*i+k]=(1+gf_temp[m*i+k]) % 2;
				  h++;
			  }
           }
		 }
   }
   ///////////////////////////////////////////////////////////////////////////////////////
/*   for (i=0;i<pow2*m;i++)
   {
   cout<<gf_temp[i]<<"  ";
    if((i+1)%m==0)
	   cout<<endl;
   }*/
   ///////////////////////////////////////////////////////////////////////////////////////
   sum=0;   
   // now the importance process is completed
   // this step is just to count the decimal value.
   for(i=0;i<pow2;i++)
   {
     for (j=0;j<m;j++)
        sum+=(int)(gf_temp[m*i+j]*pow(2,j));
	 gf_vect[i]=sum;
	
	 gf_exp[sum]=i;
     if ( sum==0)
  	 gf_exp[sum]=pow2-1;
	 sum=0;
    }

   for(i=0;i<16;i++)
	   dec_to_gf[i]=gf_exp[i];
   for(i=0;i<80;i++)
	   p_vect[i]=gf_temp[i];
   for(i=0;i<16;i++)
	   gf_to_dec[i]=gf_vect[i];

   //dec_to_gf=gf_exp;
   //p_vect=gf_temp;
   //gf_to_dec=gf_vect;

   //free(gf_exp);
   //free(gf_temp);
   //free(gf_vect);
}

int  AddInGf(int TheDataWantToAddA,int TheDataWantToAddB,int m) //GF域的加法
{

	int sumret[4];
	int i;
//	int pow2;
    int sum=0;
	//sumret=(int*)calloc(m,sizeof(int));
//    pow2=pow(2,m);
	for (i=0;i<m;i++)
	{
		if((m*TheDataWantToAddA+i)>=80)
			return 0;
		sumret[i]=(p_vect[m*TheDataWantToAddA+i]+p_vect[TheDataWantToAddB*m+i])%2;
	}   
	for (i=0;i<m;i++)
	{
		sum+=(int)(sumret[i]*pow(2,i));
	}
	// the output is in form of exponent.
	// when return's value is 3, represent it is a^3
    //free(sumret);	
	return dec_to_gf[sum];    //dec_to_gf=gf_exp;  gf_exp[sum]=i
}


int MultInGf(int dataA, int dataB, int N)   // GF 域的乘法
{
   int GiMultInput;
   if (dataA!=N && dataB!=N)
		GiMultInput=(dataA+dataB) % N;  // a^i * a^j = a^(i+j)
   else
  		GiMultInput=N;
      return GiMultInput;
}


int DivInGf(int dataA,int dataB, int N )/* N=2^m */
{
	int sign,result;
	sign=dataA-dataB;
	if(sign>=0)
		result=sign;
	else
		result=N+sign;
	return result;
}


 int * Encode(int data[], int g[],int m /*2^m*/,int N,int L)
 {
	 // the datas to encode stored in data[] should like following
	 // length(data) must = L;     
	 // for example: if you want to encode 3, 4, 6 in decadal.
	 // you should let data[]={3,4,6} the 3 is first bit.L=3;
	 /////////////////////////////////////////////////////////////
	 // the length of g must eq to N-L+1;
	 // ohterwire there will be error.
     // g is the exponent of create polynomial.
	 // if g=a^2 X^2+ X+ a^4
	 // then g[]={4,0,2}
	 /////////////////////////////////////////////////////////////
	 /* the return value is also in form of exponent*/
	 int i, j;	
	 int a,GiMultInput;
	// int *p;
	/*
		  +-------------+-------------------------+---------------------+                                                                  
		  |             |                         |                     |                                             
	g0-->(*)      g1-->(*)              gN-L-1-->(*)                    |                                                            
		  |             |                         |                     |                                             
		  | +------+    |    +------+             |     +----------+    |                                                                          
		  ->| R[0] |---(+)-> | R[1] |-(+)->....--(+)->  | R[N-L-1] |-->(+)                                                                                
			+------+         +------+                   +----------+ |  |                                                                       
																	 +--|--->the remain N-L number                                                                    
							                          --input->---------+--->first L number

	                          figure 2*/
	 int *R;//,*EncodeOut;
	 R=(int *)calloc(N-L,sizeof(int)); // in form of exponent.a^(pow2-1)=000.
     EncodeOut=(int *)calloc(N,sizeof(int));
	 // initial the array R
	 for (i=0;i<N-L;i++)
		 R[i]=N;
	 /*in this prog the pow2-1 is a special number. it denote the zero in decimal*/
	 /* the num (pow2-1) represent zero [00..0]*/
	 
	 for (j=0;j<L;j++)
	 {
		a=AddInGf(R[N-L-1],data[j],m);  // a^i +a ^j     N+data[j]
		//cout<<a<<endlR;
		for(i=N-L-1;i>0;i--)
		{
		 // a^i * a^j = a^(i+j)
		 GiMultInput=MultInGf(g[i],a,N);
		 R[i]=AddInGf(GiMultInput ,R[i-1],m);
		}
     	R[0]=MultInGf(g[0],a,N);
	 }
	 
	 for(i=0;i<N;i++)
	 {
		 if (i<N-L)
			 EncodeOut[i]=R[i];
		 else
			 EncodeOut[i]=data[N-i-1];
	 }
	 
	// p=EncodeOut;
	 //free(p);
	 
	 free(R);
	 //return p;
	 return EncodeOut;

}

int *GenGx(int m,int N,int L)  //generation polynomial.(m=4,N=15;L=9)
{
	int d=N-L+1;
	int *gx=(int *)calloc((d-1)*2,sizeof(int));
	int Row=2;
    int *addtemp=(int *) calloc(d,sizeof(int));
    int *multtemp=(int *) calloc(d,sizeof(int));
	//int *
		
    int i,j;
    Temp=(int *)calloc(d,sizeof(int));
	for (i=0;i<d-1;i++ )    
	{
		gx[Row*i]=i+1;
		gx[Row*i+1]=0;
		Temp[i]=N;
	}
        Temp[d-1]=N;
	
	Temp[0]=gx[0];
	Temp[1]=gx[1];
	for(i=1;i<d-1;i++)
	{
       for(j=1;j<=d-1;j++) //(a+x)(a^2+x)=a(a^2+x)+x(a^2+x)
		{
		   addtemp[j]=MultInGf(gx[Row*i],Temp[j],N); ///a(a^2+x)
		   multtemp[j]=Temp[j-1];
		}
		addtemp[0]=MultInGf(gx[Row*i],Temp[0],N);
		multtemp[0]=N;
		for(j=0;j<=d-1;j++)
		{
			Temp[j]=AddInGf(addtemp[j],multtemp[j],m);
		}
	}
 	
	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费视频一区二区| 欧美探花视频资源| 亚洲午夜久久久久久久久电影网 | 久久精品一二三| 欧美精品国产精品| 色视频成人在线观看免| 国产999精品久久久久久绿帽| 日本不卡视频在线| 夜夜精品视频一区二区| 久久男人中文字幕资源站| 在线观看日韩电影| 日本黄色一区二区| 91免费视频观看| 91免费国产在线| 91久久精品国产91性色tv| 91在线无精精品入口| 99久久伊人久久99| 91在线视频网址| 91麻豆免费视频| 一本色道亚洲精品aⅴ| 91黄色激情网站| 91国在线观看| 欧美人成免费网站| 91精品黄色片免费大全| 欧美午夜影院一区| 91视频免费看| 91亚洲精品久久久蜜桃网站| 国产一区二区三区视频在线播放| 国产真实精品久久二三区| 国产美女一区二区| 国产99久久久国产精品 | 久久精品国产**网站演员| 美女视频黄免费的久久| 国产一区二区免费视频| 日本不卡不码高清免费观看| 精品一区二区三区的国产在线播放| 美国欧美日韩国产在线播放| 国产一区二区成人久久免费影院| 成人综合日日夜夜| 99久久久精品免费观看国产蜜| 91福利社在线观看| 91精品国产麻豆国产自产在线 | av一本久道久久综合久久鬼色| 成人性生交大片免费看中文网站| 日本成人在线不卡视频| 国产乱子伦视频一区二区三区 | 欧美成人在线直播| 国产婷婷精品av在线| 亚洲精品视频一区| 美女网站视频久久| 成人看片黄a免费看在线| 在线观看视频一区| 欧洲另类一二三四区| 欧美午夜一区二区三区| 日韩欧美视频在线| 亚洲欧美色综合| 卡一卡二国产精品| 99久久免费视频.com| 欧美成人一区二区三区片免费| 色诱亚洲精品久久久久久| 欧美高清性hdvideosex| 国产成人免费xxxxxxxx| 日韩avvvv在线播放| 国产suv一区二区三区88区| 在线观看av不卡| 国产清纯白嫩初高生在线观看91| 亚洲在线视频网站| 国产精品亚洲午夜一区二区三区| 欧美日韩一区三区| 国产精品国产三级国产aⅴ无密码| 亚洲伦理在线精品| 免费观看成人av| 欧美日韩色综合| 亚洲欧美偷拍卡通变态| 国产91精品精华液一区二区三区| 欧美二区在线观看| 一区二区三区在线视频免费| 从欧美一区二区三区| 精品伦理精品一区| 久久激情五月激情| 欧美日韩一区在线| 亚洲一区欧美一区| 一本一道久久a久久精品 | 三级精品在线观看| 国产aⅴ精品一区二区三区色成熟| 欧美人xxxx| 日韩综合小视频| 欧美在线999| 亚洲色图欧美激情| av影院午夜一区| 欧美激情综合在线| 国产成人啪免费观看软件| 精品捆绑美女sm三区| 狠狠久久亚洲欧美| 欧美大片在线观看一区二区| 日韩高清欧美激情| 91热门视频在线观看| 日韩伦理电影网| 色婷婷av一区二区三区软件| 亚洲久草在线视频| 欧美日韩一区三区| 午夜影视日本亚洲欧洲精品| 精品污污网站免费看| 图片区小说区区亚洲影院| 欧美三级视频在线| 日本午夜精品视频在线观看 | 欧美老肥妇做.爰bbww| 亚洲男女毛片无遮挡| 色综合久久九月婷婷色综合| 一区二区三区日韩精品视频| 欧美区一区二区三区| 麻豆一区二区在线| 国产日韩综合av| 91免费视频大全| 五月婷婷另类国产| www精品美女久久久tv| 高清成人在线观看| 国产精品久久久久7777按摩| 成人综合在线视频| 亚洲激情在线激情| 欧美精品日韩综合在线| 国产乱子伦视频一区二区三区 | 欧美国产综合一区二区| 99精品热视频| 亚洲女同一区二区| 欧美在线影院一区二区| 欧美aa在线视频| 国产精品入口麻豆九色| 欧美亚洲另类激情小说| 九一九一国产精品| 亚洲色图欧美偷拍| 欧美大度的电影原声| 91一区二区三区在线播放| 国产精品乱子久久久久| 91免费视频大全| 久久99精品久久久久久国产越南| 最新不卡av在线| 欧美一级国产精品| 色婷婷国产精品久久包臀| 狠狠色丁香久久婷婷综合_中 | 亚洲视频每日更新| 日韩一级免费观看| 91麻豆文化传媒在线观看| 麻豆高清免费国产一区| 亚洲综合视频在线| 国产精品无人区| 日韩一区二区三区观看| 91福利视频久久久久| 丁香天五香天堂综合| 久久草av在线| 久久99国产乱子伦精品免费| 久久精品国产成人一区二区三区 | 欧美丰满嫩嫩电影| 欧美人与禽zozo性伦| 欧美人妇做爰xxxⅹ性高电影| 在线观看国产一区二区| 91国内精品野花午夜精品| 91久久国产最好的精华液| 色综合久久久久综合体桃花网| 91在线国产观看| 色婷婷国产精品| 欧美巨大另类极品videosbest | 精品无人区卡一卡二卡三乱码免费卡| 午夜免费久久看| 另类小说一区二区三区| 国产真实乱对白精彩久久| 国产成人av一区二区| av男人天堂一区| 欧美在线啊v一区| 欧美一级淫片007| 精品福利在线导航| 国产精品国产三级国产有无不卡| 亚洲欧美在线另类| 午夜影院在线观看欧美| 久久99精品一区二区三区三区| 成人综合在线观看| 欧美日韩在线直播| 精品久久久久久久久久久久包黑料| 久久久久久麻豆| 亚洲欧美日韩一区二区三区在线观看| 亚洲国产视频直播| 国产裸体歌舞团一区二区| 99精品在线观看视频| 在线成人午夜影院| 久久精品免视看| 亚洲国产精品久久久久婷婷884| 六月丁香婷婷久久| 色综合咪咪久久| 欧美大片顶级少妇| 一区二区三区中文免费| 久久成人免费日本黄色| 在线观看欧美黄色| 国产欧美一区二区精品性色超碰 | 中文字幕第一区| 午夜伊人狠狠久久| 国产不卡视频在线播放| 欧美美女一区二区| 中文字幕精品—区二区四季| 日韩成人av影视| 91色视频在线|