有限域运算和擦除校正码。

pyfinite的Python项目详细描述


简介

pyfinite包是一个用于处理 字段和相关的数学运算。还包括一个通用的 用于对泛型字段执行矩阵运算的矩阵包。作为 说明reed-solomon纠删码的实现是 提供使用这些工具。

粗略地说,“场”是一个数学空间,其中一致的 加法、减法、乘法和除法运算是 定义。“有限域”是元素数为 有限的。也许最常见的有限域是布尔域 当元素为0和1时,加法(和减法)对应于 异或和乘法(和除法)在0和1中正常工作。

更复杂的有限域对于 密码学和纠删码。

用法

通过pip install pyfinite之类的方式安装之后,最好的 开始的方法是看下面的最博士的例子 文件:

  • ffield.py:有关FFieldFElement类,请参见docstring。
    • 这向您展示了如何处理有限域。
  • genericmatrix.py:请参阅GenericMatrix类的docstring。
    • 这将向您展示如何对泛型字段执行矩阵运算。
  • rs_code.py:请参阅RSCode类的docstring。
    • 这向您展示了如何做里德所罗门擦除纠错码。
  • file_ecc.py:请参阅^{tt11}的顶级docstring$ 模块。
    • 演示如何将文件编码为多个片段并解码 从这些碎片的一个子集。

例如,在安装pyfinite并启动python之后 解释器,执行如下操作以查看有关finite的帮助 字段:

>>>frompyfiniteimportffield>>>help(ffield.FField)

或者如果你想潜进去,你可以试试 以下内容:

>>>frompyfiniteimportffield>>>F=ffield.FField(5)# create the field GF(2^5)>>>a=7# field elements are denoted as integers from 0 to 2^5-1>>>b=15>>>F.ShowPolynomial(a)# show the polynomial representation of a'x^2 + x^1 + 1'>>>c=F.Multiply(a,b)# multiply a and b modulo the field generator>>>c8>>>F.ShowPolynomial(c)'x^3'

或者,您可以使用 例如:

>>>importgenericmatrix>>>v=genericmatrix.GenericMatrix((3,3))>>>v.SetRow(0,[0.0,-1.0,1.0])>>>v.SetRow(1,[1.0,1.0,1.0])>>>v.SetRow(2,[1.0,1.0,-1.0])>>>v<matrix0.0-1.01.01.01.01.01.01.0-1.0>>>>vi=v.Inverse()

为了获得一些真正的乐趣,您可以尝试使用泛型矩阵 有限域元素的运算!关于 genericmatrix模块只依赖于标准的python 算术运算符,以便您可以将其用于任何具有sane+的对象, -*/运算符。有关genericmatrix的帮助,请参阅 更多信息。

最后,如果您只想更正擦除,请参阅 rs_codefile_ecc模块,通过类似于

>>>importrs_code,file_ecc>>>help(file_ecc)>>>help(rs_code)

未来工作

这段代码是多年前编写的,托管在麻省理工学院的一个旧网站上 以py_ecc的名义移动到github。它需要 一些爱。尤其是,它可以使用:

  1. 修改以修复pep8/pylint警告和通常更好的python 风格。
  2. 更多文件。
  3. 更多的例子。
  4. travis设置来验证python2和python3中的博士学位。
    • 这些已经过手动验证,但是如果有一个 可以在 自动化方式。

如需帮助或贡献,请访问主项目站点 https://github.com/emin63/pyfinite

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Jboss LinkageError:加载程序约束冲突:解析重写的方法时   java Struts 1:如何使用表单bean设置<html:multibox/>值?   使用Fortify将字段设置为Null时的Java Null取消引用   用java对连接字符的图像进行分割   java无法使用Quarkus模拟,NullPointer异常,无法找到相关导入   html试图使iframe垫片与Java小程序上的CSS下拉菜单一起工作   java无法获取Base64。decodeBase64正常工作(Commons编解码器)   java为什么我不能通过点击打开jar文件?   java当用户第一次使用预先填充的sqlite数据库时,安卓应用程序如何添加新的列或表?   在tomcat中安装java GoDaddy SSL证书。。。没有与私钥匹配的证书   java试图实现一些伪代码、算法   java如何读取其他按钮id,避免所有转到第一个按钮   java使用单个   oop为什么Java Map不扩展集合?