美文网首页嵌牛IT观察
Matlab中的有限域计算

Matlab中的有限域计算

作者: wrl_30f5 | 来源:发表于2020-11-05 14:58 被阅读0次

姓名:王瑞麟         学号:20011210581

转载自 https://blog.csdn.net/u010450214/article/details/50624059 作者:倾绝

有删改

【嵌牛导读】编码及密码函数设计等领域的工作,常常涉及有限域的构造和计算。用C或C++自行定义有限域元素和域上的运算是可行的,但很多时候没有必要。专用于代数系统处理的软件Magma可有效支持各类有限域上的运算,matlab也自带在 GF(2) 扩域上进行的有限域构造及计算函数库。本次转载的这篇文章的部分章节较为详细地介绍了matlab中涉及计有限域的一些函数及其用法。

【嵌牛鼻子】有限域 matlab

【嵌牛正文】

一、Matlab中的有限域(元素)的生成原理介绍

Matlab 中自带的有限域的计算是在 GF(2^m) 上进行的,即在二元域 GF(2)的扩域中进行计算,其中 1≤m≤16.

Matlab构造有限域元素(结合内置的运算逻辑,也就同时构造了一个有限域)的做法是:

这样生成的GF(2^m)中的元素本质上是2^m个次数小于m的GF(2)上的多项式,域上的加法和乘法运算分别为模P(D)的加法和乘法。显然可作如下对应(以GF(2^3)为例,取P(D)=D^3+D+1):

基于上述对应,Matlab将有限域GF(2^m)中的元素(本质上是多项式)显示为0,1,...,2^m-1.但注意这只是视觉效果,这些0,1,...2^m-1的数据类型是gf型,配合接下来要介绍的一些函数会很自然地理解。

二、定义有限域数组

在 Matlab 中,函数 gf 用来定义一个有限域数组,函数申明如下:

X_GF = GF(X,M,PRIM_POLY)

这个函数的作用是以数组的形式创建有限域GF(2^M),选取的本原多项式是PRIM_POLY(填写系数对应的二进制数换算而得的十进制数),且限定M为一个1至16间的整数。数组中的元素将显示为0,1,...2^M-1,数据类型为gf.

用例:生成有限域GF(2^3)中的所有元素,选取的本原多项式为P(D)=D^3+D^2+1

也可不指定本原多项式,Matlab将选取默认的本原多项式,效果如下:

生成的有限域中的数组可以参与运算(+、、.、.^、\等). 注意:参与运算的操作数必须来自同一个有限域,用于生成有限域的本原多项式也必须相同!

一个典型的例子是计算有限域的乘法表如下:

>> GF8 = gf(0:7,3)

GF8 = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)

Array elements =

  0  1  2  3  4  5  6  7

>> GF8'*GF8

ans = GF(2^3) array. Primitive polynomial = D^3+D+1 (11 decimal)

Array elements =

  0  0  0  0  0  0  0  0

  0  1  2  3  4  5  6  7

  0  2  4  6  3  1  7  5

  0  3  6  5  7  4  1  2

  0  4  3  7  6  2  5  1

  0  5  1  4  2  7  3  6

  0  6  7  1  5  3  2  4

  0  7  5  2  1  6  4  3

>> GF8 = gf(0:7,3,13)

GF8 = GF(2^3) array. Primitive polynomial = D^3+D^2+1 (13 decimal)

Array elements =

  0  1  2  3  4  5  6  7

>> GF8'*GF8

Warning: Lookup tables not defined for this order 2^3 and

primitive polynomial 13.  Arithmetic still works

correctly but multiplication, exponentiation, and

inversion of elements is faster with lookup tables.

Use gftable to create and save the lookup tables.

> In gf.gettables at 35

  In gf.mtimes at 20

ans = GF(2^3) array. Primitive polynomial = D^3+D^2+1 (13 decimal)

Array elements =

  0  0  0  0  0  0  0  0

  0  1  2  3  4  5  6  7

  0  2  4  6  5  7  1  3

  0  3  6  5  1  2  7  4

  0  4  5  1  7  3  2  6

  0  5  7  2  3  6  4  1

  0  6  1  7  2  4  3  5

  0  7  3  4  6  1  5  2

在这里我们用两个不同的本原多项式构造了GF(2^3),得到了2张不同的乘法表。虽然同阶的有限域总是同构的,且有限域的非零元全体关于乘法构成循环群,但得到不同乘法表的结果并不令人奇怪,因为用不同本原多项式定义的2个同阶有限域,它们各自的本原元素及本原元素各幂次(时刻记住这里的元素本质是多项式)的系数本身就不保证是相同的或有强烈的联系。

三、与本原多项式相关的函数

其他还有一些相关函数,可见matlab帮助。

相关文章

  • Matlab中的有限域计算

    姓名:王瑞麟 学号:20011210581 转载自https://blog.csdn.net/u010450...

  • 两分钟搞定Python读取matlab的.mat数据

    Matlab是学术界非常受欢迎的科学计算平台,matlab提供强大的数据计算以及仿真功能。在Matlab中数据集通...

  • 两分钟搞定Python读取matlab的.mat数据

    Matlab是学术界非常受欢迎的科学计算平台,matlab提供强大的数据计算以及仿真功能。在Matlab中数据集通...

  • Matlab/Octave 练习一:基础矩阵操作

    前言 在Matlab\Octave中,矩阵计算是常见形式,矩阵也是数据集导入储存的常见形式,而且在Matlab\O...

  • MATLAB 绘图(一)

    概述 MATLAB 经常用于科学研究中的科学计算,因此 MATLAB 也支持完善的绘图功能,本次主要介绍 MATL...

  • MATLAB计算转移矩阵源代码

    如何用MATLAB计算转移矩阵 如何用MATLAB计算马尔科夫矩阵 如何用MATLAB实现马尔科夫过程 这些都是一...

  • 商业数学软件MATLAB R2019a 中文版

    MATLAB R2019a Mac中文版出来啦!!matlab r2019a在数学类科技应用软件中在数值计算方面首...

  • ECC相关概念

    有限域和阶 一个域的元素是有限的,称为有限域。有限域中元素的个数被称为有限域的阶。 素域Fp 域中的元素用整数0,...

  • RGB转YCbCr

    在MATLAB中 在Python中 方法一:利用skimage中的转换函数 方法二:利用公式计算 读取图片,并获取...

  • armadillo + openblas

    直到今天,我所做的大部分数值计算工作都是在matlab中完成的,matlab简单的语言特性和出色的运算速度不愧是理...

网友评论

    本文标题:Matlab中的有限域计算

    本文链接:https://www.haomeiwen.com/subject/zjiovktx.html