版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《信息論與編碼》實驗指導書目錄TOC\o"1-5"\h\z實驗一 信息熵與圖像熵計算 1實驗二 Huffman編碼實驗 6實驗三 算術編碼實驗 11實驗四 CRC校驗編碼實驗 17-1-實驗一信息熵與圖像熵計算(2學時)一、實驗目的1.復習MATLAB的基本命令,熟悉MATLAB下的基本函數(shù)。2.復習信息熵基本定義,能夠自學圖像熵定義和基本概念。二、實驗內容1.能夠寫出MATLAB源代碼,求信源的信息熵。2.根據(jù)圖像熵基本知識,綜合設計出MATLAB程序,求出給定圖像的圖像熵三、實驗儀器、設備1?計算機一系統(tǒng)最低配置256M內存、P4CPU。2.Matlab仿真軟件-7.0/7.1/2006a等版本Matlab軟件。四、實驗原理MATLAB中數(shù)據(jù)類型、矩陣運算、圖像文件輸入與輸出知識復習。利用信息論中信息熵概念,求出任意一個離散信源的熵(平均自信息量)。自信息是一個隨機變量,它是指某一信源發(fā)出某一消息所含有的信息量。所發(fā)出的消息不同,它們所含有的信息量也就不同。任何一個消息的自信息量都代表不了信源所包含的平均自信息量。不能作為整個信源的信息測度,因此定義自信息量的數(shù)學期望為信源的平均自信息量:1()1()[log]()log()iniipaiHEpEXpa===信息熵的意義:信源的信息熵H是從整個信源的統(tǒng)計特性來考慮的。它是從平均意義上來表征信源的總體特性的。對于某特定的信源,其信息熵只有一個。不同的信源因統(tǒng)計特性不同,其熵也不同。學習圖像熵基本概念,能夠求出圖像一維熵和二維熵。圖像熵是一種特征的統(tǒng)計形式,它反映了圖像中平均信息量的多少。圖像的一維熵表示圖像中灰度分布的聚集特征所包含的信息量,令Pi表示圖像中灰度值為i的像素所占的比例,則定義灰度圖像的一元灰度熵為:2550logiiipp==YH-2-圖像的一維熵可以表示圖像灰度分布的聚集特征,卻不能反映圖像灰度分布的空間特征,為了表征這種空間特征,可以在一維熵的基礎上引入能夠反映灰度分布空間特征的特征量來組成圖像的二維熵。選擇圖像的鄰域灰度均值作為灰度分布的空間特征量,與圖像的像素灰度組成特征二元組,記為(i,j),其中i表示像素的灰度值(0<=i<=255),j表示鄰域灰度(0<=j<=255),2(,)/ijpfijN=上式能反應某像素位置上的灰度值與其周圍像素灰度分布的綜合特征,其中f(i,j)為特征二元組(i,j)出現(xiàn)的頻數(shù),N為圖像的尺度,定義離散的圖像二維熵為:2550logijijipp==YH構造的圖像二維熵可以在圖像所包含信息量的前提下,突出反映圖像中像素位置的灰度信息和像素鄰域內灰度分布的綜合特征.五、實驗步驟1.求解信息熵過程:輸入一個離散信源,并檢查該信源是否是完備集。去除信源中符號分布概率為零的元素。根據(jù)平均信息量公式,求出離散信源的熵。2.圖像熵計算過程:輸入一幅圖像,并將其轉換成灰度圖像。統(tǒng)計出圖像中每個灰度階象素概率。統(tǒng)計出圖像中相鄰兩象素的灰度階聯(lián)合分布矩陣。根據(jù)圖像熵和二階熵公式,計算出一幅圖像的熵。六、實驗報告要求1.按照本節(jié)內容后實驗報告形式書寫。2.實驗總結和心得要詳細,可以根據(jù)自己實驗情況,寫出建議。七、實驗注意事項1.Matlab語言課下多復習,盡量采用模塊化編程方法,通過函數(shù)調用形式運行程序。2.仔細理解、體會圖像熵的概念,能夠將其聯(lián)合熵的概念理解透徹。-3-八、思考題舉例說明圖像熵、信息熵在現(xiàn)實中有何實踐指導意義?附1:信息熵計算源代碼函數(shù)源程序CalEntropy.m%InformationShannonEntropycalculation%jma@,22/08/2007 %array:DiscreteProbabilitiesSet%H:OutputShannonEntropyfunctionH=CalEntropy(array)%Vectornumbernum=length(array);%Checkprobabilitiessumto1:ifabs(sum(array)-1)>.00001,error('Probablitiesdon''tsumto1.')end%%Removeanyzeroprobabilities%%zeroProbs=find(array<eps);if~isempty(zeroProbs),array(zeroProbs)=[];%disp('Removedzeroornegativeprobabilities.')End%%ComputetheentropyH=-sum(array.*log2(array));%單位bit/symbol附2:圖像熵計算源代碼函數(shù)源程序ImgEntropy.m%%%%%%%ImageEntropycalculation%%%%%%%%%jma@,22/08/2007%img:inputimagedata%H1,H2 :Output1&2orderentropyfunction[H1,H2]=ImgEntropy(img)%colorimagetransformationI=imread(img);img=rgb2gray(I);imview(I),imview(img);-4-[ix,iy]=size(img);%computeprobsforeachscalelevelinimageP1=imhist(img)/(ix*iy);temp=double(img);%fortheindexofimagepiexltemp=[temp,temp(:,1)];%correlationprobmatrixbetween[0...255]graylevels CoefficientMat=zeros(256,256);forx=1:ixfory=1:iyi=temp(x,y);j=temp(x,y+1);CoefficientMat(i+1,j+1)=CoefficientMat(i+1,j+1)+1; endend%computetheprobofmatrixP2=CoefficientMat./(ix*iy);H1=0;H2=0;fori=1:256%calculate1ordimageentropyifP1(i)~=0H1=H1-P1(i)*log2(P1(i));end%compute2ordimageentropyforj=1:256ifP2(i,j)~=0H2=H2-P2(i,j)*log2(P2(i,j));endendendH2=H2/2; %meanentropy/symbolsprintf('1ordimageentropyis:%d',H1)sprintf('2ordimageentropyis:%d',H2)函數(shù)調用實例test.m-5%InformationTheoryexperimenttestingfile%jma@,22/08/2007%testingDiscreteShannonEntropy%discreteprobabilitiessetprobSet=[0.150.25];%callCalEntropyfunctionH=CalEntropy(probSet);sprintf('ShannonEntropyis:%d',H)%calculatetheImageentropy[H1,H2]=ImgEntropy('lena.jpg');附3:實驗報告固定樣式實驗報告班級:姓名:學號:組別:同組人:課程名稱:實驗室:實驗時間:(使用實驗報告紙的,以上內容可按照實驗報告紙格式填寫)實驗一信息熵與圖像熵計算一、實驗目的:二、實驗內容與原理:三、實驗器材(設備、元器件、軟件工具、平臺):四、實驗步驟:五、實驗數(shù)據(jù)及結果分析:六、實驗結論:七、思考題八、其他:實驗總結、心得體會及對本實驗方法、手段及過程的改進建議等。-6-實驗二Huffman編碼(2學時)一、實驗目的復習C++程序基本編寫方法,熟悉VC編程環(huán)境。2.會用VC調試Huffman編碼程序。二、實驗內容復習C++代碼基本語法(結構體、樹等數(shù)據(jù)結構定義)根據(jù)Huffman編碼源代碼,學習算法實現(xiàn)流程,培養(yǎng)自己動手能力,在C++編譯器下按步調試跟蹤算法。三、實驗儀器、設備1.計算機一系統(tǒng)最低配置256M內存、P4CPU。2.C++編程軟件一VisualC++7.0(MicrosoftVisualStudio2003) VisualC++8.0(MicrosoftVisualStudio2005)四、實驗原理Huffman編碼原理:①將信源符號按概率從大到小的順序排列,令p(x1)三p(x2)三…三p(xn)②給兩個概率最小的信源符號p(xn-1)和p(xn)各分配一個碼位“0”和“1”,將這兩個信源符號合并成一個新符號,并用這兩個最小的概率之和作為新符號的概率,結果得到一個只包含(n—1)個信源符號的新信源。稱為信源的第一次縮減信源,用S1表示。③將縮減信源S1的符號仍按概率從大到小順序排列,重復步驟2,得到只含(n—2)個符號的縮減信源S2。④重復上述步驟,直至縮減信源只剩兩個符號為止,此時所剩兩個符號的概率之和必為1。然后從最后一級縮減信源開始,依編碼路徑向前返回,就得到各信源符號所對應的碼字。Huffman樹的編碼原理:步驟1:將各個符號及其出現(xiàn)頻率分別作為不同的小二叉樹(目前每棵樹只有根節(jié)點)步驟2:在步驟1中得到的樹林里找出頻率值最小的兩棵樹,將他們分別作為-7-左、右子樹連成一棵大一些的二叉樹,該二叉樹的頻率值設為兩棵子樹頻率值之和。步驟3:對上面得到的樹林重復步驟2的做法,直到所有符號都連入樹中為止。五、 實驗步驟VC環(huán)境下,建一個C++控制臺應用程序,并把源代碼考到該程序目錄下。項目文件中含有一個預編譯頭文件,一個主函數(shù)入口文件和Huffman編碼算法文件。在入口文件中,輸入任一個離散信源進行編碼調試。設置好程序斷點,仔細分析Huffman樹每步的建立過程。輸出離散信源中每個符號的Huffman編碼,并與手工運算的結果進行比較。六、 實驗報告要求按照實驗一附3中實驗報告樣式書寫本次實驗報告。總結C++語言學習心得,并結合Huffman編碼實驗總結自己的得失,指出今后自己要練習改進之處。根據(jù)自己實驗情況,對本實驗寫出建議。七、實驗注意事項指針數(shù)據(jù)結構定義typedefstruct{unsignedlongweight;intparent,lchild,rchild;}HTNode,*HuffmanTree;typedefchar**HuffmanCode;//指向存放數(shù)組指針的數(shù)組即二維數(shù)組二叉樹生成操作放在數(shù)組中(節(jié)點n和數(shù)組大小m關系為:m=2*n-1)。每次在樹中找到兩顆最小子樹,其函數(shù)為Select(HuffmanTreeHT,intn,int*s1,int*s2),實際實現(xiàn)的是在數(shù)組中找到最小兩個元素。另外注意C++的數(shù)組起始索引是0,Matlab起始索引是1;程序中為了方便從1開始索引數(shù)組,HT[0].weight的大小設為OxffffffffL。為了輸出二進制Huffman碼,程序最后對每個符號進行深度優(yōu)先搜索,得到該符號的二進制字符,然后進行字符串拷貝,直到最后輸出。-8-八、思考題根據(jù)Huffman算法的C++源程序,試著寫出Huffman編碼的Matlab程序?附1:Huffman編碼源代碼源代碼列表:stdafx.h Huffman.cpp預編譯頭文件:stdafx.h以下代碼#pragmaonce#include<iostream>#include<tchar.h>#include<stdio.h>#include<string.h>#include<stdlib.h>控制臺應用CPP文件:Huffman.cpp#include"stdafx.h"typedefstruct{unsignedlongweight;intparent,lchild,rchild;}HTNode,*HuffmanTree;typedefchar**HuffmanCode;HuffmanCodeHC;voidSelect(HuffmanTreeHT,intn,int*s1,int*s2);voidHuffmanCoding(unsignedlong*w,intn){inti;if(n<=1)return;intm=2*n-1;HuffmanTreep;HuffmanTreeHT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));memset(HT,0,sizeof(HTNode)*(m+1));for(p=HT,i=1;i<=n;++i) { ++p; ++w;p->weight=*w;}-9-ints1,s2;for(i=n+1;i<=m;++i){Select(HT,i-1,&s1,&s2);HT[s1].parent=i;HT[s2].parent=i;HT[i].lchild=s1;HT[i].rchild=s2;HT[i].weight=HT[s1].weight+HT[s2].weight;}HC=(HuffmanCode)malloc((n+1)*sizeof(char*));char*cd=(char*)malloc(n*sizeof(char));cd[n-1]=0;intstart;unsignedlongf;for(i=1;i<=n;++i) {start=n-1;intc;for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent){if(HT[f].lchild==c) cd[--start]='0';else cd[--start]='1';}HC[i]=(char*)malloc((n-start)*sizeof(char));strcpy(HC[i],&cd[start]);}free(HT);//free(cd);}voidSelect(HuffmanTreeHT,intn,int*s1,int*s2){inti;HT[0].weight=(unsignedlong)(-1l);*s1=*s2=0;for(i=1;i<=n;i++)if(HT[i].parent==0){if(HT[i].weight<HT[*s1].weight) { *s2=*s1; *s1=i;-10} elseif(HT[i].weight<HT[*s2].weight) { *s2=i; } }}//函數(shù)測試實例int _tmain(intargc,_TCHAR*argv[]){ const intLEN=3; int i;unsignedlongweight[LEN+1];weight[0]=0;weight[1]=1;weight[2]=7;weight[3]=2;HuffmanCoding(weight,LEN);for(i=1;i<=LEN;i++)printf("%s\n",HC[i]);return0;}//EndofHuffman.cpp-11-實驗三算術編碼(2學時)一、實驗目的進一步學習C++語言概念和熟悉VC編程環(huán)境。2.學習算術編碼基本流程,學會調試算術編碼程序。根據(jù)給出資料,自學自適應0階算術編、解碼方法。二、實驗內容復習C++代碼基本語法(類和虛函數(shù)等面向對象數(shù)據(jù)結構定義)2.根據(jù)實驗提供的源代碼,學習算術編碼實現(xiàn)流程,培養(yǎng)實際動手調試能力和相應的編程技巧。三、實驗儀器、設備1.計算機一系統(tǒng)最低配置256M內存、P4CPU。2.C++編程軟件一VisualC++7.0(MicrosoftVisualStudio2003) VisualC++8.0(MicrosoftVisualStudio2005)四、實驗原理算術編碼基本原理是將編碼消息表示成實數(shù)0和1之間的一個間隔,消息越長,編碼表示它的間隔就越小,表示這一間隔所需的二進制位就越多。算術編碼用到兩個基本的參數(shù):符號的概率和它的編碼間隔。信源符號的概率決定壓縮編碼的效率,也決定編碼過程中信源符號的間隔,而這些間隔包含在0到1之間。編碼過程中的間隔決定了符號壓縮后的輸出。首先借助下面一個簡單的例子來闡釋算術編碼的基本原理??紤]某條信息中可能出現(xiàn)的字符僅有abc三種,我們要壓縮保存的信息為bccb。在沒有開始壓縮進程之前,假設對abc三者在信息中的出現(xiàn)概率一無所知(采用的是自適應模型),暫認為三者的出現(xiàn)概率相等各為1/3,將0-1區(qū)間按照概率的比例分配給三個字符,即a從0.0000到0.3333,b從0.3333到0.6667,c從0.6667到1.0000。進行第一個字符b編碼,b對應的區(qū)間0.3333-0.6667。這時由于多了字符b,三個字符的概率分布變成:Pa=1/4,Pb=2/4,Pc=1/4。按照新的概率分布比例劃分0.3333-0.6667這一區(qū)間,-12-劃分的結果可以用圖形表示為:Pc=1/4+--0.6667|+--0.5834|Pb=2/4||||+--0.4167Pa=1/4|+--0.3333接著拿到字符C,現(xiàn)在要關注上步中得到的c的區(qū)間0.5834-0.6667。新添了c以后,三個字符的概率分布變成Pa=1/5,Pb=2/5,Pc=2/5。用這個概率分布劃分區(qū)間0.5834-0.6667:+--0.6667|Pc=2/5 |+--0.6334Pb=2/5Pb=2/5|+--0.6001Pa=1/5 |+--0.5834輸入下一個字符C,三個字符的概率分布為:Pa=1/6,Pb=2/6,Pc=3/6。接著來劃分c的區(qū)間0.6334-0.6667:-13+--0.6667||TOC\o"1-5"\h\zPc=3/6 ||+--0.6501|Pb=2/6 ||+--0.6390Pa=1/6 |+--0.6334輸入最后一個字符b,因為是最后一個字符,不用再做進一步的劃分了,上一步中得到的b的區(qū)間為0.6390-0.6501,最后在這個區(qū)間內隨便選擇一個容易變成二進制的數(shù),例如0.64,將它變成二進制0.1010001111,去掉前面沒有太多意義的0和小數(shù)點,可以輸出1010001111,這就是信息被壓縮后的結果,由此完成了一次最簡單的算術壓縮過程。如何解壓縮呢?那就更簡單了。解壓縮之前仍然假定三個字符的概率相等。解壓縮時面對的是二進制流1010001111,先在前面加上0和小數(shù)點把它變成小數(shù)0.1010001111,也就是十進制0.64。這時我們發(fā)現(xiàn)0.64在分布圖中落入字符b的區(qū)間內,立即輸出字符b,并得出三個字符新的概率分布。類似壓縮時采用的方法,我們按照新的概率分布劃分字符b的區(qū)間。在新的劃分中,我們發(fā)現(xiàn)0.64落入了字符c的區(qū)間,我們可以輸出字符c。同理,我們可以繼續(xù)輸出所有的字符,完成全部解壓縮過程。2.小數(shù)存儲方法如果信息內容特別豐富,我們要輸出的小數(shù)將會很長很長,該如何在內存中表示如此長的小數(shù)呢?其實,沒有任何必要在內存中存儲要輸出的整個小數(shù)。從上面的例子可以知道,在編碼的進行中,會不斷地得到有關要輸出小數(shù)的各種信息。具體地講,當我們將區(qū)間限定在0.6390-0.6501之間時,我們已經(jīng)知道要輸出的小-14-數(shù)第一位(十進制)一定是6,那么我們完全可以將6從內存中拿掉,接著在區(qū)間0.390-0.501之間繼續(xù)我們的壓縮進程。內存中始終不會有非常長的小數(shù)存在。使用二進制時也是一樣的,我們會隨著壓縮的進行不斷決定下一個要輸出的二進制位是0還是1,然后輸出該位并減小內存中小數(shù)的長度,具體可以參考E1/E2/E3放大原理,及它們之間關系的描述。3.靜態(tài)模型與自適應模型靜態(tài)模型上面的簡單例子采用的是自適應模型,那么如何實現(xiàn)靜態(tài)模型呢?其實很簡單。對信息bccb我們統(tǒng)計出其中只有兩個字符,概率分布為Pb=0.5,Pc=0.5。在壓縮過程中不必再更新此概率分布,每次對區(qū)間的劃分都依照此分布即可,對上例也就是每次都平分區(qū)間。這樣,壓縮過程可以簡單表示為輸出區(qū)間的下限輸出區(qū)間的上限壓縮前0.01.0輸入b0.00.5輸入c0.250.5輸入c0.3750.5輸入b0.3750.4375最后的輸出區(qū)間在0.375-0.4375之間,甚至連一個十進制位都沒有確定,也就是說,整個信息根本用不了一個十進制位。自適應模型既然使用靜態(tài)模型可以很好地接近熵值,為什么還要采用自適應模型呢?要知道,靜態(tài)模型無法適應信息多樣性,例如,上面得出的概率分布沒法在所有待壓縮信息上使用,為了能正確解壓縮,我們必須再消耗一定的空間保存靜態(tài)模型統(tǒng)計出的概率分布,保存模型所用的空間將使我們重新遠離熵值。其次,靜態(tài)模型需要在壓縮前對信息內字符的分布進行統(tǒng)計,這一統(tǒng)計過程將消耗大量的時間,使得本來就比較慢的算術編碼壓縮更加緩慢。另外還有最重要的一點,對較長的信息,靜態(tài)模型統(tǒng)計出的符號概率是該符號在整個信息中的出現(xiàn)概率,而自適應模型可以統(tǒng)計出某個符號在某一局部的出現(xiàn)概率或某個符號相對于某一上下文的出現(xiàn)概率,換句-15-話說,自適應模型得到的概率分布將有利于對信息的壓縮(可以說結合上下文的自適應模型的信息熵建立在更高的概率層次上,其總熵值更小),好的基于上下文的自適應模型得到的壓縮結果將遠遠超過靜態(tài)模型。自適應模型的階通常用“階”(order)這一術語區(qū)分不同的自適應模型。前面例子中采用的是0階自適應模型,該例子中統(tǒng)計的是符號在已輸入信息中的出現(xiàn)概率,沒有考慮任何上下文信息。如果我將模型變成統(tǒng)計符號在某個特定符號后的出現(xiàn)概率,那么,模型就成為了1階上下文自適應模型。舉個例子要對一篇英文文本進行編碼,已經(jīng)編碼了10000個英文字符,剛剛編碼的字符是t,下一個要編碼的字符是h。我們在前面的編碼過程中已經(jīng)統(tǒng)計出前10000個字符中出現(xiàn)了113次字母t,其中有47個t后面跟著字母h。我們得出字符h在字符t后的出現(xiàn)頻率是47/113,我們使用這一頻率對字符h進行編碼,需要-log2(47/113)=1.266bit。對比0階自適應模型,如果前10000個字符中h的出現(xiàn)次數(shù)為82次,則字符h的概率是82/10000,我們用此概率對h進行編碼,需要-log2(82/10000)=6.930bit。考慮上下文因素的優(yōu)勢顯而易見。還可以進一步擴大這一優(yōu)勢,例如要編碼字符h的前兩個字符是gt,而在已經(jīng)編碼的文本中gt后面出現(xiàn)h的概率是80%,那么我們只需要0.322bit就可以編碼輸出字符h。此時,使用的模型叫做2階上下文自適應模型。最理想的情況是采用3階自適應模型。此時,如果結合算術編碼,對信息的壓縮效果將達到驚人的程度。采用更高階的模型需要消耗的系統(tǒng)空間和時間至少在目前還無法讓人接受,使用算術壓縮的應用程序大多數(shù)采用2階或3階的自適應模型。五、實驗步驟項目文件建立步驟同實驗二,下面列出對給定序列的算術編碼步驟:步驟1:編碼器在開始時將“當前間隔”[L,H)設置為[0,1)。步驟2:對每一事件,編碼器按步驟(a)和(b)進行處理(a) 編碼器將“當前間隔”分為子間隔,每一個事件一個。(b) 一個子間隔的大小與下一個將出現(xiàn)的事件的概率成比例,編碼器選擇子間隔對應于下一個確切發(fā)生的事件相對應,并使它成為新的“當前間隔”。-16-步驟3:最后輸出的“當前間隔”的下邊界就是該給定事件序列的算術編碼。六、實驗報告要求1.按照實驗一附3中實驗報告樣式提交本次實驗報告。2.算術編碼學習心得,特別是根據(jù)自適應模型0階編碼,調整概率分布方法。根據(jù)自己實驗情況,寫出自己的做實驗中遇到的具體問題,對本實驗提出建議。七、 實驗注意事項幾個重要概念在實驗前一定搞清楚:1) 編碼概論累加分布;2) 編碼區(qū)間上限和下限迭代算法;3) 自適應模型0階的編碼原理。程序設計時注意內容:1) 基本概論模型的確定(等概率分布,255個字符);2) 自適應調整概率分布;3) E1/E2/E3放大原理,及它們之間關系(認真閱讀參考資料);4) 理解從Buffer中寫bit和讀bit的方法;5) 理解字節(jié)對齊的方法。八、 思考題能否根據(jù)算法流程和C++源代碼寫出Matlab下算術編碼程序?-17-實驗四CRC校驗碼編碼實驗(2學時)一、 實驗目的1.學習CRC編碼基本流程,學會調試循環(huán)冗余校驗碼編碼程序。掌握CRC校驗碼的編碼原理,重點掌握按字節(jié)(Byte)編碼方法。二、 實驗內容根據(jù)實驗原理掌握CRC校驗碼編碼/解碼基本流程。在C++編譯器下能夠調試編碼算法每一個步驟,重點掌握按字節(jié)編碼的過程。三、 實驗儀器、設備1.計算機一系統(tǒng)最低配置256M內存、P4CPU。2.C++編程軟件一VisualC++7.0(MicrosoftVisualStudio2003) VisualC++8.0(MicrosoftVisualStudio2005)四、 實驗原理1.CRC校驗碼介紹CRC校驗的基本思想是利用線性編碼理論,在發(fā)送端根據(jù)要傳送的k位二進制碼序列,以一定的規(guī)則產(chǎn)生一個校驗用的監(jiān)督碼(CRC碼)r位,并附在信息后邊,構成一個新的二進制碼序列數(shù)共(k+r)位,最后發(fā)送出去。在接收端,則根據(jù)信息碼和CRC碼之間所遵循的規(guī)則進行檢驗,以確定傳送中是否出錯。16位的CRC碼產(chǎn)生的規(guī)則是先將要發(fā)送的二進制序列數(shù)左移16位(乘以216)后,再除以一個多項式,最后所得到的余數(shù)既是CRC碼。求CRC碼所采用模2加減運算法則,既是不帶進位和借位的按位加減,這種加減運算實際上就是邏輯上的異或運算,加法和減法等價,乘法和除法運算與普通代數(shù)式的乘除法運算是一樣,符合同樣的規(guī)律。接收方將接收到的二進制序列數(shù)(包括信息碼和CRC碼)除以多項式,如果余數(shù)為0,則說明傳輸中無錯誤發(fā)生,否則說明傳輸有誤。2.按位計算CRC一個二進制序列數(shù)可以表示為求此二進制序列數(shù)的CRC碼時,先乘以216后(左移16位),再除以多項式G(X),所得的余數(shù)就是所要求的CRC碼。-18-可以設:其中Qn(X)為整數(shù),Rn(X
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025下半年四川省廣元市利州區(qū)人力資源和社會保障局考試招聘21人高頻重點提升(共500題)附帶答案詳解
- 2025上半年貴州黔南州事業(yè)單位面向應征入伍大學畢業(yè)生招聘72人高頻重點提升(共500題)附帶答案詳解
- 2025上半年江蘇蘇州昆山市千燈鎮(zhèn)招聘工作人員38人歷年高頻重點提升(共500題)附帶答案詳解
- 2025上半年江蘇建湖縣事業(yè)單位招聘擬聘歷年高頻重點提升(共500題)附帶答案詳解
- 2025上半年四川省眉山市廣播電視臺考試招聘10人高頻重點提升(共500題)附帶答案詳解
- 2025上半年四川瀘州市納溪區(qū)事業(yè)單位招聘工作人員63人歷年高頻重點提升(共500題)附帶答案詳解
- 2025上半年四川樂山馬邊縣事業(yè)單位招聘工作人員111人歷年高頻重點提升(共500題)附帶答案詳解
- 工業(yè)園區(qū)土地復墾承諾書
- 通訊網(wǎng)絡建設合同審核流程
- 2024年短期借款協(xié)議模板詳細版版
- 2025人教版九年級英語全冊知識點清單
- 醫(yī)院緊急情況一鍵報警制度建設
- 2024版 新能源電站單位千瓦造價標準
- 企業(yè)培訓師競聘
- 惠州學院《電機與拖動基礎》2023-2024學年期末試卷
- 吊車裝吊籃施工方案
- 山東省濟南市濟鋼高級中學2025屆物理高一上期末檢測試題含解析
- 07FG01防空地下室設計荷載及結構構造
- 湖南省益陽市2023-2024學年高二上學期普通高中期末質量檢測數(shù)學試題 含解析
- 2024年保安員證考試題庫及答案(共250題)
- 天津市七區(qū)2022-2023學年高一上學期期末數(shù)學試卷(原卷)
評論
0/150
提交評論