资源简介
关于通信原理实验课上各种调制与解调的C程序
代码片段和文件信息
#include
#include
#define n 27
#define m 2*n-1
struct hufmtree
{ float weight;
int lchildrchildparent;
};
struct codetype
{ char bits[n];
int start;
char ch;
};
struct hufmtree tree[m];
struct codetype code[n];
float cwit[n]={0.18590.06420.0127\
0.02180.03170.10310.02080.0152\
0.04670.05750.00080.00490.0321\
0.01980.05740.06320.01520.0008\
0.04840.05140.07960.02280.0083\
0.01750.00130.01640.0005};/*27个字符的概率顺序:‘ ‘‘a‘--‘z‘*/
void HUFFMAN() /*定义HUFFMAN子函数 */
{ int ijp1p2; /* 功能:用哈夫曼算法形成哈夫曼树,*/
float small1small2; /*经过处理哈夫曼树的结构存在于tree[53]中*/
for(i=0;i { tree[i].parent=0;
tree[i].lchild=0;
tree[i].rchild=0;
tree[i].weight=0.0;
}
for(i=0;i tree[i].weight=cwit[i];
for(i=n;i { p1=0;p2=0;
small1=1.0; small2=1.0;
for(j=0;j if(tree[j].parent==0)
if(tree[j].weight { small2=small1;
small1=tree[j].weight;
p2=p1;
p1=j;
}
else if(tree[j].weight { small2=tree[j].weight;
p2=j;
}
tree[p1].parent=i+1;
tree[p2].parent=i+1;
tree[i].lchild=p1+1;
tree[i].rchild=p2+1;
tree[i].weight=tree[p1].weight+tree[p2].weight;
}
} /*HUFFMAN()*/
void HUFFMANCODE() /*定义HUFFMANCODE子函数*/
{ int ijcp; /*功能:根据已有的哈夫曼树对27个字符编码,*/
struct codetype cd; /*经过处理,第i个字符的码字存于code
[i].bits[27中*/
for(i=0;i { cd.start=n;
c=i+1;
p=tree[i].parent;
while(p!=0)
{ cd.start--;
if(tree[p-1].lchild==c)
cd.bits[cd.start]=‘0‘;
else cd.bits[cd.start]=‘1‘;
c=p;
p=tree[p-1].parent;
}
code[i]=cd;
}
code[0].ch=‘ ‘; /*将空格和26个字母输入到code[27].ch内*/
for(i=1;i code[i].ch=‘a‘+i-1;
} /*HUFFMANCODE()*/
void CODE()
{ int ijl=0t;
char s[128]={0};
printf(“input the words you want to code(大小写均可)\n“);
getchar();
scanf(“%c“&s[l]);
while(s[l]!=‘\n‘)
{ l++;
scanf(“%c“&s[l]);
}
for(i=0;i { if(s[i]==‘ ‘)
j=0;
else if((s[i]>=‘a‘)&&(s[i]<=‘z‘))
j=s[i]+1-‘a‘;
else if((s[i]>=‘A‘)&&(s[i]<=‘Z‘))
j=s[i]+1-‘A‘;
for(t=code[j].start;t printf(“%c“code[j].bits[t]);
printf(“ “);
}
} /*CODE()*/
void DECODE()
{ int i=m-1k=0jco=0;
char ak[256];
char cho[64];
printf(“input 0 or 1 you want to decode\n“);
getchar();
scanf(“%s“ak);
k=strlen(ak);
for(j=0;j { if(ak[j]==‘0‘)
i=tree[i].lchild-1;
else if(ak[j]==‘1‘)
i=tree[i].rchild-1;
if(tree[i].lchild==0)
{ cho[co]=code[i].ch;
co++;
i=m-1;
}
}
for(j=0;j printf(“%c“cho[j]);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1265 2006-07-03 16:42 通信原理C程序\FFT.CPP
文件 3531 2006-06-04 14:59 通信原理C程序\Haffman.cpp
文件 2339 2006-07-10 15:37 通信原理C程序\LI‘BUFEN.CPP
文件 1945 2006-06-04 15:12 通信原理C程序\LI‘DPSKcha.CPP
文件 1943 2006-06-04 15:13 通信原理C程序\LI‘DPSKton.CPP
文件 1681 2006-07-03 16:40 通信原理C程序\LI‘FM.CPP
文件 2818 2006-07-17 16:17 通信原理C程序\LI‘PCM.CPP
文件 1456 2006-07-03 16:59 通信原理C程序\QKL DSB.CPP
文件 1669 2006-07-03 16:49 通信原理C程序\SSB env.CPP
文件 1587 2006-06-04 15:33 通信原理C程序\SSB ton.CPP
文件 2109 2006-07-03 16:48 通信原理C程序\VSB env.CPP
文件 2020 2006-06-04 15:27 通信原理C程序\VSB ton.CPP
文件 2041 2007-11-05 22:00 通信原理C程序\DRAW.CPP
文件 1334 2007-11-05 22:01 通信原理C程序\LI‘AM.CPP
....SH. 9 2008-01-18 08:38 通信原理C程序\_desktop.ini
目录 0 2006-07-14 08:34 通信原理C程序
----------- --------- ---------- ----- ----
27747 16
相关资源
- 代码客:G-TcpServer(IOCP) 1.0 正式版及
- CY7C68013A固件程序(用于摄像机采集)
- keil vcom windows 7 64bit 驱动
- RSA AES DES ECC加密算法源码
- 密码学课程设计:DES加密解密算法的
- PSCAD风电建模实例双馈风力发电机的
- 用C 实现的对网络上的ARP数据包进行
- 可编辑的CListctrl 支持CEDIT文本框,C
- 网络(UDP)转串口程序
- STC12C系列单片机函数库
- vc URL编解码类
- vc编写中国象棋详细源码注释并附有视
- LDA 人脸识别
- MCGS与单片机通信
- windows ce 系统的GPIO驱动程序
- Microsoft基本类库 (MFC)(C 库)
- AR模型的c 程序
- c 图形面积计算 利用继承与多态
- 数据结构用C 写的停车场系统源代码
- C 纸牌游戏——21点
- Bochs入门教程[操作系统第一步]
- Siemens PLC编程精品例程11.机械手GRAPH
- 一个简单实用个人日记管理系统
- 带时间温度显示的室内灯光控制系统
- 图片存储到数据库保存二进制文件并
- Cad坐标转换工具,可进行批量转换
- B-树 C 实现 基本功能
- 单片机控制的步进电机正反转和加速
- TCP 发包工具(windows)
- VC 围棋源代码
评论
共有 条评论