200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 二进制数除法 matlab MATLAB求出不可约多项式(实现二进制加法 除法)

二进制数除法 matlab MATLAB求出不可约多项式(实现二进制加法 除法)

时间:2024-04-12 12:26:41

相关推荐

二进制数除法 matlab MATLAB求出不可约多项式(实现二进制加法 除法)

本人的课堂小作业,发现网上没有完全整合好的算法,所以用MATLAB实现了一下

1、 什么是不可约多项式?

就相当于素数一样,除了1和本身之外不能被其他多项式整除的多项式就称为不可约多项式,也叫做既约多项式

这里可以参考百度百科

既约多项式-百度百科

2、实现该算法所需要完成的准备

1、

多项式的除法运算,在MATLAB中有一个函数deconv()可以使用,所以本次实验采用MATLAB编程实现

代码如下:

[c,d]=deconv(x,y) %其中x,y是两个多项式的系数,c,d分别为商和余数

举例如下:

2、

要实现用for循环来寻找是否存在除1和本身之外的其他多项式,就得实现一个二进制的累加运算。

类似于找素数的实验,将1~本身的数都除一下,如果有能除尽的,直接判定其不是素数。

而二进制的累加运算可以通过先转十进制,再转二进制来实现

代码如下:

a=dec2bin((bin2dec(m)+bin2dec(n))) %先转为十进制,加完后再转为二进制

实际上此实验中,并不需要这么转化,因为可以直接进行十进制的累加,在计算多项式除法的时候再转为二进制进行运算即可

所以只需要运用其中的 dec2bin() 函数

举例如下:

3、

注意到,第二步转化成的二进制是字符串型,也就是‘111101’这样的类型,而第一步中的x,y需要的是数值型的矩阵,怎么进行转换呢?

这里直接上图,代码详见最后《完整代码》

这一步可以说是全文最重要的一步,转化之后就可以进行deconv()运算了

如下图:

4、

按理来说,到第三步就可以进行程序的编写了,但是为了数据保存的方便性课可看性,这里介绍一个str2num()函数

它是将字符串型二进制转化成数值型,可看性更高

举例如下:

这里可以看出str2num()函数和dec2bin() 函数的区别

3、编写程序

其实本实验的算法跟找素数的算法相差不多,在经过上述步骤后,便可以自主进行程序编写。

本人以最高次数为5的多项式为例,找出其中的既约多项式(不可约多项式)

最后结果如下:

1) 既约多项式

2) 本源多项式

同时也可以看出本源多项式和既约多项式的关系是子集的关系

4、完整代码

大家若有兴趣,可以下载本人编写的代码,链接如下:

本实验完整代码

该代码可以实现寻找任意阶次的既约多项式

具体用途,在其简介上已有介绍,欢迎下载~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。