📄 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; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -