?? channel.c
字號:
/*LINTLIBRARY*/ /*PROTOLIB1*/#include "main.h"#include <math.h>#include "channel.h"#include <stdio.h>#include <stdlib.h>#define Random() ((float)(rand())/(float)(RAND_MAX))/*double drand48();#define Random() drand48()*//*************************************************************************** ** ROUTINE* Channel** FUNCTION* CELP channel* SYNOPSIS* channel(ChannelIn, ChannelType, NumBits, BitError, ChannelOut)** formal** data I/O* name type type function* -------------------------------------------------------------------* ChannelIn int i Frame of input channel data* ChannelType int i Type of channel conditions* NumBits int i Number of bits being transmitted* BitError char i Name of bit error pattern file* ChannelOut int o Frame of output channel data***************************************************************************/void Channel(int ChannelIn[],int ChannelType,int NumBits,char BitError[],float ErrorRate,int frame_num,int **ChannelOut){int i;float rand_num;/* Memory will have to be allocated for ChannelOut to perform other channel conditions */ if (ChannelType != CLEAR && ChannelType != OTHER) { if (frame_num == 1) { *ChannelOut = (int *) calloc(NumBits, sizeof(int)); if(*ChannelOut == NULL) { fprintf(stderr, "Unable to Calloc for ChannelOut\n"); exit(-1); } } for(i=0; i< NumBits; i++) (*ChannelOut)[i] = ChannelIn[i]; } switch(ChannelType) { case CLEAR:/* Clear Channel */ *ChannelOut = ChannelIn; break; case RBER:/* Add Random Bit Errors */ for (i=0; i< NumBits; i++) rand_num = Random(); if (Random() < ErrorRate) { (*ChannelOut)[i] ^= 0x1; } break; case RBLER:/* Add Pseudo-Block Random Errors */ for(i=0; i< NumBits; i++) if(Random() < ErrorRate) if (Random() < 0.5) (*ChannelOut)[i] ^= 0x1; break; case OTHER: if(frame_num==1) printf("Other Error rate not written, using clear channel\n"); *ChannelOut = ChannelIn; break; default:/* Channel is not properly defined */ printf("Channel is Dead\n"); exit(876); break; }}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -