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

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

?? signal_process.h

?? DSP中實現的RS編碼+MFSK調制的實現
?? H
字號:
#include "mfsk_data.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 ss[6];
int g[6];
//int code[15];
int EncodeOut[15];
int RSout[24];
int CountMfsk=0;     //mfsk編碼次數  
 
int pow_2(int j)
{  int i;
   int pow2;
   if(j==0)
     pow2=1;
   else
   {  pow2=1;
      for(i=1;i<=j;i++)
       pow2=pow2*2;
   }
   return pow2; 
}

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=16;	
    	
	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<4+1;j++)
   {
     gf_temp[j]=0;
   }
   for(i=1;i<pow2;i++)
   {
        gf_temp[4*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=4+1;j>0;j--)
         {
			 if (i!=pow2-1) gf_temp[4*i+j]=gf_temp[(i-1)*4+j-1];
		     else gf_temp[4*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[4*i+4]==1)
         {
           for(k=0;k<4;k++)
           {
              if(k==gd[4-3][h] && h!=gd_len[4-3])
			  {
				  gf_temp[4*i+k]=(1+gf_temp[4*i+k]) % 2;
				  h++;
			  }
           }
		 }
   }
   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<4;j++)
        sum +=gf_temp[4*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];
}

void Encode(int data[], int g[],int m ,int N,int L)
 {
	 int i, j;	
	 int a,GiMultInput;
//	 int shang1,shang2,shang3;
	 int R[6];
//	 int EncodeOut[15];

	 //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;
	 
	 for (j=0;j<L;j++)
	 {
		a=AddInGf(R[N-L-1],data[j],m);  // a^i +a ^j     N+data[j]
		//cout<<a<<endl;
		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];
     }
	for(i=3;i>=0;i--)               
	{
	   RSout[i]=(*(EncodeOut))%2;
	   (*(EncodeOut))=(*(EncodeOut))/2;	

	   RSout[i+4]=(*(EncodeOut+1))%2;
	   (*(EncodeOut+1))=(*(EncodeOut+1))/2;	

	   RSout[i+8]=(*(EncodeOut+2))%2;
	   (*(EncodeOut+2))=(*(EncodeOut+2))/2;	

	   RSout[i+12]=(*(EncodeOut+3))%2;
	   (*(EncodeOut+3))=(*(EncodeOut+3))/2;	

	   RSout[i+16]=(*(EncodeOut+13))%2;
	   (*(EncodeOut+13))=(*(EncodeOut+13))/2;	

	   RSout[i+20]=(*(EncodeOut+14))%2;
	   (*(EncodeOut+14))=(*(EncodeOut+14))/2;	

//		RSout[k++]=EncodeOut[j]%2;
//		shang1=EncodeOut[j]/2;
///		RSout[k++]=shang1%2;
//		shang2=shang1/2;
//		RSout[k++]=shang2%2;
//		shang3=shang2/2;
//		RSout[k++]=shang3%2;

	}

}

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++)
	{
		sumret[i]=(p_vect[m*TheDataWantToAddA+i]+p_vect[TheDataWantToAddB*m+i]) % 2;
	}   
	for (i=0;i<m;i++)
	{
		sum+=sumret[i]*pow_2(i);
	}
   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;
}

void 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 gx[14];
	int Row=2;
    //int *addtemp=(int *) calloc(d,sizeof(int));
    int addtemp[7];
    //int *multtemp=(int *) calloc(d,sizeof(int));
    int multtemp[7];
	//int *temp=(int *) calloc(d,sizeof(int));
	int temp[7];
	
    int i,j;

	for (i=0;i<d-1 ;i++ )   //d
	{
		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);
		}
	}	
	//return temp;
	for(i=0;i<7;i++)
	   g[i]=temp[i];
}

