MATLAB crc.generato,matlab中CRC的函数使用
先學(xué)習(xí)一下matlab中CRC函數(shù)。
語(yǔ)法如下:
h = crc.generator(‘Polynomial', polynomial, ‘param1', val1, etc.)
再看一個(gè)例子就比較好容易理解,
% Construct a CRC generator with a polynomial defined
% by x^3+x+1, with zero initial states,
% and with an all-ones final XOR value:
h = crc.generator('Polynomial', [1 0 1 1], ...
'InitialState', [0 0 0], ...
'FinalXOR', [1 1 1])
Polynomial指的是CRC的生成多項(xiàng)式,上面的是二進(jìn)制表示,同樣可以用十六進(jìn)制表示'0xb',和上面是等效的,InitialState指的是CRC的初始值,FinalXOR指的是最后的輸出需不需要做異或,如果為全零其實(shí)就是保持原來(lái)的值,全1表示為把結(jié)果取反。
這里還有幾個(gè)參數(shù)也按我的理解說(shuō)一下。ReflectInput這是個(gè)布爾變量,當(dāng)它為true時(shí),進(jìn)入移位寄存器是按byte進(jìn)去的,所以要求多項(xiàng)式的長(zhǎng)度必須是8的倍數(shù)。它的default值是false。
我項(xiàng)目中需要的一個(gè)例子如下:
h = crc_generator('Polynomial',[1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1],'InitialState',[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0],'FinalXOR',[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]);
%這個(gè)多項(xiàng)式為x^16+x^15+x^2+1,注意后面'InitialState'和'FinalXOR'的值都是16個(gè)0.
crc_din = 3;%這里是十進(jìn)制,而且可以用load一個(gè)文件后面的幾行就是為了load一個(gè)文件而處理的
crc_din_bi = de2bi(crc_din,2);%轉(zhuǎn)換成2位的二進(jìn)制,后面的2指的是2位
crc_din_trans = transpose(crc_din_bi);%這個(gè)函數(shù)的意思就是把crc_din_bi這個(gè)矩陣翻轉(zhuǎn),比如原來(lái)crc_din_bi是一個(gè)1x2的矩陣,翻轉(zhuǎn)后變成2x1,前面是行數(shù),后面是列數(shù)
crc_din_trans_reshape = reshape(crc_din_trans,[],1);%中間是一個(gè)方括號(hào)。reshaple的意思是把一個(gè)矩陣串起來(lái),按照一列串起來(lái)
encoded = generate(h,crc_din_trans_reshape);%執(zhí)行CRC
這個(gè)程序運(yùn)行的結(jié)果是
1%原數(shù)據(jù)
1%原數(shù)據(jù)
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
后面16位就是輸出的CRC值,其實(shí)就是0xa
如果要輸出一個(gè)文件
fid = fopen('crc_out.txt','w+');
for cnt = 1 : size(encoded,1)
fprintf(fid,'%-d\n',encoded(cnt));
end
fclose(fid;)
標(biāo)簽:din,函數(shù),generator,crc,FinalXOR,CRC,matlab,Polynomial
來(lái)源: https://www.cnblogs.com/ylsm-kb/p/10554645.html
總結(jié)
以上是生活随笔為你收集整理的MATLAB crc.generato,matlab中CRC的函数使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: matlab求一个方程组的系数矩阵,【求
- 下一篇: iis php session丢失,Se