日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

循环冗余码CRC使用matlab实现

發布時間:2025/4/5 循环神经网络 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 循环冗余码CRC使用matlab实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

循環冗余編碼
基本思想:發送端按照給定的規則,在k個信息比特后面增加L個按照某種規則計算的校驗比特;在接收端對收到的信息比特重新計算L個校驗比特。比較接收到的校驗比特和本地重新計算的校驗比特,如果相同則認為傳輸無誤,否則認為傳輸有誤。
循環冗余編碼需要生成多項式,

CRC編碼程序

%CRC循環冗余編碼函數 function crc_encode_scr=crc_encode(scr, poly) %scr為信息多項式系數向量,poly為生成多項式系數向量[],例如,若系數為1100,則輸入為[1 1 0 0] [M,N]=size(poly); scrg=[scr zeros(1,N-1)];%在信息多項式系數后補零 [q,r]=deconv(scrg, poly);%多項式除法q中為商,r為余數,此為十進制多項式除法 r=abs(r); for i=1:length(r)a=r(i);if(mod(a,2)==0)%將余數變為模二結果r(i)=0;elser(i)=1;end end crc=r(length(scr)+1:end);%獲取余項 crc_encode_scr=bitor(scrg,r);%余項加在信息位后面構成編碼

這里起初有一個疑問:模二除和直接十進制除法之后再除2取余數 結果一致嗎?
通過實驗的方式驗證是一致的,數學基礎好像是代數論的問題。
比如對于原信息比特和生成多項式src=[1 1 1 1 1 1 1 1]; poly=[1 0 1 1];
經過簡單的列豎式計算(模二除)得到 crc校驗位是011.

下面看一下 直接十進制除法之后再除2取余數 的結果
得到余數為

然后對2取余數 發現也是 011

分析

deconv函數
不管是u,v還是q,r都是多項式的系數(所以,這是一個長除法的運算)。

>> help deconv deconv - Deconvolution and polynomial division 反卷積和多項式除法This MATLAB function deconvolves a vector v out of a vector u using longdivision, and returns the quotient q and remainder r such that u = conv(v,q)+r.該函數使用長除法從向量u中解出向量v,并且返回商q和余數r,使得u=conv(v,q)+r;,這里conv是多項式乘法[q,r] = deconv(u,v)

bitor函數
返回兩數的異或值

>> help bitor bitor - Bit-wise ORThis MATLAB function returns the bit-wise OR of A and B.C = bitor(A,B)C = bitor(A,B,assumedtype)objout = bitor(netobj1,netobj2)

mod函數
返回余數,取模。

>> help mod mod - Remainder after division (modulo operation)This MATLAB function returns the remainder after division of a by m, where a isthe dividend and m is the divisor.b = mod(a,m)

CRC解碼程序

%解碼 function [crc_decode_rev, error]=crc_decode(rev,poly) %rev為接收到的碼向量,poly為生成多項式系數向量[M,N]=size(poly); [q r]=deconv(rev,poly);%得到長除法之后的商和余數,十進制下 r=mod(abs(r),2);%轉化為二進制下 if r==zeros(1,length(rev))error=0; elseerror=1; end crc_decode_rev=rev(1:length(rev-N+1));%去掉后面校驗碼,得到原始信息比特

總結

以上是生活随笔為你收集整理的循环冗余码CRC使用matlab实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。