void CountSi(int R[], int m,int N /* N= 2^m-1*/,int t)   // count the 伴隨多項式 S(i)
{
    int i,j;
    int s[2];
    for(j=0;j<2*t;j++)
    {
    	s[0]=R[0];
      for( i=1;i<N;i++)
      {
        s[1]=MultInGf(R[i],(i*(j+1))%N,N);       //R[a^i]
        s[1]=AddInGf(s[1],s[0],m);
		s[0]=s[1];
      }
      ss[j]=s[1];
    }
    //return result;
}

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久久久人人人人传媒| 国产麻豆欧美日韩一区| 色婷婷国产精品久久包臀| 国产精品福利一区二区三区| 国产一区免费电影| 国产日韩欧美精品一区| 国产+成+人+亚洲欧洲自线| 国产午夜亚洲精品理论片色戒| 日韩电影免费在线| 久久先锋影音av鲁色资源网| 国产原创一区二区| 国产精品精品国产色婷婷| 91首页免费视频| 免费看日韩a级影片| 久久久久久久久99精品| 成人亚洲一区二区一| 亚洲国产精品黑人久久久| yourporn久久国产精品| 亚洲福利视频一区二区| 久久久久久毛片| 欧美视频一区二区三区四区| 精品一区二区三区蜜桃| 亚洲人成影院在线观看| 在线不卡的av| 成人免费观看男女羞羞视频| 亚洲国产cao| 最新日韩在线视频| 91麻豆精品国产综合久久久久久| 国产精品资源在线看| 亚洲国产日韩综合久久精品| 久久久国产精品不卡| 欧美一区二区三区四区视频| 色偷偷久久人人79超碰人人澡| 日本成人在线网站| 亚洲一区二区三区免费视频| 国产视频在线观看一区二区三区 | 成人小视频在线| 久久精品99久久久| 日日夜夜精品免费视频| 亚洲日本va午夜在线电影| 欧美韩国一区二区| 久久久噜噜噜久久人人看 | 久久精品国产999大香线蕉| 国产精品国产精品国产专区不蜜| 精品久久国产老人久久综合| 在线视频欧美区| 99精品视频中文字幕| 国产激情视频一区二区在线观看| 亚洲一区二区中文在线| 国产精品高清亚洲| 国产性色一区二区| 中文一区二区在线观看| 久久综合九色综合欧美98| 精品久久国产字幕高潮| 欧美日韩亚洲综合在线| 欧美日韩视频在线观看一区二区三区| 91一区一区三区| 欧美日韩视频在线第一区| 欧美日韩中文国产| 日韩欧美亚洲国产另类| 精品国产一区二区国模嫣然| 国产欧美一区二区精品性| 亚洲男人电影天堂| 亚洲成人高清在线| 免费成人美女在线观看| 国产精品影视在线| 欧美中文字幕一区二区三区亚洲| 4438x亚洲最大成人网| 久久久精品综合| 一级特黄大欧美久久久| 国产在线精品一区二区不卡了 | 99久久99久久综合| 欧美精品高清视频| 国产精品国产三级国产普通话99 | 日韩一区二区高清| 1000精品久久久久久久久| 欧美96一区二区免费视频| 不卡欧美aaaaa| 久久久久99精品国产片| 日韩激情一区二区| 99国产精品一区| 日本一区二区三级电影在线观看| 亚洲国产成人av网| 91啪九色porn原创视频在线观看| 欧美妇女性影城| 欧美国产激情二区三区| 国内精品自线一区二区三区视频| 欧美日韩不卡视频| 亚洲午夜成aⅴ人片| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 久久综合99re88久久爱| 蜜桃av一区二区三区电影| 欧美做爰猛烈大尺度电影无法无天| 中文字幕乱码久久午夜不卡 | 亚洲日本青草视频在线怡红院| 国产美女精品在线| 久久综合成人精品亚洲另类欧美| 日韩在线一二三区| 6080日韩午夜伦伦午夜伦| 亚洲一区免费在线观看| 欧美性xxxxxxxx| 亚洲国产欧美另类丝袜| 欧美日韩一区二区三区免费看| 婷婷久久综合九色综合伊人色| 欧美日韩国产精选| 欧美a级理论片| 日韩精品在线网站| 韩国成人精品a∨在线观看| 精品久久人人做人人爰| 国产成人av影院| 亚洲精品乱码久久久久| 欧美久久久久久久久中文字幕| 免费观看在线综合| 国产欧美日韩亚州综合| 91社区在线播放| 蜜桃在线一区二区三区| 国产精品人成在线观看免费| 色噜噜狠狠一区二区三区果冻| 婷婷亚洲久悠悠色悠在线播放| 久久中文字幕电影| 欧美日韩国产色站一区二区三区| 久久国产精品99精品国产 | 日本成人超碰在线观看| 国产精品人成在线观看免费| 欧美日韩一区二区在线视频| 国产精品一区二区在线看| 亚洲自拍偷拍九九九| 国产欧美中文在线| 日韩欧美激情一区| 欧美视频完全免费看| av激情综合网| 国产成人综合亚洲网站| 日本美女视频一区二区| 亚洲gay无套男同| 亚洲视频免费观看| 亚洲国产电影在线观看| 久久综合成人精品亚洲另类欧美 | 成人爱爱电影网址| 一区二区在线免费| 在线精品国精品国产尤物884a| 亚洲综合激情另类小说区| 亚洲人成精品久久久久| 亚洲欧美日韩国产综合在线| 天天操天天综合网| 久久99国产精品久久99| 91香蕉视频污在线| 欧美性受xxxx| 欧美日韩在线观看一区二区 | 蜜桃一区二区三区四区| 亚洲第一狼人社区| 亚洲成人动漫在线免费观看| 亚洲高清久久久| 亚洲成人福利片| 七七婷婷婷婷精品国产| 捆绑变态av一区二区三区| 免费成人在线影院| 国产精品 欧美精品| 色综合久久99| 欧美日韩一级二级三级| xnxx国产精品| 亚洲美女屁股眼交| 蜜臀国产一区二区三区在线播放 | av在线综合网| 日韩色在线观看| 国产精品高潮呻吟| 天堂一区二区在线| 国产精品一级片在线观看| a级精品国产片在线观看| 欧美三级午夜理伦三级中视频| 2023国产精品视频| 亚洲影视在线播放| 国产一区二区精品久久91| 欧美日本国产一区| 欧美日韩中字一区| 亚洲天堂av一区| 国产精品123区| 精品91自产拍在线观看一区| 亚洲一区二区三区四区不卡| 成人一级黄色片| 精品国产一区二区三区不卡 | 久久这里只有精品首页| 一级中文字幕一区二区| 91美女在线看| 综合激情成人伊人| 色婷婷狠狠综合| 亚洲黄色免费网站| 欧美在线观看一二区| 亚洲国产日韩在线一区模特| 成人一区二区三区视频在线观看| 成人激情免费电影网址| 日韩视频国产视频| 国产成人免费高清| 一区二区三区四区中文字幕| 日韩欧美成人激情| 国产不卡视频在线观看| 午夜精品福利在线| 国产欧美一区二区在线观看| 日韩一区二区三区电影在线观看 | 色婷婷综合久久久中文一区二区| 国产精品久久久久久福利一牛影视|