?? lr_en_de_code.cpp
字號:
#include "LR_en_de_CODE.h"
using namespace std;
struct Anode_inf
{
bool flag;
int col_num;
double q_dmeg;
double r_meg0;
double r_meg1;
};
struct Bnode_inf
{
bool flag;
int Acol_num;
int Arow_num;
};
Anode_inf Anode_inf_mat[H_row][Hmax_rowdeg];
Bnode_inf Bnode_inf_mat[H_col][Hmax_coldeg];
unsigned char P_MAT[H_row][H_col-H_row];
int rearranged_col[H_row];
int *en_out,*de_out;
double *bit_noise;
void initi();
void HtoP();
void encode(int *out_address);
void add_noise(int * in_adderss,double N0,double * out_adderss);
void decode(double *in_address,double N0,int *out_address);
void read_P_MAT()
{
int temp_int,i;char temp_char;
ifstream Change_col("高斯交換列.txt",ios_base::in);
for(i=0;i<H_row;i++)
{
Change_col>>rearranged_col[i];
//cout<<i<<" "<<rearranged_col[i]<<endl;
}
Change_col.close();
ifstream Pcheck_mat("P_MAT.txt",ios_base::in);
for(i=0;i<H_row;i++)
{
//Pcheck_mat<<(i+1);
Pcheck_mat>>temp_int;
while(Pcheck_mat.peek()==',')
{
Pcheck_mat>>temp_char;
Pcheck_mat>>temp_int;
P_MAT[i][temp_int-1]=1;
}
//Pcheck_mat<<"\n";
}
Pcheck_mat.close();
}
void main()
{
srand( (unsigned)time( NULL ) );
double EbN0=1.0;
double N0;
en_out=(int *) malloc((sizeof(int))*H_col);
de_out=(int *) malloc((sizeof(int))*H_col);
bit_noise=(double *) malloc((sizeof(double))*H_col);
initi();
//
//read_P_MAT();
//or
HtoP();
//
for(int SNR_point=0;SNR_point<10;SNR_point++,EbN0=EbN0+0.2)
{
double wrong_bit_num=0;
cout<<endl<<"信噪比為["<<EbN0<<"]dB"<<endl;
N0=pow(10,(-(EbN0/10)))*(H_col/(H_col-H_row));
for(int smui_block_num=1;smui_block_num<=SIMULATION_BLOCK_NUM;smui_block_num++)
{
encode(en_out);
add_noise(en_out,N0,bit_noise);
decode(bit_noise,N0,de_out);
for(int check=0;check<H_col;check++)
{
if(*(de_out+check)!=*(en_out+check))
{
wrong_bit_num++;// break;
}
}
if(smui_block_num%50==0)
{
cout<<"["<<smui_block_num<<"]分組 ["<<wrong_bit_num<<"]誤碼"<<" ";
cout<<"誤碼率["<<(wrong_bit_num)/smui_block_num/H_col<<"]"<<endl;
}
}//////****分組數(shù)循環(huán)****///////
}////////****信噪比循環(huán)****///////
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -