线性分组码编码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一线性分组码编码实验内容:
1、在GF(2)上,已知(7,4)线性分组码C的生成矩阵为
1000011
0100111
G
0010110
0001101
⎡⎤
⎢⎥
⎢⎥=
⎢⎥
⎢⎥
⎣⎦
,
请用VC实现该码的编码,并给出信息位和码字的对应列表;
2、在GF(2)上,请编程实现以上述矩阵为检验矩阵的码的编码,并给出信息位和码字的对应列表。
实验报告格式:
1.实验目的;
2.实验环境;
3.实验内容;
4.算法设计;
5.详细设计(含程序代码,主要函数说明,调试结果);
package com.former;
import java.awt.*;
import javax.swing.*;
public class XinxiweiandMazi extends JFrame {
NewPanel newpanel=null;
public static void main(String[] args) {
XinxiweiandMazi xx=new XinxiweiandMazi();
Caculation ct=new Caculation();
rmation();
ct.resoult(rmation());
}
//创建构造函数进行初始化
public XinxiweiandMazi()
{
newpanel=new NewPanel();
//将面板添加到JFrame中
this.add(newpanel);
//设置窗体
this.setTitle("线性分组码编码 02");
this.setSize(500,600);
this.setVisible(true);
this.setLocation(100, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
//创建一个面板,用于显示信息
class NewPanel extends JPanel
{
Caculation cat=new Caculation();
//覆盖paint()方法
public void paint(Graphics g)
{
super.paint(g);
g.setColor(Color.CYAN);
g.fillRect(0, 0, 800, 600);
//修改画笔
g.setColor(Color.black);
//设置字体的类型:字体的形状,加粗,大小!
Font myfont=new Font("华文新魏",Font.PLAIN,20);
//显示我创作新的字体
g.setFont(myfont);
g.drawString("码字", 10, 30);
//定义数据的坐标
int x=0;
int y=0;
//画出信息编码
for(int i=0;i<16;i++)
{
for(int j=0;j<7;j++)
{
//画出信息编码
g.drawString(cat.arr[i][j]+" ", x, y+70);
x+=15;
}
//从新设置坐标
x=0;
y+=30;
}
//画出信息位
g.drawString("相对应的信息位", 130, 30);
y=0;
for(int i=0;i<16;i++)
{
for(int j=0;j<4;j++)
{
//画出信息位
g.drawString(cat.arr1[i][j]+"", x+150, y+70);
x+=15;
}
x=0;
y+=30;
}
}
}
//创建一个类,用来计算当用户输入信息位,计算出相对应的码字class Caculation
{
//定义数组的行数和列数
static int rows=4;
static int columns=7;
//定义生成矩阵G
int G[][]={{1,0,0,0,0,1,1},
{0,1,0,0,1,1,1},
{0,0,1,0,1,1,0},
{0,0,0,1,1,0,1}};
//定义一个数组,用来存放信息编码
static int arr[][]=new int[rows*rows][columns];
//定义一个矩阵,用来存储信息位的数据
static int arr1[][]=new int[rows*rows][rows];
//写一个函数,功能是生成矩阵所对应的所有信息位public int[][] Information()
{
//定义两个变量,用来控制二进制的转换
int a=0,b=0;
for(int j=0;j { b=a; for(int k=0;k<4;k++) { arr1[j][k]=b%2; b/=2; } //用来完成二进制转换 a++; } return arr1; } //该函数用来完成计算出相对应的信息编码 public void resoult(int arr1[][])