📄 encoder.cpp
字号:
#include "sparse.h"
#include "main.h"
/*function: according to the given form read the generation matrix and check matrix
information position into the corresponding vector
parameter: S[][EncodedLength] generation matrix
T[][H_ColNum] check matrix
infoBitsLocation[] information position */
void Read_Matrix(int S[][EncodedLength],int T[][H_ColNum],int infoBitsLocation[])
{
char codeName[20];
int n,k,jj,ii,kk;
int i,j;
sprintf(codeName,"(1008,3,6).txt");
FILE *file;
if((file=fopen(codeName, "r"))==NULL)
{ printf("can't open the file\n");
exit(1);
}
fscanf(file, "%d%d%d%d%d", &n, &k, &jj, &ii, &kk);
printf("code_length=%d\ninfo_bit_length=%d\ncheck_bit_length=%d\nGen_matrix_row_num=%d\nOne_bits_num_col=%d", n, k, jj, ii, kk);
printf("\npress any key to continue...\n");
getchar();
// read generate matrix from file
for (i = 0;i < G_RowNum;i++ )
{
for(j = 0;j < EncodedLength;j++ )
{
fscanf(file,"%d",&S[i][j]);
S[i][j]--;
}
}
// read check matrix from file
if( ParityCheckNum )
{
for( i = 0;i < ParityCheckNum; i++ )
{
for( j = 0;j < H_ColNum; j++ )
{
fscanf( file, "%d", &T[i][j]);
T[i][j]--;
}
}
}
else
T = NULL;
// read infomation bits' locations
for (i = 0; i < InfoLength; i++ )
{
fscanf(file, "%d", &infoBitsLocation[i]);
infoBitsLocation[i]--;
}
fclose(file);
}
/*funtion: encode information into code
parameter: s[][EncodedLength] generation matrix
info[] information to be encoded
coded[] codeword */
void encoder(int S[][EncodedLength],int info[],int coded[])
{
int p = 0;
int q = 0;
int b = 0;
for ( p = 0 ; p < EncodedLength ; p++ )
{
b = 0;
for ( q = 0 ; q < G_RowNum; q++)
{
if ( S[q][p] >= 0 )
b = b + info[S[q][p]];
}
b = b%2;
coded[p] = b;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -