freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于糾錯(cuò)碼的冗余技術(shù)的研究——evenodd碼的設(shè)計(jì)與實(shí)現(xiàn)-論文-閱讀頁(yè)

2024-12-21 18:04本頁(yè)面
  

【正文】 先面對(duì)的問(wèn)題是如何將對(duì)象中的數(shù)據(jù)讀出來(lái)并且將他們組合成符合規(guī)格的數(shù)組。 利用該方法可以分別在每個(gè)對(duì)象的數(shù)據(jù)中獲取相應(yīng)列的數(shù)據(jù)并返回,組成一個(gè)符合規(guī)格的數(shù)組。根據(jù)公式( 1)可以得到該處理單元產(chǎn)生的水平校驗(yàn)位的值,根據(jù)公式( 3)不難得出公共校驗(yàn)因子 S ,再由公式( 2)對(duì)角校驗(yàn)值也就很容易的得到了。 2. 設(shè)計(jì)流程圖 編碼算法的設(shè)計(jì)流程圖如圖 3: 圖 3 編碼設(shè)計(jì)流程圖 3. 算法實(shí)現(xiàn) 編碼算法的實(shí)現(xiàn)如程序清單 3— 1 程序清單 31 EVENODD編碼算法 protected void encode(){ int[][] dataCache , tempMatrix1 , tempMatrix2。 //暫存運(yùn)算過(guò)程中水平校驗(yàn)位的數(shù)據(jù)值的轉(zhuǎn)置數(shù)據(jù) tempMatrix2= new int[tempMemory[0].getColumn()][tempMemory[0].getRow()]。//充當(dāng)數(shù)組轉(zhuǎn)置時(shí)的臨時(shí)變量 dataCache = new int[tempMemory[0].getRow()][]。 i 。//獲得對(duì)象元素中的數(shù)據(jù)中的每一列 ,組成一個(gè)數(shù)組 tempMatrix1[i] = (dataCache)。 // 獲取對(duì)角校驗(yàn)數(shù)據(jù)(公式 2) } //將修復(fù)的數(shù)據(jù)存入對(duì)象 (tempMatrix1, temp)。//水平冗余校驗(yàn)對(duì)象實(shí)例化 (tempMatrix2, temp)。//對(duì)角冗余校驗(yàn)對(duì)象實(shí)例化 } EVENODD 譯碼算法 1. 算法描述 EVENODD 譯碼算法是 EVENODD 碼中的關(guān)鍵,是使該碼能從理論運(yùn)用到現(xiàn)實(shí)的基礎(chǔ)。 EVENODD譯碼算法最多能使 2 個(gè)出錯(cuò)數(shù)據(jù)塊恢復(fù)。由于每個(gè)數(shù)據(jù)塊被破壞的幾率是均等的,不同的數(shù)據(jù)塊被破壞,處理的方法也相應(yīng)有所不同。 ( 2)實(shí)現(xiàn)每種情形的處理方法。最后將每一個(gè)最小數(shù)據(jù)單元恢復(fù)的結(jié)果存儲(chǔ)到錯(cuò)誤數(shù)據(jù)塊相應(yīng)的位置。dataCache [ k ][ error 1 ] = sh [ k ] ^ dataCache [ k ][ error 2 ] 。將修復(fù)的數(shù)據(jù)傳入對(duì)應(yīng)的對(duì)象結(jié)束否是是否是否 圖 4(g) EVENODD譯碼流程圖 3. 算法實(shí)現(xiàn) 譯碼算法的實(shí)現(xiàn)如程序清單 3— 2 程序清單 32 EVENODD譯碼算法 protected void decode(){ if(error1 != 1 amp。 error2 != 1){//有兩個(gè) 數(shù)據(jù)塊 出錯(cuò) int[][] dataCache , tempMatrix1 , tempMatrix2。//暫存正確 數(shù)據(jù)塊 的數(shù)據(jù) tempMatrix1 = new int[tempMemory[0].getColumn()][tempMemory[0].getRow()]。 int [][] temp = new int[tempMemory[0].getRow()][tempMemory[0].getColumn()]。amp。 (tempMemory,0,corectObj,0,)。 for(int i = 0 。 i++){ dataCache = (corectObj, i)。//修復(fù) 數(shù)據(jù)塊 error1; tempMatrix2[i] = (dataCache, (dataCache))。 tempMemory[error1].read(temp)。 tempMemory[error2].read(temp)。amp。amp。 int m = 2。 int[][] tempCache = new int[tempMemory[0].getRow()][]。//存儲(chǔ)增加一行的數(shù)據(jù) for(int i = 0 。 i++){ tempCache = (tempMemory, i)。//增加一行 /**計(jì)算公共因子 */ s = dataCache[(error1 1 + m)%m][m + 1]。 l m 。 } /**恢復(fù)第 error1 個(gè) 數(shù)據(jù)塊 數(shù)據(jù) */ for(int k = 0 。 k++){ tempMatrix1[k][i] = s ^ dataCache[(k + error1 + m)%m][m + 1] 。 l m。 } } } } tempMemory[error1].read(tempMatrix1)。 (tempMemory, 0, corectObj, 0, m)。 for(int i = 0 。 i++){ dataCache = (corectObj, i)。//水平異或 } (tempMatrix2, temp)。 }else if((error1 = 0 amp。 error1 2) amp。 error2 == 1){//原數(shù)據(jù) 塊 和對(duì)角校驗(yàn) 數(shù)據(jù)塊 出錯(cuò) int m = 2。 dataCache = new int[tempMemory[0].getRow()][m]。 i 1。} } for(int i = 0 。 i++){ dataCache = (corectObj, i)。 } (tempMatrix1, temp)。 /**修復(fù) 數(shù)據(jù)塊 error2*/ (tempMemory, 0, corectObj, 0, m)。 i m 。 tempMatrix2[i] = (dataCache,(dataCache)。 tempMemory[error2].read(temp)。amp。amp。amp。 dataCache = new int[tempMemory[0].getRow() + 1][m + 2]。 tempMatrix1 = new int[tempMemory[0].getRow()][tempMemory[0].getColumn()]。 for(int i = 0 。 i++){ int s = 0 。 int[] sd = new int[m]。 tempCache = (tempMemory, i)。 j 。//求公因子 s :將所有校驗(yàn)位相異或 dataCache = (tempCache)。 u m 。 l = m 。amp。} sd[u] = s ^ dataCache[u][m + 1]。 l m 。amp。 } } } /**修復(fù)數(shù)據(jù) */ k = (m (error2 error1) 1) % m。 dataCache[k][error1] = sh[k] ^dataCache[k][error2]。 } for(int j = 0 。 j ++){//數(shù)據(jù)轉(zhuǎn)移 tempMatrix1[j][i] = dataCache[j][error1]。 } } tempMemory[error1].read(tempMatrix1)。 }else{ (error : fail to find the error disk !!)。 } }else if(error2 == 1 amp。 error1 != 1){//只有一個(gè) 數(shù)據(jù)塊 出錯(cuò) int m = 2。 int[][] tempMatrix = new int[tempMemory[0].getColumn()][tempMemory[0].getRow()]。 int [][] temp = new int[tempMemory[0].getRow()][tempMemory[0].getColumn()]。amp。 i m + 1 。 } } for(int i = 0 。 i++){ dataCache = (corectObj, i)。 } (tempMatrix, temp)。 }else if(error1 == 1){//出錯(cuò) 數(shù)據(jù)塊 是對(duì)角校驗(yàn)位 數(shù)據(jù)塊 (tempMemory, 0, corectObj, 0, m)。 i 。 tempMatrix[i] = (dataCache,(dataCache)。 tempMemory[error1].read(temp)。 (0)。 (0)。因此在實(shí)現(xiàn)該功能時(shí)必須實(shí)現(xiàn)該算法的接口。在編碼功能的實(shí)現(xiàn)過(guò)程中,我們必須把輸入的圖片處理成為適合該接口的數(shù)據(jù)。由于輸入數(shù)據(jù)是圖像的格式,首先我們必須利用圖像分割功能將該處理圖像的像素讀出來(lái)并創(chuàng)建一個(gè) pictureInComp 對(duì)象存入其中。由于,每個(gè)對(duì)象數(shù)組的大小要遠(yuǎn)遠(yuǎn)大于 encode算法中所要求的 4 5數(shù)組。 經(jīng)過(guò)編碼算法處理后得到的數(shù)據(jù)將是一個(gè)帶有 4 5大小數(shù)據(jù)的對(duì)象,并不是一張完整的圖片,因此我們必須將這些零碎的小數(shù)組重新組合到一個(gè)與原對(duì)象大小相同的對(duì)象中,直到圖片對(duì)象的每個(gè)像素處理完為止。 在此值得說(shuō)明的一點(diǎn)是,在圖片處理過(guò)程中像素是由 RGB 值構(gòu)成的,我們進(jìn)行的對(duì)像素的編碼實(shí)際上是對(duì) RGB值編碼,編碼后得到的冗余校驗(yàn)數(shù)據(jù)將重新組合成新的像素。唯一不同點(diǎn)就是在調(diào)用譯碼算法之前,我們必須從復(fù)選框中得到出錯(cuò)圖片的編號(hào)。 節(jié)介紹了 EVENODD 譯碼算法的設(shè)計(jì),從上面的敘述我們可以知道,譯碼算法的接口有兩種情況即 decode(pictureInComp[],int) 和decode(pictureInComp[],int,int)。 譯碼功能接口設(shè)計(jì)流程圖 譯碼 功能接口實(shí)現(xiàn)流程圖如圖 6: 圖 5 編碼功能接口實(shí)現(xiàn)流程圖 獲取每張圖片的像素存于數(shù)組 p ix el檢查是否有數(shù)據(jù)對(duì)象讀入使每個(gè)對(duì)象數(shù)據(jù)行列一致i imageArray [ 0 ].getRow ()j imageArray [ 0 ]. getColumn ()分別獲取每個(gè)對(duì)象的固定大小的數(shù)據(jù)并將他們的 R GB 值分離出來(lái)調(diào)用 en co d in g 方法生成每個(gè) R GB 值的冗余校驗(yàn)數(shù)據(jù)將生成的 R GB 校驗(yàn)值重新組合成像素 j + 5 i + 4將經(jīng)過(guò)編碼后的值傳入存儲(chǔ)像素的數(shù)組實(shí)例化冗余校驗(yàn)對(duì)象結(jié)束開(kāi)始在指定位置顯示編碼結(jié)果顯示出錯(cuò)信息是否否是是否 圖 6 譯碼 功能接口實(shí)現(xiàn)流程圖 獲取該圖片的像素存于數(shù)組 p ix el檢查是否有出錯(cuò)圖片選中使每個(gè)對(duì)象數(shù)據(jù)行列一致i imageArray [ 0 ]. getRow ()j imageArray [ 0 ].getColumn ()分別獲取每個(gè)對(duì)象的固定大小的數(shù)據(jù)并將他們的 R GB 值分離出來(lái)根據(jù)錯(cuò)誤域的個(gè)數(shù)調(diào)用d eco d in g 方法生成每個(gè)R GB 值的冗余校驗(yàn)數(shù)據(jù)將生成的 R GB 校驗(yàn)值重新組合成像素 j + 5 i + 4將經(jīng)過(guò)編碼后的值傳入存儲(chǔ)像素的數(shù)組實(shí)例化冗余校驗(yàn)對(duì)象結(jié)束獲取出錯(cuò)圖片的編號(hào)獲取待處理圖片中的最大長(zhǎng) tem p H 寬 tem p W i im ag eArray . len g th該數(shù)據(jù)域是否有圖片實(shí)例化該圖片對(duì)象并將其數(shù)據(jù)屬性設(shè)為 0 i ++開(kāi)始是顯示出錯(cuò)信息否是無(wú)有否是是否否在指定位置顯示編碼結(jié)果 4 軟件操作說(shuō)明 “基于糾錯(cuò)碼的容錯(cuò)技術(shù)之 EVENODD 碼設(shè)計(jì)與實(shí)現(xiàn)” 軟件是基于 java 編譯技術(shù)實(shí)現(xiàn)的,因此該軟件可以在任意操作環(huán)境中運(yùn)行。 很 明顯 ,該軟件主要分為菜單欄、快捷鍵欄和數(shù)據(jù)顯示域三部分。下面我們對(duì)該軟件的 主要操作過(guò)程及測(cè)試結(jié)果做一個(gè)簡(jiǎn)單的介紹。否則系統(tǒng)將對(duì)彈出對(duì)話框?qū)δ愕牟僮鬟M(jìn)行提示,如圖 8。單擊“ File” → 選擇 “ open”或者直接點(diǎn)擊 open 按鈕就會(huì)彈出一個(gè)文件選擇對(duì)話框,如圖 9。單擊“ Edit” → 選擇“ Encode”或者單擊 encode按鈕。執(zhí)行完該功能后生成的冗余校驗(yàn)圖片將顯示在 redundancy Data數(shù)據(jù)域中,如圖 11: 圖 11 編碼結(jié)果 數(shù)據(jù)破壞 為了體現(xiàn)演示的效果,在執(zhí)行 譯碼 操作之前我們必須將要 譯碼 的數(shù)據(jù)破壞 。選擇將要破壞的圖片對(duì)應(yīng)的復(fù)選框,單擊“ Edit” → 選擇“ Data_Destroy”或者單擊 destroy按鈕。在此值得注意的是選擇恢復(fù)數(shù)據(jù)的復(fù)選框最多為
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1