二进制数除法 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、完整代碼
大家若有興趣,可以下載本人編寫的代碼,鏈接如下:
本實驗完整代碼
該代碼可以實現尋找任意階次的既約多項式
具體用途,在其簡介上已有介紹,歡迎下載~
總結
以上是生活随笔為你收集整理的二进制数除法 matlab,MATLAB求出不可约多项式(实现二进制加法、除法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java面试-Java并发编程(二)——
- 下一篇: matlab窗函数带通滤波器,Matla