亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美大片在线观看| 国产一区二区三区精品欧美日韩一区二区三区| 午夜久久久久久| 丰满岳乱妇一区二区三区| 欧美日韩成人综合| 中文字幕在线免费不卡| 另类小说欧美激情| 精品1区2区3区| 18成人在线观看| 国产成人高清在线| 精品粉嫩aⅴ一区二区三区四区| 一区二区三区精品在线观看| 国产成人8x视频一区二区| 日韩西西人体444www| 一区二区三区四区中文字幕| 国产69精品久久久久777| 欧美电影免费观看高清完整版| 欧美www视频| 日本伊人色综合网| 蜜桃久久精品一区二区| 成人黄动漫网站免费app| 日韩欧美亚洲另类制服综合在线| 一区二区在线观看视频| 波多野结衣中文字幕一区二区三区| 欧美一区二区三区四区在线观看| 一区二区在线观看视频| 91视频91自| 中文字幕乱码久久午夜不卡| 国产伦精品一区二区三区视频青涩| 欧美精品一区二区三| 色综合天天综合狠狠| 精品视频在线看| 亚洲欧美日韩国产综合在线| 成人午夜电影小说| 久久久午夜精品| 国产一区二区三区av电影 | 欧美国产视频在线| 久久99久久精品欧美| 欧美一区二区私人影院日本| 午夜久久福利影院| 91麻豆精品国产91久久久久久| 日本成人中文字幕| 国产白丝网站精品污在线入口| 五月婷婷综合网| 日韩精品中文字幕一区| 国产综合色在线| 亚洲成人午夜影院| 国产亚洲污的网站| av在线不卡观看免费观看| 日韩亚洲欧美一区二区三区| 日av在线不卡| 国产精品久久夜| 7777精品伊人久久久大香线蕉的 | 色婷婷狠狠综合| 国产99久久久国产精品| 国产一区二区三区美女| 亚洲国产成人高清精品| 这里只有精品免费| 成人动漫一区二区| 激情五月婷婷综合网| 亚洲综合色丁香婷婷六月图片| 欧美mv日韩mv国产网站app| 91国偷自产一区二区使用方法| 毛片不卡一区二区| 日本伊人色综合网| 丝袜美腿成人在线| 日韩精品一区二区三区视频| 色婷婷精品大视频在线蜜桃视频 | 成人avav影音| 极品少妇一区二区| 亚洲毛片av在线| 精品理论电影在线观看| 欧美一级黄色片| 色久优优欧美色久优优| 美女www一区二区| 国产精品对白交换视频| 久久久久久久免费视频了| 日韩欧美国产综合| 欧美一区二区免费观在线| 色诱亚洲精品久久久久久| 9i在线看片成人免费| 波多野洁衣一区| 成人免费看视频| 日韩精品一二三四| 亚洲国产va精品久久久不卡综合| 精品国产乱子伦一区| 色综合久久久久网| 成人精品免费看| 99国内精品久久| 成人午夜在线播放| 久久黄色级2电影| 经典三级视频一区| 色婷婷精品大视频在线蜜桃视频| 777午夜精品免费视频| 国产精品成人午夜| 国产精品福利av| 视频在线观看一区二区三区| 国产精品自拍在线| 8v天堂国产在线一区二区| 中文字幕一区二区三区不卡| 美女在线视频一区| 99久久99久久免费精品蜜臀| 在线视频观看一区| 久久久天堂av| 免费黄网站欧美| 91黄色免费网站| 色呦呦国产精品| 精品国内二区三区| 一区二区三区在线免费观看| 激情另类小说区图片区视频区| 成人精品视频.| 日韩欧美区一区二| 亚洲欧洲精品一区二区三区不卡| 日本成人在线不卡视频| 国产suv一区二区三区88区| 欧美精品18+| 国产精品高潮呻吟| 日韩精品一二区| 成人激情免费视频| 欧美一区午夜视频在线观看| 国产精品素人视频| 免费观看在线色综合| 欧美肥妇bbw| 亚洲黄色av一区| 色88888久久久久久影院按摩| 国产亚洲成aⅴ人片在线观看 | 人禽交欧美网站| 91福利区一区二区三区| 亚洲国产精品黑人久久久| 麻豆精品久久精品色综合| 欧美日韩美女一区二区| 亚洲第一主播视频| 欧美自拍丝袜亚洲| 国产一区二区毛片| 日韩一级欧美一级| 日本vs亚洲vs韩国一区三区二区 | 国产亚洲一二三区| 日韩精品一二三区| 久久夜色精品国产欧美乱极品| 亚洲mv在线观看| 91精品国产乱码久久蜜臀| 午夜成人在线视频| 欧美男男青年gay1069videost| 亚洲激情自拍偷拍| 欧美日韩久久不卡| 亚洲国产精品视频| 欧美电影在线免费观看| 狠狠色丁香久久婷婷综合_中| 精品国产乱码久久久久久久久| 日本成人在线一区| 国产免费观看久久| 久久精品一区四区| 色综合久久久久久久| 老司机精品视频在线| 亚洲午夜久久久久久久久电影网 | 亚洲免费观看高清完整版在线观看| 91碰在线视频| 精品一区二区三区不卡| 一区二区三区中文免费| 精品国产露脸精彩对白| 成人午夜视频免费看| 亚洲成人免费视| 欧美激情一区二区三区在线| 色婷婷久久久久swag精品 | 午夜精品福利一区二区三区蜜桃| 精品国产免费人成在线观看| 91日韩一区二区三区| 亚洲欧美色图小说| 久久这里只有精品视频网| aaa欧美大片| 日韩av一级片| 午夜精品一区在线观看| 亚洲色图欧洲色图| 国产精品成人免费精品自在线观看| 91免费视频网| 一区二区在线观看不卡| 成人一区二区三区在线观看| 亚洲国产精品麻豆| 久久精品一级爱片| 亚洲国产高清不卡| 欧美日韩久久久久久| 91色综合久久久久婷婷| 99久久精品免费观看| zzijzzij亚洲日本少妇熟睡| 国产电影精品久久禁18| 国产一区不卡在线| 精品一区二区三区免费| 国内精品伊人久久久久av影院 | 精品盗摄一区二区三区| 日韩精品一区在线观看| 91精品国产品国语在线不卡| 日韩西西人体444www| 日韩久久久精品| 久久久国产午夜精品| 国产女人水真多18毛片18精品视频 | 亚洲欧美一区二区在线观看| 欧美国产精品劲爆| 亚洲精品亚洲人成人网| 亚洲午夜电影在线观看| 舔着乳尖日韩一区|