• 大小: 59KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: 其他
  • 标签: C#  

资源简介

信息论实验课上编写的常用编码,有香农编码,霍夫曼编码,费诺编码,写成了windows程序,有界面。

资源截图

代码片段和文件信息

using System;
using System.Collections;
using System.Linq;
using System.Text;
using System.Data;

namespace 实验二
{
    class Fano
    {/**Fano算法 
     *  
     * 1.信源符号按概率递减的方式排列 
     * 2.将排列好的符号分成两组,使每组的概率之和接近相等并对赋于0和1 
     * 3.将每一大组再分组,同2 
     * 4.依次下去,直到只剩一个信源符号 
     * 5.信源符号所对应的码字即为费诺码 
     */
      // Data data;//符号集  
        //double prob;//概率  
        int codelength;//码长  
        /*费诺码的实现*/
        public ArrayList isFano(double[] px)
        {
            ArrayList list = new ArrayList();
            double[] arr = new double[px.Length];
            for (int i = 0; i < px.Length; i++)
            {
                //data = (Data)list.get(i);//得到每一个符号  
                //prob = data.getProb();//取出符号概率  
                arr[i] = px[i];//将概率存放在一个数组中  
            }
            String[] codeword = getGroup(arr 0 arr.Length - 1);//符号编码  
            for (int i = 0; i < codeword.Length; i++)
            {
               // data = (Data)list.get(i);//得到每一个符号  
                //data.setCodeword(codeword[i]);//加上码字  
                //data.setCodeLength(codeword[i].Length());//加上码长  
                //list.set(i data);//加上符号 
                list.Add(codeword[i]);
            }


            return list;//返回改变的列表  
        }
        /*用分组法求出符号的编码*/
        public static String[] getGroup(double[] a int i int j)
        {

            String[] p = new String[a.Length]; //返回的字符编码  
            for (int t = 0; t < a.Length; t++)
            {
                p[t] = ““;//初始化  
            }
            int flag = 0;//分组间隔点  
            if (i < j)
            {
                //采用递归法将数组分为两半  
                double sum = 10;//比较中间量  
                for (int k = i; k <= j; k++)
                {
                    //取累和间距最小量  
                    if (Math.Abs(sumGroup(a i k) - sumGroup(a k + 1 j)) < sum)
                    {
                        //以flag为中间点分别累加左边和右边然后比较  
                        sum = Math.Abs(sumGroup(a i k) - sumGroup(a k + 1 j));
                        flag = k;//取出中间点  
                    }
                }
                String[] p1 = getGroup(a i flag);//递归第一组(左边)  
                String[] p2 = getGroup(a flag + 1 j);//递归第二组(右边)  
                for (int m = i; m <= flag; m++)
                {
                    p[m] = “0“ + p1[m];//第一组赋值0  
                }
                for (int m = flag + 1; m <= j; m++)
                {
                    p[m] = “1“ + p2[m];//第二组赋值1  
                }
            }

            return p;//得到分组后的码字  
        }
        /*求数组第i位到第j位的和*/
        public static double sumGroup(double[] a int i int j)
        {
            double total = 0;
            for (int k = i; k <= j; k++)
            {
                total = total + a[k];
            }
            return total;
        }  
    }
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      16896  2018-12-23 15:31  实验二\实验二\bin\Debug\实验二.exe

     文件      38400  2018-12-23 15:31  实验二\实验二\bin\Debug\实验二.pdb

     文件      11600  2018-12-23 23:02  实验二\实验二\bin\Debug\实验二.vshost.exe

     文件        490  2018-04-12 07:35  实验二\实验二\bin\Debug\实验二.vshost.exe.manifest

     文件       3478  2018-12-17 15:13  实验二\实验二\Fano.cs

     文件       5420  2018-12-09 15:52  实验二\实验二\obj\x86\Debug\DesignTimeResolveAssemblyReferences.cache

     文件       6356  2018-12-23 15:31  实验二\实验二\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache

     文件        774  2018-12-23 23:02  实验二\实验二\obj\x86\Debug\实验二.csproj.FileListAbsolute.txt

     文件        979  2018-12-17 09:24  实验二\实验二\obj\x86\Debug\实验二.csproj.GenerateResource.Cache

     文件       9214  2018-12-16 19:30  实验二\实验二\obj\x86\Debug\实验二.csprojResolveAssemblyReference.cache

     文件      16896  2018-12-23 15:31  实验二\实验二\obj\x86\Debug\实验二.exe

     文件      38400  2018-12-23 15:31  实验二\实验二\obj\x86\Debug\实验二.pdb

     文件        180  2018-12-17 15:13  实验二\实验二\obj\x86\Debug\实验二.Properties.Resources.resources

     文件        180  2018-12-17 15:13  实验二\实验二\obj\x86\Debug\实验二.实验二.resources

     文件        494  2018-12-05 15:22  实验二\实验二\Program.cs

     文件       1350  2018-12-05 15:21  实验二\实验二\Properties\AssemblyInfo.cs

     文件       2870  2018-12-05 15:21  实验二\实验二\Properties\Resources.Designer.cs

     文件       5612  2018-12-05 15:21  实验二\实验二\Properties\Resources.resx

     文件       1096  2018-12-05 15:21  实验二\实验二\Properties\Settings.Designer.cs

     文件        249  2018-12-05 15:21  实验二\实验二\Properties\Settings.settings

     文件      10317  2018-12-21 18:07  实验二\实验二\实验二.cs

     文件       3732  2018-12-17 15:13  实验二\实验二\实验二.csproj

     文件      15898  2018-12-17 09:24  实验二\实验二\实验二.Designer.cs

     文件       5817  2018-12-17 09:24  实验二\实验二\实验二.resx

     文件        869  2018-12-05 15:21  实验二\实验二.sln

    ..A..H.     19456  2018-12-23 23:06  实验二\实验二.suo

     目录          0  2018-12-05 15:21  实验二\实验二\obj\x86\Debug\TempPE

     目录          0  2018-12-23 15:31  实验二\实验二\obj\x86\Debug

     目录          0  2018-12-09 15:52  实验二\实验二\bin\Debug

     目录          0  2018-12-05 15:22  实验二\实验二\bin\Release

............此处省略9个文件信息

评论

共有 条评论