init_uvlc.cpp

来自「DPCM编码的联合信源信道译码」· C++ 代码 · 共 89 行

CPP
89
字号
#include "UVLC.h"
#include "init_UVLC.h"
#include "init_system.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

Str_sys_UVLC sys_UVLC;

void Init_UVLC()
{

//	sys_UVLC.alphabet_size = 16;
//	sys_UVLC.maxin = 9;
//	sys_UVLC.BESTC = 16;
	

	sys_UVLC.alphabet_size = 4;
	sys_UVLC.maxin = 2;
	sys_UVLC.BESTC = 1;


	int i,j,k;

	sys_UVLC.bpl = ivector(0,256-1);
	
	sys_UVLC.code = imatrix(0,sys_UVLC.alphabet_size,0,sys_UVLC.maxin);   //alphabet_size=16,maxin=9

	sys_UVLC.word=ivector(0,sys_UVLC.maxin-1);
	
	sys_UVLC.hist1=matrix(0,sys_UVLC.alphabet_size-1,0,sys_UVLC.alphabet_size-1); 
	
	sys_UVLC.used_bits_old=imatrix(0,sys_UVLC.alphabet_size-1,0,sys_UVLC.BESTC-1);
	
	sys_UVLC.used_bits_new=imatrix(0,sys_UVLC.alphabet_size-1,0,sys_UVLC.BESTC-1);
	
	sys_UVLC.cost_t=dmatrix(0,sys_UVLC.alphabet_size-1,0,sys_UVLC.BESTC-1);
	
	sys_UVLC.cost_o=dmatrix(0,sys_UVLC.alphabet_size-1,0,sys_UVLC.BESTC-1);
	
	sys_UVLC.cost_n=dmatrix(0,sys_UVLC.alphabet_size-1,0,sys_UVLC.BESTC-1);
	
//	sys_UVLC.received=dvector(0,768-1);
	sys_UVLC.received=ivector(0,sys_spt.message_bits-1);

	sys_UVLC.decoded_out = ivector(0,sys_spt.message_bits*2-1);

	sys_UVLC.encoded = ivector(0,256*2-1);
	
	sys_UVLC.decoded = ivector(0,256*2-1);
	
	sys_UVLC.dpcmsym = ivector(0,256-1);

	sys_UVLC.history=(int ****)malloc(sys_UVLC.alphabet_size*sizeof(int ***));	// history[sys_UVLC.alphabet_size][128][BESTC][2]

	for(i=0;i<sys_UVLC.alphabet_size;i++)
    {
		sys_UVLC.history[i]=(int ***)malloc(256*sizeof(int **));
    }

	for(i=0;i<sys_UVLC.alphabet_size;i++)
		for(j=0;j<256;j++)
		{
			sys_UVLC.history[i][j]=(int **)malloc(sys_UVLC.BESTC*sizeof(int *));
		}
		
	for(i=0;i<sys_UVLC.alphabet_size;i++)
		for(j=0;j<256;j++)
			for(k=0;k<sys_UVLC.BESTC;k++) 
			{
				sys_UVLC.history[i][j][k]=(int *)malloc(2*sizeof(int));
			}

	FILE *fi_prob;
	fi_prob=fopen("prob.bin","rb");

	for(i=0;i<sys_UVLC.alphabet_size;++i)
		for(j=0;j<sys_UVLC.alphabet_size;++j)
		{
			fread(&sys_UVLC.hist1[i][j],sizeof(float),1,fi_prob);
			if(sys_UVLC.hist1[i][j]!=0.) 
				sys_UVLC.hist1[i][j]=-log10(sys_UVLC.hist1[i][j]);
			else
				sys_UVLC.hist1[i][j]=60000.;
		}
	
}

⌨️ 快捷键说明

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