matlab多项式除法降阶,二进制多项式除法研究
二進(jìn)制多項(xiàng)式除法研究
1、伽羅華域二進(jìn)制除法
matlab演示過程:
>> a = gf([1 0 1
1],1)
a
= GF(2) array.
Array
elements =
1
0
1
1
>> b = gf([1 1
0],1)
b = GF(2)
array.
Array
elements =
1
1
0
>> c = deconv(a,b)
c = GF(2)
array.
Array
elements =
1
1
>> [c,d] =
deconv(a,b)
c = GF(2)
array.
Array
elements =
1
1
d = GF(2)
array.
Array
elements =
0
0
0
1
>>
CRC-32計(jì)算舉例:
>> a = gf([0 0 0 0 0 0 0 1 0
0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0
0 0 1 1 0],1);
>> b = gf([1 0 0 0 0 0 1 0 0
1 1 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 0 1 1 0 1 1 1],1)
>> [c,d] =
deconv(a,b)
c = GF(2)
array.
Array
elements =
0
0
0
0
0
0
0
1
0
0
0
0
0
1
1
0
d = GF(2)
array.
Array
elements =
Columns 1 through 18
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
Columns 19 through 36
0
1
1
0
0
0
1
0
0
1
1
1
1
1
1
1
1
1
Columns 37 through 48
1
1
1
1
1
0
1
1
0
1
0
0
>>
2、LFS二進(jìn)制除法
3、用MATLAB實(shí)現(xiàn)上面兩種方法
%二進(jìn)制多項(xiàng)式除法研究
clear
clc
%輸入?yún)^(qū)域
LFS_L =
4;%LFS長度
g = [1 0 1
1];%線性反饋一位寄存器系數(shù),g=[1 0 1 1]對應(yīng)g(x)=x^4 + (x^3 + x + 1),最高位默認(rèn)為1
A1 = [1 0
1 1 1];%輸入序列,A1 = [1 0 1 1 1]對應(yīng)x^4 + x^2 + x + 1
%下面的代碼實(shí)現(xiàn)除法:(A1*x^LFS_L)/g
%舉例:
� = [1 0 1
1 1]對應(yīng)x^4 + x^2 + x + 1
%g=[1 0 1
1]對應(yīng)g(x)=x^4 + (x^3 + x + 1),最高位默認(rèn)為1
%LFS_L =
4
%則:(A1*x^LFS_L)/g = [(x^4 + x^2 + x + 1)*x^4]/[x^4 +
(x^3 + x + 1)]
%除法結(jié)果應(yīng)該為:x^4 + x^3 + 1,二進(jìn)制格式:[1 1 0 0 1]
%余數(shù)結(jié)果應(yīng)該為:x + 1,二進(jìn)制格式:[0 0 1 1]
%初始化
D =
zeros(1,LFS_L);%寄存器當(dāng)前狀態(tài)
D_next =
zeros(1,LFS_L);%寄存器下一個狀態(tài)
A2 =
zeros(1,LFS_L);%填充序列,添加到輸入序列末尾
A =
[A1,A2];%相當(dāng)于A1*x^LFS_L
LFS_out =
zeros(1,length(A));%線性反饋移位寄存器的輸出,相當(dāng)于除法結(jié)果
k =
0;
m =
0;
%1、伽羅華域方法
A_gf =
gf(A,1);
g_gf =
gf([1,g],1);
disp('%%%用伽羅華域方法實(shí)現(xiàn)二進(jìn)制多項(xiàng)式除法%%%')
[div_rst_gf,div_remainder_gf] =
deconv(A_gf,g_gf)
%2、線性反饋移位寄存器方法
g =
g(end:-1:1);
for k =
1:length(A)
D_next(1) = xor(A(k),D(LFS_L));
for m = 2:LFS_L
if(g(m)==1)
D_next(m) = xor(D(m-1),D(LFS_L));
else
D_next(m) = D(m-1);
end
end
LFS_out(k) = D_next(LFS_L);
D = D_next;
end
disp('%%%用LFS實(shí)現(xiàn)二進(jìn)制多項(xiàng)式除法%%%')
disp('線性反饋移位寄存器結(jié)構(gòu):')
disp('*************************************************************************')
disp('
_____________________________________________________________');
disp('
|g0
|g1
|g2
|g3
...
|gm');
disp('
v
v
v
v
...
|');
disp('輸入序列--> + -->[D0]-- +
-->[D1]-- + -->[D2]-- +
-->[D3]--...
-->[Dm-1]--');
disp('*************************************************************************')
disp('線性反饋移位寄存器系數(shù)(高->低,不包含最高位gm,最高位默認(rèn)為1):'),g
disp('輸入序列+填充序列(高->低,填充序列長度為LFS寄存器個數(shù)):'),A
disp('A/g除法結(jié)果(高->低):'),div_rst =
LFS_out(LFS_L:length(LFS_out)-1)%除法結(jié)果
disp('A/g余數(shù)(高->低):'),div_remainder = D(end:-1:1)%余數(shù)
4、MATLAB運(yùn)行結(jié)果
%%%用伽羅華域方法實(shí)現(xiàn)二進(jìn)制多項(xiàng)式除法%%%
div_rst_gf
= GF(2) array.
Array
elements =
1
1
0
0
1
div_remainder_gf = GF(2) array.
Array
elements =
0
0
0
0
0
0
0
1
1
%%%用LFS實(shí)現(xiàn)二進(jìn)制多項(xiàng)式除法%%%
線性反饋移位寄存器結(jié)構(gòu):
*************************************************************************
_____________________________________________________________
|g0
|g1
|g2
|g3
...
|gm
v
v
v
v
...
|
輸入序列--> +
-->[D0]-- + -->[D1]-- +
-->[D2]-- + -->[D3]--...
-->[Dm-1]--
*************************************************************************
線性反饋移位寄存器系數(shù)(高->低,不包含最高位gm,最高位默認(rèn)為1):
g
=
1
1
0
1
輸入序列+填充序列(高->低,填充序列長度為LFS寄存器個數(shù)):
A
=
1
0
1
1
1
0
0
0
0
A/g除法結(jié)果(高->低):
div_rst
=
1
1
0
0
1
A/g余數(shù)(高->低):
div_remainder =
0
0
1
1
總結(jié)
以上是生活随笔為你收集整理的matlab多项式除法降阶,二进制多项式除法研究的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab除法使用broadcast机
- 下一篇: spring cloud gateway