⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 encode_blockmex.c

📁 本程序利用改进的CHOW算法
💻 C
字号:
/* Convolutional Encoder   pass in generating polynomials g m-by-3 (m=1 to 7)   outputs encoded bitstream   written by Joe Williams - Southern Methodist University as ugrad,   now Stanford grad student in EE.   if you use this, you must give the author proper credit*/#include "mex.h"#include "mat.h"#include <math.h>#define  output_bits plhs[0]#define	 g_in prhs[0]#define	 input_bits prhs[1]void mexFunction(int nlhs,                      mxArray *plhs[],                     int nrhs,                      const mxArray *prhs[])    {	mxArray *inputs[3];	double *bits_output,*bits_input,*state_i,*state_o,*output_val;	bool g[7][3];//now largest g matrix is a 7x3	int n,k,m,i,j,temp,col,row,L_total,L_info,a,b;	int input_val;	int *test;	n = mxGetM(g_in);//get the size of the g matrix 	k = mxGetN(g_in);	m = k-1;	for(col=0;col<k;col++){//Create a c-matrix	  for(row=0;row<n;row++){		g[row][col]=(mxGetPr(g_in))[row+col*mxGetM(g_in)];	  }	}	bits_input = mxGetPr(input_bits);	L_info = mxGetN(input_bits);	L_total = L_info+m;	output_val=mxCalloc(n,sizeof(double));	output_bits = mxCreateDoubleMatrix(1, (L_total)*n, mxREAL);    //output_bits = mxCreateDoubleMatrix(1, (L_info)*n, mxREAL);	bits_output = mxGetPr(output_bits);   state_o = mxCalloc(1,m*sizeof(double));   state_i = mxCalloc(1,m*sizeof(double));	for(i=0;i<L_total;i++){      //[output_bits, state] = encode_bit(g, input_bit, state); 	  input_val=(int)bits_input[i];	  for(j=0;j<=m-1;j++)		state_i[j]=state_o[j];	  for(a=0;a<n;a++){//encode the bit        output_val[a]=g[a][0]*bits_input[i];  		for(j=1;j<k;j++){	      temp=g[a][j]*state_i[j-1];          output_val[a]=(int)output_val[a]^temp;	    }	  }	  state_o[0]=bits_input[i];	  for(a=1;a<=m-1;a++)	    state_o[a]=state_i[a-1];	  for(j=n*i,a=0;j<n*(i+1)-1,a<n;j++,a++){       bits_output[j]=output_val[a];	  }	}   mxFree(output_val);   mxFree(state_o);   mxFree(state_i);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -