【正文】
串轉(zhuǎn)成數(shù)組 if temp_crc(i)==39。 end end else for i=1:1:(len_scs+1) if scs(i)==temp_sz(jlen_scs1+i) temp_sz(jlen_scs1+i)=0。String39。 sz(i)=1。if len_str1=len_scs errordlg(39。 else scs(i)=0。 else output_str(i)=39。 else er=er+1。,39。實(shí)驗(yàn)過程中遇到的問題如何解決的?問題1: CRC編碼的輸入和運(yùn)算的實(shí)現(xiàn) 解決:因?yàn)檩斎氲氖亲址蛄?,所以不能直接進(jìn)行運(yùn)算,而且如果轉(zhuǎn)成十進(jìn)制數(shù)或者二進(jìn)制數(shù)也不好提卻出來做位運(yùn)算,最終采用數(shù)組形式,這樣0 和 1的提取就很方便問題2:CRC編碼在實(shí)現(xiàn)過程中的移位和除法問題 解決:使用暫存的原碼序列做除法,設(shè)置雙層循環(huán),外層是除法的次數(shù),內(nèi)層是生成式子的長度,即異或運(yùn)算的次數(shù)問題3:CRC的生成式序列需要檢驗(yàn),不能直接用于編碼 解決:對生成式輸入序列做檢測,如果首位或者末位為1,需要報(bào)錯問題4:海明在實(shí)現(xiàn)過程中,對于每位校驗(yàn)碼的計(jì)算問題解決:對每位校驗(yàn)碼負(fù)責(zé)的位進(jìn)行累加,使用兩層循環(huán),外層是校驗(yàn)碼的位數(shù),也就是需要計(jì)算的次數(shù),內(nèi)層是以當(dāng)前處理位數(shù)是否小于總長度的循環(huán),內(nèi)部做加和運(yùn)算,每次加的位數(shù)是2的對應(yīng)次方位。 errordlg(39。 for i=(len_str1len_scs+1):1:len_str1 sz(i)=temp_sz(i)。 end for i=1:1:(len_str1len_scs) if sz(i)==1 output_str(i)=39。139。)。for i=1:1:len_str1 if temp_str(i)==39。039。end%從生成式長度位開始往后循環(huán)做類似于長除法的運(yùn)算,實(shí)際為異或,注意首位為0時(shí)商0for j=(len_scs+1):1:(len_str1+len_scs) if temp_sz(jlen_scs)==0 for i=1:1:(len_scs+1) if temp_sz(jlen_scs1+i)==0 temp_sz(jlen_scs1+i)=0。)。for i=1:1:len_str1 %把原碼的字符串轉(zhuǎn)成數(shù)組,便于后續(xù)處理 if temp_str(i)==39。 校驗(yàn)碼的具體生成過程為:假設(shè)要發(fā)送的信息用多項(xiàng)式C(X)表示,將C(x)左移R位(可表示成C(x)*2R),這樣C(x)的右邊就會空出R位,這就是校驗(yàn)碼的位置。,num2str(num_wrong),39。139。 else%否則校驗(yàn)錯誤,對應(yīng)位置取反后再輸出 if xin(num_wrong)==0 xin(num_wrong)=1。 if check(rj+1)==1 num_wrong=num_wrong+1。 n=n+2。 j=0。%編碼中校驗(yàn)碼的個(gè)數(shù) while((2^(r)1)=len_str) r=r1。len_str=length(temp_str)。 else output_str(i)=39。 %則調(diào)轉(zhuǎn)到下一段,也就是隔一個(gè)2^(j1)的段再進(jìn)行累加 n=n+2。for i=1:1:(k+r) if i==2^(j) %如果該位置為2的次方,則插入校驗(yàn)碼 xin(i)=0。%初始化需要插入的校驗(yàn)碼的位數(shù)r=0。,39。)。String39。,39。139。計(jì)算機(jī)網(wǎng)絡(luò)課程實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)2:抗干擾編碼姓名李