專利名稱::應(yīng)用于對(duì)各類碼進(jìn)行編碼和解碼的原地變換的制作方法應(yīng)用于對(duì)各類碼進(jìn)行編碼和解碼的原地變換相關(guān)申請(qǐng)的交叉引用本申請(qǐng)要求于2005年6月10日提交的、'其內(nèi)容出于所有用途通過(guò)全文援引包括于此的美國(guó)專利申請(qǐng)S/N60/689,632的優(yōu)先權(quán)并是其非臨時(shí)申請(qǐng)。發(fā)明領(lǐng)域本申請(qǐng)一般涉及數(shù)據(jù)編解碼,尤其涉及在無(wú)需使用大量輔助存儲(chǔ)器的情況下計(jì)算數(shù)據(jù)的線性變換。發(fā)明背景許多應(yīng)用通過(guò)變換在以下被稱為"源塊"的給定數(shù)據(jù)塊來(lái)實(shí)現(xiàn)它們的結(jié)果。如在此所使用的,措辭"源塊"是指存儲(chǔ)在一個(gè)或多個(gè)源上的任何數(shù)據(jù)。因此,來(lái)自文件服務(wù)器或計(jì)算機(jī)存儲(chǔ)設(shè)備的文檔、圖像和文件都是源塊的示例。源塊可以具有未知大小(諸如從流送源的輸出所取出的源塊)或它們可以具有已知大小(諸如存儲(chǔ)在硬盤(pán)上的一兆字節(jié)的圖像)??傊?,源塊是一個(gè)或多個(gè)源碼元的序列,其中每個(gè)源碼元是該源塊中具有位置和值的一段數(shù)據(jù)。這里,源塊的變換是指為了實(shí)現(xiàn)某一結(jié)果而對(duì)該源塊執(zhí)行的動(dòng)作。例如,在源塊由諸如相機(jī)的外圍設(shè)備來(lái)捕捉的情形中,一種可能的變換是將該源塊壓縮到顯著更小的大小從而便于其在更小的存儲(chǔ)設(shè)備上存儲(chǔ)或便于更快地傳輸?shù)揭粋€(gè)或多個(gè)可能的預(yù)期接收者。作為另一示例,源塊可被指定在諸如計(jì)算機(jī)網(wǎng)絡(luò)的信道或其中具有預(yù)期的損壞或丟失的信道上傳輸。在這種情形中,可在傳輸前對(duì)源塊進(jìn)行變換以增強(qiáng)其關(guān)于傳輸差錯(cuò)的穩(wěn)健性。在這些要求源塊變換的許多應(yīng)用中,特別有利的一點(diǎn)是執(zhí)行變換以增強(qiáng)源塊對(duì)抗傳輸中出現(xiàn)的差錯(cuò)的穩(wěn)健性。傳輸是通過(guò)信道將源塊從一個(gè)或多個(gè)發(fā)送器發(fā)送到一個(gè)或多個(gè)接收者以傳遞源塊的過(guò)程。如果一個(gè)發(fā)送器通過(guò)一完美信道連接至任意數(shù)目的接收者,則由于所有數(shù)據(jù)都將被正確接收,所以接收到的數(shù)據(jù)可以是原始源塊的精確副本。然而,在信道不完美的情形中,對(duì)于大多數(shù)實(shí)際信道都是這種情形,或者數(shù)據(jù)從一個(gè)以上的發(fā)送器發(fā)射,對(duì)于一些系統(tǒng)即是這種情形,所接收到的可能不是精確副本。信道不完整性可以表示數(shù)據(jù)刪除、數(shù)據(jù)不完全性、或數(shù)據(jù)損壞。數(shù)據(jù)傳輸?shù)膭?dòng)作不僅表示地理上相隔位置之間的數(shù)據(jù)傳輸,而且傳輸還可包括數(shù)據(jù)在物理上從未移動(dòng)的情形。例如,存儲(chǔ)在可能有缺陷的存儲(chǔ)介質(zhì)上的源塊可構(gòu)成一種形式的傳輸,因?yàn)楫?dāng)該源塊被在此訪問(wèn)時(shí)可能會(huì)有數(shù)據(jù)損壞。一種用以保護(hù)源塊對(duì)抗可能的傳輸差錯(cuò)的常見(jiàn)過(guò)程是編碼。采用編碼,源塊被變換或從該源塊計(jì)算出新的數(shù)據(jù)集(有時(shí)被稱為"冗余"或"修復(fù)"數(shù)據(jù))。經(jīng)變換的源塊通常包含從原始源塊計(jì)算出的冗余信息,使用該內(nèi)部冗余的目的是為了得到關(guān)于在傳輸過(guò)程中出現(xiàn)的差錯(cuò)的信息并糾正這些差錯(cuò)。關(guān)于設(shè)計(jì)和使用碼的理論和實(shí)踐已有大量文獻(xiàn)。碼的選擇取決于具體應(yīng)用以及將在其上進(jìn)行傳輸?shù)耐ㄐ判诺馈Mǔ?,所選的碼具有一定的線性特性。例如,在源塊是由作為位組的一個(gè)或多個(gè)源碼元構(gòu)成的情形中,線性條件可保證兩個(gè)源塊的碼元級(jí)(symbol-wise)和(映射)的編碼等于這兩個(gè)源塊的編碼的碼元級(jí)和(映射)。這種線性條件可極為有利地用來(lái)描述和計(jì)算編解碼過(guò)程。實(shí)際中使用的碼的很大的子類都滿足這種線性條件。導(dǎo)致對(duì)源塊的編碼的變換的逆過(guò)程是解碼過(guò)程。在該過(guò)程中,經(jīng)編碼的源塊的一(可能損壞的)版本以這種方式處理以得到對(duì)源塊在傳輸前的原始狀態(tài)的良好(或者有時(shí)為可能的最佳)估計(jì)。線性編碼方案的許多益處之一是編碼和解碼過(guò)程可用矩陣來(lái)解釋的事實(shí)。矩陣是以二維數(shù)組形式包含若干項(xiàng)的數(shù)學(xué)對(duì)象。如本領(lǐng)域的技術(shù)人員已知的,矩陣可被方便地用來(lái)表示對(duì)象之間的映射,例如組成源塊的碼元集之間的映射。編解碼過(guò)程常常得益于用以存儲(chǔ)中間結(jié)果的輔助存儲(chǔ)器的使用。例如,一些解碼過(guò)程可能要求在已解碼的源塊之外保持接收到的數(shù)據(jù)的副本。編解碼過(guò)程所需的輔助存儲(chǔ)器的量對(duì)于具有有限資源的設(shè)備而言可能過(guò)大。例如,在設(shè)備是類似于移動(dòng)電話或個(gè)人數(shù)字助理(PDA)等移動(dòng)接收設(shè)備的情形中,設(shè)備上的存儲(chǔ)器可能較小,和/或該存儲(chǔ)器可能已被預(yù)留給要在該設(shè)備上運(yùn)行的其它應(yīng)用。在這種情形中,編解碼過(guò)程應(yīng)經(jīng)濟(jì)而有效地使用存儲(chǔ)器,但這常常難以實(shí)現(xiàn)。在根據(jù)本發(fā)明的諸方面的解碼器的一個(gè)實(shí)施例中,解碼器被編程為以允許基本使用同一存儲(chǔ)器來(lái)存儲(chǔ)接收到的數(shù)據(jù)和已解碼的源塊的順序執(zhí)行解碼步驟,從而就像執(zhí)行原地(in-place)變換一樣。使用原地變換,隨著接收到的數(shù)據(jù)被變換為經(jīng)解碼的源數(shù)據(jù),為接收到的數(shù)據(jù)所預(yù)留的大部分存儲(chǔ)器可被重寫(xiě)而無(wú)需一大部分存儲(chǔ)器用于接收到的數(shù)據(jù)以及近似大小的大部分存儲(chǔ)器用于經(jīng)解碼的源數(shù)據(jù)。通常,原地變換的使用導(dǎo)致特定過(guò)程運(yùn)行時(shí)間的減少,因?yàn)樵撨^(guò)程將花費(fèi)較少時(shí)間訪問(wèn)存儲(chǔ)器,從而提供了除僅在于減小的存儲(chǔ)器要求之外的更多益處。這避免了如果存儲(chǔ)數(shù)據(jù)的總大小過(guò)大則處理單元可能被迫使訪問(wèn)輔助的較慢存儲(chǔ)設(shè)備的問(wèn)題。本發(fā)明的實(shí)施例使用在無(wú)需使用大量的輔助存儲(chǔ)器的情況下執(zhí)行原地線性變換的方法和過(guò)程。這些方法和過(guò)程可與源塊的FEC編碼和解碼變換一起使用。結(jié)合附圖的以下具體描述將提供對(duì)本發(fā)明的實(shí)質(zhì)和優(yōu)點(diǎn)的更好的理解。這里的文本和等式示出了本發(fā)明的諸方面。圖1是采用根據(jù)本發(fā)明的實(shí)施例的FEC編碼的通信系統(tǒng)的高層示圖。圖2示出了與圖1中的系統(tǒng)相類似但具有多個(gè)發(fā)送器和接收機(jī)的通信系統(tǒng)。圖3示出了可被用來(lái)實(shí)現(xiàn)發(fā)送器和/或接收機(jī)的硬件的一個(gè)示例。圖4示出了常規(guī)FEC解碼過(guò)程。圖5示出了根據(jù)本發(fā)明的原地FEC解碼過(guò)程的一個(gè)實(shí)施例。圖6是根據(jù)本發(fā)明的一實(shí)施例的變換過(guò)程的流程圖。圖7是系統(tǒng)Reed-Solomon碼的原地解碼方法的流程圖。圖8是進(jìn)一步示出了系統(tǒng)Reed-Solomon碼的原地解碼方法的流程圖。圖9是一種向量計(jì)算方法的流程圖。圖IO是一種向量計(jì)算方法的流程圖。圖ll示出了可用于解碼的矩陣。圖12示出了一矩陣及其變換。圖13示出了可用于處理的數(shù)據(jù)結(jié)構(gòu)。圖14示出了一矩陣及其變換。圖15示出了一矩陣及其變換。-圖16示出了一矩陣及其變換。圖17是一種方法的流程圖。圖18是一種方法的流程圖。圖19是一種方法的流程圖。圖20是一種方法的流程圖。圖21是一種方法的流程圖。圖22是一種方法的流程圖。圖23是一種方法的流程圖。圖24是一種方法的流程圖。發(fā)明具體描述基本使用同一存儲(chǔ)器來(lái)存儲(chǔ)接收到的數(shù)據(jù)和經(jīng)解碼的源塊的過(guò)程通常被稱為原地變換。原地變換的使用通常導(dǎo)致特定過(guò)程的運(yùn)行時(shí)間減小,因?yàn)樵撨^(guò)程將花費(fèi)較少時(shí)間訪問(wèn)存儲(chǔ)器。這是特別重要的,因?yàn)槿绻鎯?chǔ)數(shù)據(jù)的總大小太大,則處理單元將被迫訪問(wèn)次級(jí)、較緩慢的存儲(chǔ)設(shè)備。本發(fā)明的實(shí)施例使用在無(wú)需使用大量輔助存儲(chǔ)器的情況下執(zhí)行原地線性變換的方法和過(guò)程。這些方法和過(guò)程尤其適用于源塊的FEC(前向糾錯(cuò))編碼和解碼轉(zhuǎn)換。雖然本發(fā)明適用于許多設(shè)備,但這里并沒(méi)有明確描述所有情形。并非作為限制的示例包括移動(dòng)電話、計(jì)算機(jī)、手持計(jì)算設(shè)備、媒體播放器、通信設(shè)備、和/或用以實(shí)現(xiàn)這些設(shè)備的硬件和/或軟件。概覽圖1中示出了在發(fā)送器110上采用FEC編碼而在接收器140上采用FEC解碼的通信系統(tǒng)的高層示圖。應(yīng)該理解的是,發(fā)送器110和接收器140可包括較廣范圍的設(shè)備。在許多實(shí)施例中,發(fā)送器和接收器被包含在單個(gè)收發(fā)器設(shè)備內(nèi)并且兩個(gè)或多個(gè)這種設(shè)備可在其之間進(jìn)行通信。在圖1中,發(fā)送器UO包括FEC編碼器120,該FEC編碼器被用于向通過(guò)通信信道130被發(fā)送到包括FEC解碼器150的接收器140的數(shù)據(jù)添加保護(hù)。發(fā)送器110可按包,例如網(wǎng)際協(xié)議(IP)包或其它形式的包,來(lái)發(fā)送由FEC編碼器120生成的數(shù)據(jù),這些數(shù)據(jù)在每個(gè)包中包括允許接收器140確定該包中的數(shù)據(jù)是如何生成和/或其表示發(fā)送數(shù)據(jù)的哪一部分的標(biāo)識(shí)信息。信道130可以是網(wǎng)絡(luò)信道、無(wú)線信道、PSTN信道、或其它信道。通常,信道130具有一些約束,在這些約束下由于某些條件而丟失數(shù)據(jù)。通常,對(duì)于包網(wǎng)絡(luò),如果接收到的包的一部分不可讀,則整個(gè)包被丟棄。因此,具有一些從發(fā)送器110發(fā)送的包被認(rèn)定為未在接收器140處接收到的情形,所以需要從這種丟失中恢復(fù)的機(jī)制。接收器140向FEC解碼器150提供盡可能多的所需的接收到的包,而FEC解碼器150恢復(fù)所有或部分?jǐn)?shù)據(jù)。FEC(前向糾錯(cuò))提供了預(yù)先設(shè)于前向信道上以允許在發(fā)生差錯(cuò)時(shí)進(jìn)行糾錯(cuò)的機(jī)制。差錯(cuò)并不是一定存在,在這種情形下FEC工作僅是一種備份,而在某些情形中,可能會(huì)發(fā)生多于使用FEC所能恢復(fù)的差錯(cuò),在這些情形下通信失敗或者在請(qǐng)求重新傳輸?shù)葧r(shí)發(fā)生輔助通信。傳輸無(wú)需是點(diǎn)對(duì)點(diǎn)的。如圖2中所示,系統(tǒng)可具有多個(gè)發(fā)送器和多個(gè)接收器。圖2示出了包括發(fā)送器210、接收器230、240以及發(fā)送器/接收器220的一種系統(tǒng),其中各自包括FEC編碼器(211)、FEC解碼器(232、242)、或這兩者(222、221)。在圖2所示示例中,所有發(fā)送器、發(fā)送器/接收器以及接收器都可在信道250上通信,該信道250可包括集成IP網(wǎng)絡(luò)、不相交(disjoint)網(wǎng)絡(luò)的組合、或網(wǎng)絡(luò)的其它類似組合。圖3更具體地示出了可被用來(lái)實(shí)現(xiàn)發(fā)送器和/或接收器的硬件的示例。如這里所示的,F(xiàn)EC編碼器/解碼器305包括CPU310,用于執(zhí)行操作;高速緩存320,為CPU310提供具有非??焖俅嫒〉呐R時(shí)存儲(chǔ);RAM330,為CPU310提供具有相對(duì)快速存取的大量存儲(chǔ);以及盤(pán)340,為CPU310提供具有合理存取速度的大量永久性存儲(chǔ)。本實(shí)施例的許多其它變形是可能的。例如,高速緩存320可被劃分為由操作系統(tǒng)(OS)控制的一部分以及在FEC編碼/解碼過(guò)程的控制下用以從其它存儲(chǔ)器設(shè)備預(yù)載數(shù)據(jù)以備供CPU處理即直接存儲(chǔ)器存取(DMA)操作的一部分。作為其它示例,可能有一個(gè)以上等級(jí)的高速緩存,可能有諸如FLASH(閃存)等其它類型的存儲(chǔ)設(shè)備、以及可以省略諸如盤(pán)存儲(chǔ)等某些存儲(chǔ)類型。更一般地,具有存儲(chǔ)器的計(jì)算設(shè)備經(jīng)常具有不同類的存儲(chǔ)器。某些類的存儲(chǔ)器被認(rèn)為比其它存儲(chǔ)器"更近",即更近存儲(chǔ)器可能物理上更靠近處理器或具有更快的響應(yīng)速率,這允許相對(duì)于較遠(yuǎn)、需要更長(zhǎng)導(dǎo)線、或較慢的存儲(chǔ)器而言處理器可更快地讀取和/或?qū)懭朐摳鎯?chǔ)器。更具一般性地,由于等待時(shí)間、響應(yīng)速率、用以讀取/寫(xiě)入存儲(chǔ)器的位置所需能量的量、用以維持存儲(chǔ)器中的信息的能量的量、每位的成本以及其它考慮因素,一類存儲(chǔ)器可能優(yōu)于其它類。諸類存儲(chǔ)器通??砂磧?yōu)選程度來(lái)排序,其中將最快、最具功率效率的存儲(chǔ)器作為優(yōu)選。標(biāo)準(zhǔn)工程和設(shè)計(jì)約束可指示多類存儲(chǔ)器的使用。例如,可能不只是僅想要RAM高速緩存存儲(chǔ)器,因?yàn)槿绻@樣就可能沒(méi)有永久存儲(chǔ),而且也可能不只是僅想要盤(pán)存儲(chǔ)器,因?yàn)槿绻@樣處理器存取就較慢。如以上剛解釋的,設(shè)備可具有按優(yōu)選程度排序的不同類的存儲(chǔ)器。當(dāng)最優(yōu)選的存儲(chǔ)器并非大至足以包含一特定計(jì)算操作的結(jié)果時(shí),可能需要存儲(chǔ)器管理,諸如換出至次優(yōu)選的一類存儲(chǔ)器。這些操作在等待時(shí)間、計(jì)算成本、功率使用方面增加成本,特別是在某些設(shè)備以及對(duì)于某些操作尤其如此,因此這里針對(duì)高效原地變換所述的方法和裝置為設(shè)備的這些操作提供了極大益處。在圖3的示圖中,F(xiàn)EC編碼器/解碼器305可能控制各種存儲(chǔ)器單元并且可能存在處于正在使用FEC編碼器/解碼器305的應(yīng)用的控制下的其它部分。因此,例如當(dāng)執(zhí)行FEC編碼時(shí),該應(yīng)用可控制其自己的要編碼的源塊副本,而FEC編碼器在一單獨(dú)存儲(chǔ)器位置中可具有其自己的由該應(yīng)用傳給它的源塊副本。在該示例中,不管該應(yīng)用所使用的其它存儲(chǔ)器如何,最小化FEC編碼器所用的存儲(chǔ)器可能較為重要,并且在該示例中可能有這種情形,即FEC編碼器在其為該源塊計(jì)算修復(fù)碼元期間可重寫(xiě)部分或所有源塊,因?yàn)樵搼?yīng)用有其自己?jiǎn)为?dú)的源塊副本和/或因?yàn)樵搼?yīng)用已經(jīng)向信道發(fā)送了源塊的部分而無(wú)需保持源塊的這些部分的副本。作為另一示例,通常在FEC解碼期間,一旦編碼碼元已被用來(lái)恢復(fù)該源塊的原始源碼元?jiǎng)t保持該編碼碼元的副本就不重要了。圖4示出了常規(guī)FEC解碼過(guò)程410(可能作為程序代碼來(lái)實(shí)現(xiàn)),該過(guò)程可使用CPU405來(lái)根據(jù)存儲(chǔ)在存儲(chǔ)器420中的接收到的編碼碼元440生成源碼元430的源塊,其中存儲(chǔ)器420可包括圖3中所示的類型或其它類型。如圖所示,F(xiàn)EC解碼過(guò)程410用于碼元存儲(chǔ)所需的存儲(chǔ)器的量通常為源塊的總大小加編碼碼元的總大小。類似評(píng)論也適用于常規(guī)FEC編碼過(guò)程。圖5示出了根據(jù)本發(fā)明的原地FEC解碼過(guò)程的一個(gè)實(shí)施例。在開(kāi)始510時(shí)的原地FEC解碼過(guò)程的快照示出了用以處理存儲(chǔ)在存儲(chǔ)器520中的接收到的編碼碼元530的CPU505,其中存儲(chǔ)器520可包括圖3中所示的類型或其它類型。在結(jié)束515時(shí)的原地FEC解碼過(guò)程的快照示出了用以生成存儲(chǔ)在最初由接收到的編碼碼元530所占用的同一存儲(chǔ)器520中的源塊540的經(jīng)恢復(fù)的源碼元的CPU505。另外,在FEC解碼過(guò)程的中間步驟中,用于碼元的存儲(chǔ)器略大于用以存儲(chǔ)接收到的編碼碼元530所需的存儲(chǔ)器的量和用以存儲(chǔ)經(jīng)恢復(fù)的源碼元540所需的存儲(chǔ)器的量中的最大值。因此,由于用以恢復(fù)源塊所需的編碼碼元的總大小約為源塊的大小,所以原地FEC解碼過(guò)程510和515在解碼過(guò)程中使用約為常規(guī)FEC解碼過(guò)程410用于碼元存儲(chǔ)的存儲(chǔ)器的一半。類似評(píng)論也適用于原地FEC編碼過(guò)程。在后續(xù)章節(jié)中,我們介紹實(shí)現(xiàn)圖5中所繪優(yōu)點(diǎn)的方法和過(guò)程。具體而言,我們介紹對(duì)可被表示為線性碼的FEC碼的原地FEC編碼和解碼過(guò)程。線性運(yùn)算符為了進(jìn)一步示出示例實(shí)施例,我們將利用環(huán)的數(shù)學(xué)概念。在以下描述中,應(yīng)該理解各種數(shù)學(xué)過(guò)程和步驟可由計(jì)算/通信設(shè)備通過(guò)硬件操作、程序指令執(zhí)行等來(lái)實(shí)施。如本領(lǐng)域的技術(shù)人員所公知的,環(huán)是其上定義了滿足分配律的加法和乘法這兩種運(yùn)算的集合。此外,僅考慮加法的該集合構(gòu)成了阿貝爾群(abeliangroup),即加法的結(jié)果與被加數(shù)的排序無(wú)關(guān),對(duì)于加法有一中性元素0,而對(duì)于每個(gè)元素都存在另一元素以使得這些元素的和為O。其它要求是乘法具有中性元素1,以使得任何元素與1的乘積不會(huì)改變?cè)撛氐闹?。?duì)于普通環(huán)而言,我們不要求任何非零元素都具有乘法逆元素,也不要求乘法是可交換的。然而當(dāng)這兩個(gè)條件都滿足時(shí),則我們將該稱為"域"。此概念是代數(shù)領(lǐng)域中的一個(gè)標(biāo)準(zhǔn)概念。如在此所用的,"碼元"表示通常小于源塊的一段數(shù)據(jù)。碼元的大小通常可用位來(lái)衡量,其中碼元具有M個(gè)位的大小并且該碼元是選自2^個(gè)碼元的字母表。例如在通過(guò)包網(wǎng)絡(luò)進(jìn)行可靠信息傳輸?shù)膽?yīng)用中,碼元的大小可以等于包大小,或者可以更小以使得每個(gè)包包含一個(gè)或多個(gè)碼元。映射(碼元級(jí)和)是可在硬件和/或軟件等中實(shí)現(xiàn)的將相同大小的碼元對(duì)映射到該大小的另一碼元的邏輯構(gòu)造。我們用"e"來(lái)標(biāo)示該映射,并用s十r來(lái)標(biāo)示對(duì)碼元對(duì)(S,T)的這種映射的鏡像。這種映射的一個(gè)示例是逐位異或(XOR)這里使用的另一構(gòu)造是一特殊類型的集合對(duì)碼元的"動(dòng)作"。假定^是具備了可交換加法運(yùn)算"+"的集合,該加法運(yùn)算具有一中性元素并且對(duì)于每一元素都包含其加性逆元素。這樣一個(gè)集合通常也被稱為阿貝爾群。該群對(duì)碼元集合的"動(dòng)作"是將由群元素r和碼元S組成的對(duì)映射為另一碼元的映射。當(dāng)這種映射在群中遵守加法時(shí),即對(duì)于群^中的每對(duì)元素a和6,都有("+6)*5="*56*5,我們用"S來(lái)標(biāo)示這種鏡像。如果^是環(huán)且該動(dòng)作也遵守在X的乘法,其中在乘法運(yùn)算符在j中為"",即("")"="*(6*5),則我們將該動(dòng)作稱為"運(yùn)算"。對(duì)碼元的環(huán)或域操作的示例是很多的。以下提到了少量示例。該示例列表僅用于說(shuō)明的目的,而不應(yīng)被認(rèn)為窮盡性列表,也不應(yīng)被理解為限制本發(fā)明的范圍。其中加法為異或(XOR)且乘法為邏輯運(yùn)算AND(與)的由0和1組成的域GF(2),通過(guò)定義1*5=5和0*5=0來(lái)對(duì)碼元集合進(jìn)行操作,其中S標(biāo)示任意碼元而0標(biāo)示全部由0組成的碼元。域GF(4)由0、1、2、3四個(gè)元素組成,其中加法是整數(shù)的正常XOR而乘法通過(guò)表1來(lái)定義。表1.GF(4)的乘積<table>tableseeoriginaldocumentpage13</column></row><table>它按以下方式對(duì)相等大小的碼元進(jìn)行操作對(duì)于碼元S,我們分別用S[l]和S[2]來(lái)標(biāo)示其前一半和后一半,從而5=(^[1],^[2])。然后,我們定義12"=卿,牟]柳3*5=則響,則),可快速驗(yàn)證這確實(shí)是一有效運(yùn)算??稍诰哂?位的碼元上定義該同一域的另一運(yùn)算。在用整數(shù)0、1、2和3標(biāo)識(shí)這些碼元的情況下,可以看出該域的乘法表描述了與以上在2位碼元情形中所定義的運(yùn)算相吻合的運(yùn)算。更一般地,如果《是度(degree)為"的GF(2)的擴(kuò)展域,則可在其大小可被c/除盡的碼元上定義該域的一種運(yùn)算。這種運(yùn)算在作為1995年加利福尼亞州伯克利的國(guó)際計(jì)算機(jī)科學(xué)協(xié)會(huì)的技術(shù)報(bào)告編號(hào)TR-95-048出版的Bloemer等人的"AnXOR-BasedErasureResilientCodingScheme(基于XOR的刪除彈性編碼方案)中進(jìn)行了描述。這種方案使用了對(duì)作為具有二進(jìn)制項(xiàng)的Jxd矩陣的域《的所謂"正規(guī)表示(regularrepresentation)"。"線性變換"的概念可參照對(duì)碼元的環(huán)運(yùn)算的概念來(lái)定義。對(duì)于給定的整數(shù)w和m由該運(yùn)算導(dǎo)出的線性變換使用具有指定環(huán)中的項(xiàng)的矩陣空間將"個(gè)碼元的向量映射為m個(gè)碼元的向量。環(huán)7上的矩陣是項(xiàng)的2維集,其中每項(xiàng)都屬于i。如果矩陣具有附行和"列,則其通常被稱為wx"矩陣。對(duì)(附,")被稱為該矩陣的"格式"。同一格式的多個(gè)矩陣可使用底層域或環(huán)中的加法和減法來(lái)被作加或作減。如所公知的,格式為(m,")的矩陣可與格式為(M^)的矩陣相乘,從而產(chǎn)生格式為(m,Q的矩陣。如果S標(biāo)示這樣的一個(gè)矩陣,且S[/)]標(biāo)示S在位置(/》)上的項(xiàng),并且如果該矩陣對(duì)向量(鄧],S[2],.,.,S["])進(jìn)行變換并且如果(Z[1]^Y[2],..Jf[m])標(biāo)示變換后的向量,則以下關(guān)系有效對(duì)于從i到m的所有y,鄧]=聰]*Mi]■*響i.酬*酬.如果S標(biāo)示包括鄧],S[2],…,Sh]的列向量,并且1標(biāo)示碼元^1]^2],...^[/^]的列向量,則該變換可被表示為以上公式描述了在編碼器或解碼器中稱為"簡(jiǎn)單變換過(guò)程"的從S和S計(jì)算I的過(guò)程,它可由以下步驟執(zhí)行1.將j'設(shè)為1以及Z[/]設(shè)為0。2.對(duì)于值從1到"的A:,作1[刀=1[刀可/^]*5[^:]。3.將y'遞增l。如果y'大于m,則停止,否則轉(zhuǎn)到步驟2。這種線性變換在各種應(yīng)用中是常見(jiàn)的。例如,在使用線性碼來(lái)對(duì)一段數(shù)據(jù)或源塊進(jìn)行編碼時(shí),S可以是要編碼的源塊的源碼元,X可以是S的經(jīng)編碼的版本,而^可以是該碼的生成矩陣。在例如所用碼是系統(tǒng)性的其它應(yīng)用中,I可以是S的編碼的冗余碼元,而^可以是描述冗余碼元對(duì)源碼元的相關(guān)性的矩陣。在其它應(yīng)用中,S可以是在傳輸后從接收到的一組碼元得到的碼元向量,而Z可以對(duì)應(yīng)于完全或部分未知的一組碼元,以及S可以描述I與S之間的關(guān)系。例如當(dāng)在面臨刪除或差錯(cuò)時(shí)解碼Reed—Solomon碼即是這種情形。后者在授予Shokrollahi等人的題為"EfficientListDecodingofReed-SolomonCodesforMessageRecoveryinthePresenceofHighNoiseLevel(用于在存在高噪聲電平情形下進(jìn)行消息恢復(fù)的Reed-Solomon碼的高效列表解碼)"的美國(guó)專利No.6,631,172中進(jìn)行了更具體的描述。在許多情形中,需要在不使用超過(guò)存儲(chǔ)S所用的存儲(chǔ)器太多的存儲(chǔ)器的情況下從S計(jì)算出向量Z。例如,在每個(gè)碼元為512字節(jié)且附="=1024的情形中,S和X各自為512千字節(jié)大小。如果該變換要在具有600千字節(jié)的存儲(chǔ)器的設(shè)備上實(shí)現(xiàn),在不使用輔助存儲(chǔ)器的情況下將沒(méi)有足夠的存儲(chǔ)器來(lái)同時(shí)保存S和Z。在這些場(chǎng)合中,需要一種其中S的變換被原地實(shí)現(xiàn)的過(guò)程。如果X小于S,則這意味著S的前m項(xiàng)被Z所代替,或者更一般地,S的一組指定的m個(gè)位置被X的諸位置所代替。在Z大于S的情形中,則該原地變換可被解釋為S在變換后包含Z的前M項(xiàng),或者更一般地,S在變換后包含Z的一組指定的"項(xiàng),而其余m-"項(xiàng)被存儲(chǔ)在別處。如果Z和S長(zhǎng)度相同,則該原地變換可用Z來(lái)代替S。在應(yīng)用中,該過(guò)程不會(huì)使用太多的輔助存儲(chǔ)器來(lái)實(shí)現(xiàn)其任務(wù)。因此,例如在其中計(jì)算出X并將其存儲(chǔ)在別處而在隨后將其復(fù)制到S的存儲(chǔ)器位置的解決方案將是具有不足的解決方案。原地線性變換現(xiàn)在對(duì)原地線性變換的過(guò)程進(jìn)行描述。令5為具有格式(m,力的矩陣且令S為W個(gè)碼元的列向量。給定5和S,將向下方向上B乘以S的原地線性矩陣變換5^S定義如下對(duì)于所有zM,2,…m用S的第/行與當(dāng)前S的內(nèi)積來(lái)代替參照?qǐng)D6對(duì)計(jì)算該原地運(yùn)算的過(guò)程進(jìn)行了解釋。在步驟610,整數(shù)變量/被初始化為O。在步驟620,/的值被增至next(/),其中next(/)是使得3的行next(/)具有至少一個(gè)非零項(xiàng)的大于/的最小整數(shù),并且如果行/后的所有行都具有全零項(xiàng)則將next(/)設(shè)為w+l。在步驟630,檢査是否/>m,并且如果/>m則在步驟640停止處理,但如果r《m則處理行進(jìn)到步驟650,其中一臨時(shí)碼元值r被設(shè)為0并且整數(shù)變量/被設(shè)為0。在步驟660,值乂被增至nextOV),其中next(/力是使得在5的行/中next(/力]為非零項(xiàng)的大于乂的最小整數(shù),并且如果行/中S[^]之后的所有項(xiàng)全部為零就將next(/力設(shè)為"+l。在步驟670檢查是否戶",并且如果戶"則處理行進(jìn)到步驟680,其中碼元S[/]被設(shè)為r并隨后處理返回到步驟620。如果在步驟670中y《"則處理行進(jìn)到步驟690,其中臨時(shí)碼元值r被重置為r①鄧,刀"[y]并且隨后處理返回到步驟660。從以上描述和圖6可清楚看出,計(jì)算S;S總共需要存儲(chǔ)的碼元數(shù)目是"+l個(gè)碼元。令S為具有格式(m,")的矩陣且令S為"個(gè)碼元的列向量。給定S和S,將向上方向S乘以S的原地線性矩陣變換5個(gè)S定義如下對(duì)于所有/=m,w-l,...l用S的第/行與當(dāng)前S的內(nèi)積來(lái)代替<S[/]。參照?qǐng)D7對(duì)計(jì)算該原地運(yùn)算的過(guò)程進(jìn)行了解釋。在步驟710,整數(shù)變量/被初始化為m+l。在步驟720,值/被減至prev(/),其中prev(/)是使得S的行prev(/)具有至少一個(gè)非零項(xiàng)的小于/的最大整數(shù),并且如果行/前的所有行都具有全零項(xiàng)則將prev(/)設(shè)為0。在步驟730,檢查是否f<l,并且如果Kl則在步驟740停止處理,但如果/21則處理行進(jìn)到步驟750,其中一臨時(shí)碼元值T被設(shè)為0并且整數(shù)變量被設(shè)為0。在步驟760,值7'被增至next(/力,其中nextOV)是使得在S的行/中可/,next(/力]為非零項(xiàng)的大于y'的最小整數(shù),并且如果行/中風(fēng)/』之后的所有項(xiàng)全部為零就將next(^)設(shè)為w+l。在步驟770,檢查是否戶",并且如果戶"則處理行進(jìn)到步780,其中碼元S[/]被設(shè)為r并隨后處理返回到步驟720。如果在步驟770中/S",則處理行進(jìn)到步驟790,其中臨時(shí)碼元值r被重置為r④邵,y]"[/i并且隨后處理返回到步驟760。從以上描述和圖7可清楚看出,計(jì)算B個(gè)S總共需要存儲(chǔ)的碼元數(shù)目是《+1個(gè)碼元。令召為具有格式(",")的矩陣并且對(duì)于所有/=1,...,",邵,/]#0。矩陣》是從5如下推導(dǎo)出的矩陣注意,可容易地從S計(jì)算出》,并且如果B是稀疏矩陣并且可被高效地存取,則5也是稀疏矩陣并且也可被高效地存取。還注意,如果S的各項(xiàng)是來(lái)自GF(2),則》=5。以上定義的個(gè),丄和運(yùn)算具有以下特性令S為具有格式(",")的矩陣且對(duì)于所有/=1,.../7,風(fēng)/,/]#0,并且令5為《個(gè)碼元的列向量。令^標(biāo)示S在應(yīng)用任何變換之前的值,即S:^。貝寸因此,例如》丄和S卞原地運(yùn)算從以上意義上而言是互逆。如本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到的,根據(jù)對(duì)稱,我們也可定義例如S;5和S卞》形式的原地運(yùn)算符,其中S是具有與以上所定義的相類似性質(zhì)的m個(gè)碼元的行向量。數(shù)類矩陣的原地變換現(xiàn)在對(duì)具有特殊性質(zhì)的線性變換的原地計(jì)算過(guò)程進(jìn)行描述。這些線性變換隨后被用于為更具一般性的線性變換的計(jì)算構(gòu)造原地過(guò)程的構(gòu)件塊。在下面,S標(biāo)示m個(gè)碼元的列向量,S標(biāo)示例如可被視為GF(2)的擴(kuò)展域(但該技術(shù)同樣良好適用于一般的TO的域《上格式為(m,")的矩陣,并且在該過(guò)程的結(jié)束時(shí),用于碼元向量S的存儲(chǔ)存儲(chǔ)變換5S的結(jié)果。也有許多可用來(lái)最小化^所需的存儲(chǔ)以及最小化計(jì)算這些運(yùn)算所需的總計(jì)算量,但一般而言這是比用于正被變換的數(shù)據(jù)所需的存儲(chǔ)量小的存儲(chǔ)量。例如,當(dāng)S為稀疏矩陣時(shí),^的稀疏表示可能同樣允許最小化計(jì)算所有運(yùn)算所需的總計(jì)算量。例如當(dāng)B為稀疏矩陣時(shí),則有許多比順序搜索更有效的方法來(lái)找到^的特定行或列中的下一非零項(xiàng)。在閱讀本公開(kāi)之后,這些類型的最優(yōu)化以及可與這里所述的技術(shù)結(jié)合應(yīng)用的其它最優(yōu)化對(duì)于本領(lǐng)域的技術(shù)人員應(yīng)是顯而易見(jiàn)的。2.1置換矩陣在該情形中,B是格式為(M,")的置換矩陣,即它在每一行和每一列中恰好具有一個(gè)非零項(xiàng)并且這些非零項(xiàng)為1。由于該矩陣是稀疏的,即具有非常少的非零項(xiàng),所以在許多應(yīng)用中希望不是將其表示為矩陣而是表示為列表(或比矩陣使用更少存儲(chǔ)量的其它對(duì)象)。例如,S可以被表示為列表(B[l],...B["]),其中(/,B[/])是5的非零項(xiàng)的位置?,F(xiàn)在參照?qǐng)D18描述用S對(duì)S進(jìn)行變換的過(guò)程。保存其中所有分量最初被初始化為o的二進(jìn)制向量v[i],...,ww]。該過(guò)程將使用一標(biāo)示為r的附加碼元。最初,r的值為全零。在步驟805,變量c被設(shè)為O。該變量對(duì)己經(jīng)訪問(wèn)了對(duì)應(yīng)于S的數(shù)組的多少個(gè)位置進(jìn)行計(jì)數(shù)。在步驟810,該變量的值被遞增l,并且在步驟815檢查是否同時(shí)滿足條件c〈w+l和v/[c]:兩者。若滿足,則這意味著數(shù)組的該位置c已經(jīng)被訪問(wèn),并且還有其它位置要檢查。過(guò)程返回到步驟810。若不滿足,則c=n+l或者v[c]=0。在前一情形中,所有位置都已被訪問(wèn),從而過(guò)程在步驟825結(jié)束。該測(cè)試是在步驟820執(zhí)行的。如果在步驟820中c仍小于"+l,則必定v[c]=0,即位置c還未被訪問(wèn)。在該情形中,輔助變量c/在步驟830中被設(shè)為S[c]。該值等于在變換后S[c]將所處的位置。在步驟835,作出査看"是否等于c的測(cè)試。若相等,則不再需要進(jìn)一步的操作并且處理跳到步驟860。在步驟860,v[c]的值被設(shè)為l,并且計(jì)數(shù)c遞增l。如果在步驟835中d不等于c,則在步驟840中交換r和S[c]的值。接著在步驟845,交換r和S[d的值,將v[《設(shè)成等于l,并且將d設(shè)成等于^X)。在步驟850檢査J的值是否等于c,并且如果為假則再次重復(fù)包括步驟845和850的循環(huán)。如果"等于c,則處理跳出該循環(huán)并在步驟855交換r和S[cI的值。在步驟860,將v[c]的值設(shè)為1,并且整個(gè)過(guò)程現(xiàn)在返回到c被遞增1的步驟810。實(shí)際上,所述過(guò)程以循環(huán)的形式分解了矩陣B所給出的轉(zhuǎn)置,并且逐個(gè)地尋找和處理這些循環(huán)。在許多情形中,并非在存儲(chǔ)器中移動(dòng)S的碼元來(lái)計(jì)算用^對(duì)S進(jìn)行原地變換,而是足以跟蹤從S的碼元的邏輯排序到S中的碼元在存儲(chǔ)器中的實(shí)際位置的映射而不用移動(dòng)存儲(chǔ)器中S的碼元。例如,可以如下維護(hù)一映射令;[l],...,;["]為從S的邏輯碼元到它們?cè)诖鎯?chǔ)器中實(shí)際位置的映射,即對(duì)于所有/=1,...,《,/7[/]為S中第/個(gè)邏輯碼元在存儲(chǔ)器中的位置。當(dāng)使用該映射時(shí),在通過(guò)置換矩陣^對(duì)S進(jìn)行的變換中,上述過(guò)程可被應(yīng)用至Mi],...,p["]以重新計(jì)算s的邏輯到存儲(chǔ)器的映射來(lái)代替如上所述地將其應(yīng)用至s[i],…^["]。因此,用以描述圖8中過(guò)程的變量r被用于臨時(shí)存儲(chǔ)p[c]的值而非碼元S[c],并且圖8中被應(yīng)用至碼元向量S[l],...,S["]的所有邏輯都被代之以應(yīng)用到向量;[1],...,;7[m]。這種表示會(huì)是有利的,因?yàn)橐话愣栽贑PU存儲(chǔ)器帶寬以及其它資源方面,通常在存儲(chǔ)器中移動(dòng)少得多的/[1],...,;["]項(xiàng)比移動(dòng)通常大得多的^[1],...^[]碼元項(xiàng)成本要低。單項(xiàng)矩陣在該情形中,fi是每一行和每一列中恰好一個(gè)非零項(xiàng)的格式為(m,")的矩陣。轉(zhuǎn)置矩陣是單項(xiàng)矩陣的一個(gè)特殊情形。現(xiàn)在參照?qǐng)D9描述計(jì)算單項(xiàng)矩陣的原地變換的過(guò)程。這種矩陣可被簡(jiǎn)單地描述為列表(可l],…5["];a[1],...,"["]),其中對(duì)于y'的所有相關(guān)值,S[/]是B的行y中非零元素的位置,而a[/]是該非零位置的值。計(jì)算關(guān)于^的原地變換的過(guò)程將用于計(jì)算關(guān)于S的置換部分的線性變換的過(guò)程用作子過(guò)程。在圖9的步驟905,該過(guò)程使用圖8中所述的過(guò)程來(lái)計(jì)算C0S,其中C是通過(guò)用1代替S的非零項(xiàng)來(lái)從矩陣B得到的轉(zhuǎn)置矩陣。在步驟910,整數(shù)變量/被初始化為0,并且隨后在步驟920、940和950中執(zhí)行一循環(huán),其中對(duì)于1與"之間的每個(gè)值/,S[/]被用a[a對(duì)該位置的該運(yùn)算即4/]*S[/]來(lái)代替。當(dāng)該循環(huán)結(jié)束時(shí),處理在步驟930停止。如本領(lǐng)域的技術(shù)人員所明晰的,參照?qǐng)D9所述的過(guò)程計(jì)算出^②S,因?yàn)镾可被寫(xiě)為對(duì)角項(xiàng)為cc[l],...,4"]對(duì)角矩陣與矩陣C的乘積。此外,該過(guò)程中用于碼元的存儲(chǔ)為n+l。上三角矩陣令t/是格式為(",")的上三角(對(duì)于所有乂</,WVH))矩陣。貝IJ即,原地運(yùn)算f/氺S得到與f/乘以S的結(jié)果相同的"個(gè)碼元的向量。此外,如果t/還是可逆的(對(duì)于所有/,C/[/,/]^0)貝廿,即,原地運(yùn)算^個(gè)S導(dǎo)致與t/的逆乘以S的結(jié)果相同的n個(gè)碼元的向量。因此,矩陣乘法和矩陣逆的乘法兩者可用上三角矩陣的原地運(yùn)算來(lái)實(shí)現(xiàn)。注意,在f/是稀疏矩陣的情形中,"丄S和e個(gè)S兩者都是稀疏計(jì)算,即乘以t/和乘以t/的逆都可用稀疏原地計(jì)算來(lái)實(shí)現(xiàn),即使t^不一定是稀疏矩陣。下三角矩陣令丄是格式為(",")的下三角(對(duì)于所有戶/,丄[v:ho)矩陣。貝(j即,原地運(yùn)算丄個(gè)S得到與丄乘以S的結(jié)果相同的"個(gè)碼元的向量。此外,如果丄還是可逆的(對(duì)于所有z',印,!']^0)貝U,即,原地運(yùn)算Z山S導(dǎo)致與l的逆乘以S的結(jié)果相同的w個(gè)碼元的向量。因此,矩陣乘法和矩陣逆的乘法兩者可用下三角矩陣的原地運(yùn)算來(lái)實(shí)現(xiàn)。注意,在丄是稀疏矩陣的情形中,丄個(gè)s和Z;s兩者都是稀疏計(jì)算,即乘以丄和乘以丄的逆都可用稀疏原地計(jì)算來(lái)實(shí)現(xiàn),即使丄"不一定是稀疏矩陣。乘積在該情形中,^是數(shù)個(gè)上述類型的矩陣的乘積,即S是為M,.M2.....M,的乘積,其中每個(gè)A^是轉(zhuǎn)置矩陣、或單項(xiàng)矩陣、或上三角矩陣、或下三角矩陣中的任一矩陣。原地計(jì)算這種矩陣變換的過(guò)程是用M,對(duì)S進(jìn)行變換,然后用il47對(duì)其結(jié)果進(jìn)行變換,依此類推。普通方形矩陣對(duì)于格式為(",")的矩陣凡能夠進(jìn)行計(jì)算以將S分解成三個(gè)矩陣尸、丄、以及U的乘積,其中尸是轉(zhuǎn)置矩陣,L是在主對(duì)角上為1的下三角矩陣,以及f/是上三角矩陣。這種分解可通過(guò)本領(lǐng)域的技術(shù)人員已知的各種過(guò)程來(lái)計(jì)算。這些過(guò)程中的一種是公知的Gaussian消元過(guò)程。然后,5對(duì)S的原地變換,即使用原地變換計(jì)算B0S簡(jiǎn)單地為現(xiàn)在參照?qǐng)DIO更具體地來(lái)描述用于計(jì)算在任意方形矩陣B情形下的這種原地變換的過(guò)程。在步驟IOIO,計(jì)算出S的PLU分解。如上所提到的,這種分解可通過(guò)各種手段來(lái)計(jì)算。對(duì)于普通矩陣,一種可能方法是使用Gaussian消元法。對(duì)于例如稀疏矩陣、Cauchy矩陣等特殊矩陣,可采用更高效的方法,這是本領(lǐng)域的技術(shù)人員所公知的。在步驟1020,如參照?qǐng)D6所述的,計(jì)算出碼元向量S的原地變換f/;S。接著,在步驟1030,經(jīng)變換的碼元集S被再次變換,這次如參照?qǐng)D7所述地計(jì)算原地變換Z個(gè)S。接著,在步驟1040再次對(duì)該經(jīng)變換的新碼元集作變換,如參照?qǐng)D8所述地計(jì)算置換矩陣尸對(duì)S的原地變換。注意,如果B可逆,則以下過(guò)程將S"②S計(jì)算為原地變換其中尸"是為P的逆的轉(zhuǎn)置矩陣。注意,使用上述原地變換過(guò)程計(jì)算5-'0S所需的計(jì)算量與S0S的基本相同。此外,如果t/和丄兩者是稀疏表示的并且例如在《個(gè)非零項(xiàng)上僅具有線性,則S和r'(8)S兩者都可使用上述原地變換在線性時(shí)間內(nèi)被計(jì)算出。在上述原地變換的計(jì)算期間用于存儲(chǔ)計(jì)算中任意時(shí)刻的碼元的存儲(chǔ)器或存儲(chǔ)的量是《+1。應(yīng)該注意,這里所述的過(guò)程是非常一般性的,但可能不是在所有感興趣的情形中都是最高效的。以下描述了其它情形,在這些情形中可以比在一般情形中更高效地來(lái)實(shí)現(xiàn)該原地變換。非方形矩陣如果格式為(m,力的矩陣B不是方形矩陣,則可利用與上述類似的方法以這種最小化存儲(chǔ)器量的方式計(jì)算變換。例如,當(dāng)該矩陣的行比列多時(shí)(即,m大于"),則僅僅原地計(jì)算出結(jié)果向量的前n個(gè)元素才是重要的。這按如下實(shí)現(xiàn)。令S'為標(biāo)識(shí)由5的前n行構(gòu)成的方形矩陣,并且令5"標(biāo)識(shí)由S的后行構(gòu)成的矩陣。令S為最初保存要被變換的碼元值的w個(gè)碼元的列向量,并令S'標(biāo)識(shí)附加的m-w個(gè)碼元的列向量。然后,50S可如下原地計(jì)算使用諸如在標(biāo)題為"線性運(yùn)算符"的章節(jié)中描述的"簡(jiǎn)單變換過(guò)程"等直接(straightforward)矩陣乘法將S'計(jì)算為S"S。計(jì)算使得^=尸1.^/的尸、丄、f/,其中尸是轉(zhuǎn)置矩陣,丄是下三角矩陣而t/是上三角矩陣。計(jì)算原地變換P(8)(丄個(gè)(""))注意,如果矩陣B'是下三角的,則以上過(guò)程的最后兩步被簡(jiǎn)化為計(jì)算B'個(gè)S,而如果矩陣B'是上三角的,則以上過(guò)程的最后兩步被簡(jiǎn)化為計(jì)算5;S。類似地,如果"大于m,則可利用類似方法以如下替換向量S的前m項(xiàng)的方式來(lái)計(jì)算該變換。令B'標(biāo)識(shí)由S的前m列構(gòu)成的方形矩陣,并且令B"標(biāo)識(shí)由B的后"-m列構(gòu)成的矩陣。令S為最初保存要被變換的碼元值的w個(gè)碼元的列向量,并令S'標(biāo)識(shí)S的前m個(gè)碼元而令S"標(biāo)識(shí)S的后n-w個(gè)碼元。然后,S(8)S可按如下原地計(jì)算計(jì)算使得^=尸.丄.^/的尸、丄、t/,其中尸是轉(zhuǎn)置矩陣,丄是下三角矩陣而f/是上三角矩陣。計(jì)算原地變換/^(i亇^MD使用諸如在標(biāo)題為"線性運(yùn)算符"的章節(jié)中描述的"簡(jiǎn)單變換過(guò)程"等直接矩陣乘法的微小變形來(lái)將S'更新為的結(jié)果。注意,如果矩陣S'是下三角的,則以上過(guò)程的前兩步被簡(jiǎn)化為計(jì)算S'卞S',而如果矩陣W是上三角的,則以上過(guò)程的前兩步被簡(jiǎn)化為計(jì)算W丄S'。用于大多數(shù)稀疏矩陣的髙效原地線性變換令M為圖11中所示類型的格式為(w,")的方形矩陣。在圖11中,m^n,丄是格式為(m,m)的下三角可逆矩陣,」是格式為(m,"-m)的矩陣,S是格式為("-w,w)的矩陣以及C是格式為(w-m,w-m)的可逆矩陣。令S為w個(gè)碼元的列向量。以下我們描述計(jì)算M(E)S和M-'05"的高效原地變換。這些原地變換為FEC編碼和FEC解碼方法以及稍后描述的即高效且原地的過(guò)程中的一些鋪墊了基礎(chǔ)。對(duì)于其中考慮類型M的矩陣的這些FEC碼中的一些,M為稀疏矩陣,例如M中非零項(xiàng)的個(gè)數(shù)以"為量級(jí),并且"-m相比于n較小,例如"-m是以"的平方根為量級(jí)。對(duì)于該示例,執(zhí)行以下所述的計(jì)算M(8)S和M-105的原地變換所需的計(jì)算量以"個(gè)碼元運(yùn)算為量級(jí),而在計(jì)算期間碼元總共所用的空間或存儲(chǔ)器最多為n+l。令M'為如圖12所示地從M推導(dǎo)出的格式為(",")的方形矩陣。在圖12中,丄和i5是與圖11中所示的丄和B相同的矩陣,由后"-m列與前m行構(gòu)成的矩陣的所有項(xiàng)都為零,以及由后/wn列與后"-w行構(gòu)成的矩陣是單位矩陣。注意,M'是可逆的下三角矩陣。圖12還示出了M'的逆矩陣M'"的形式。令Z)為圖13A中所示的格式為(","-w)的矩陣。在圖13A中,^和C是與圖11中所示的^和C相同的矩陣。矩陣Z)還可被視為n個(gè)碼元的列向量,其中每個(gè)碼元是來(lái)自底層域《的m-m個(gè)域元素的級(jí)聯(lián)。因此,當(dāng)如上所述地將D視為"個(gè)碼元的列向量時(shí)可定義格式為&,)的矩陣對(duì)D的運(yùn)算,其中該矩陣對(duì)被視為m個(gè)碼元的列向量的"的運(yùn)算與在被視為矩陣時(shí)該矩陣與Z)的矩陣乘法相同。如上所述地將D視為"個(gè)碼元的列向量,可以看出原地變換i^;D得到具有如圖13B所示的值的D,其中當(dāng)五被視為格式為(m,"-m)的矩陣時(shí),E二丄-1」,以及當(dāng)F被視為格式為("-m,"-m)的矩陣時(shí),F(xiàn)-C-5.丄-1.^4。由于C和Z都是可逆的,可以容易地驗(yàn)證F也是可逆的。令尸、」和r是格式為("-m力-m)的矩陣,其中F=P.A.y,尸為轉(zhuǎn)置矩陣,」為下三角矩陣以及r是上三角矩陣。這種因式分解可例如使用公知的Gaussian消元或類似技術(shù)來(lái)得到。令丄'為如圖14所示的格式為(",M)的方形矩陣。在圖14中,丄是與圖ll中所示矩陣丄相同的矩陣,由后"-m行與前m列構(gòu)成的矩陣的所有項(xiàng)都為零,由后n-m列與前m行構(gòu)成的矩陣的所有項(xiàng)都為零,以及由后列與后"-m行構(gòu)成的矩陣是單位矩陣。注意,L'是可逆的下三角矩陣。圖14還示出了丄'的逆矩陣Z"的形式。令尸'、yT和r分別是如圖15A、15B和15C中所示的格式為("-m,w-m)的方形矩陣,尸、j和r是使得i^尸.at的矩陣并且F如上所述,以及在尸'、j鄰r的每一個(gè)中,由后"-w列與前m行構(gòu)成的矩陣的所有項(xiàng)都為零,由后"-m行與前m列構(gòu)成的矩陣的所有項(xiàng)都為零,以及由前m行與前m列構(gòu)成的矩陣是單位矩陣。注意,尸'、J'和r是可逆矩陣。令7V'為如圖16所示的格式為(",")的方形矩陣。在圖16中,l和J是與圖ll中所示的丄和^相同的矩陣,由后"-m行與前m列構(gòu)成的矩陣的所有項(xiàng)都為零,以及由后列與后行構(gòu)成的矩陣是單位矩陣。注意,,為可逆矩陣,并且雖然它不是字面意義上的下三角,但可以看出7V'個(gè)S原地計(jì)算出7V'②S的結(jié)果。圖16還示出了W'的逆矩陣7V'"的形式。還可驗(yàn)證^'丄S原地計(jì)算出iV'"0S的結(jié)果。基于以上介紹的概念,參照?qǐng)D17對(duì)計(jì)算在輸入的M和S上的原地變換M(2)S的過(guò)程進(jìn)行了描述。在步驟1710,計(jì)算出原地變換iV'個(gè)S。在步驟1720,計(jì)算出原地變換K'4i),其中D如上所述,以及如上所述,矩陣f^C-^.P^是該變換結(jié)果的后行。在步驟1730,矩陣F被如上所述地因式分解為尸、J和y。在步驟1740,計(jì)算出原地變換y'丄S。在步驟1750,計(jì)算出原地變換A'個(gè)S。在步驟1760,計(jì)算出原地變換,(E)S。在步驟1770,計(jì)算出原地變換HS。在步驟1780,計(jì)算出原地變換M'卞S。在步驟1790,由于原地變換結(jié)束所以過(guò)程停止??梢则?yàn)證在圖17中所述的過(guò)程結(jié)束時(shí),向量S存儲(chǔ)M乘以原始向量S的結(jié)果。注意,該過(guò)程中用于存儲(chǔ)任意時(shí)刻的碼元的存儲(chǔ)至多為"+l,并且所有步驟上總計(jì)的碼元運(yùn)算的數(shù)目與M中非零項(xiàng)的數(shù)目和("-w)2的和呈線性。圖17中所述過(guò)程有許多可產(chǎn)生更高效率和優(yōu)點(diǎn)的變形。例如,在原地運(yùn)算期間,運(yùn)算當(dāng)中對(duì)單位子矩陣操作的那些部分可被跳過(guò),因?yàn)檫@些運(yùn)算不改變結(jié)果,即在計(jì)算W卞S時(shí)可以跳過(guò)與7V'的后w-m行的運(yùn)算,因?yàn)檫@些運(yùn)算不影響該原地變換的結(jié)果。作為另一變形的示例,可以在不影響其結(jié)果的情況下,將部分步驟重新排序。一種這樣的變形是在步驟1730與步驟1740之間執(zhí)行步驟1770。另一這樣的變形是在步驟1740與步驟1750之間執(zhí)行步驟1770,在這種情形下能夠?qū)⒉襟E1740和1770組合為如圖20中所示的一次原地變換,并將步驟1750和760組合為圖21中所示的一次原地變換。作為變形的另一示例,步驟1730、1740、1750和1760可用將尸乘以包括S的后個(gè)碼元的列向量并用結(jié)果替換S的后個(gè)碼元的步驟來(lái)代替。乘以F可以例如使用本公開(kāi)中所述的原地變換或者諸如標(biāo)準(zhǔn)矩陣乘法等標(biāo)準(zhǔn)技術(shù)來(lái)執(zhí)行。基于以上介紹的概念,參照?qǐng)D18對(duì)計(jì)算在輸入的M和S上的原地變換MOS的過(guò)程的另一變形進(jìn)行了描述。參照?qǐng)D18所述的原地變換使用總共存儲(chǔ)的n+(w-m)+l個(gè)碼元,即比參照?qǐng)D17所述的過(guò)程多"-m個(gè)碼元,這具有碼元運(yùn)算的總數(shù)目與在M(8)S的直接非原地計(jì)算中所使用的相同的益處。因此,當(dāng)M為稀疏時(shí),以略多的碼元存儲(chǔ)為代價(jià),以下參照?qǐng)D18所述的過(guò)程可采用比參照?qǐng)D17所述的過(guò)程更少的計(jì)算量。在到稍后描述的FEC碼的應(yīng)用中,M-m相比于"通常較小,因此參照?qǐng)D18所述的過(guò)程所需的額外的碼元存儲(chǔ)量與參照?qǐng)D17所述的過(guò)程所實(shí)現(xiàn)的最小碼元存儲(chǔ)量相比通常較小。令『為附加的"-m個(gè)碼元的列向量。令g標(biāo)識(shí)包括M的前m行的格式為(m,")的矩陣,并且令g'標(biāo)識(shí)M的后M-m行的格式為("-m,")的矩陣。在圖18的步驟1810中,使用直接矩陣乘法計(jì)算『=2吸5。在步驟1820,計(jì)算原地變換S個(gè)S。注意由于2的前m列構(gòu)成了下三角矩陣丄,所以步驟1820中計(jì)算出的原地變換得到等于g0S的S的前m項(xiàng)。在步驟1830,『被復(fù)制到S的后《-m個(gè)碼元。在步驟1840,由于該原地變換結(jié)束所以過(guò)程停止?;谝陨辖榻B的概念,參照?qǐng)D19對(duì)計(jì)算在輸入的M和S上的原地變換M-的過(guò)程進(jìn)行了描述。在步驟1910,計(jì)算出原地變換^'4S。在步驟1920,計(jì)算出原地變換丄'個(gè)S。在步驟1930,計(jì)算出原地變換^;Z),其中Z)為如上所述,以及如上所述矩陣F:C-^r'^是該變換結(jié)果的后行。在步驟1940,矩陣尸被如上所述地因式分解為尸、J和r。在步驟1950,計(jì)算出原地變換P'-'S。在步驟1960,計(jì)算出原地變換HS。在步驟1970,計(jì)算出原地變換?'卞S。在步驟1980,計(jì)算出原地變換^'丄S。在步驟1990,由于該原地變換結(jié)束所以過(guò)程停止??梢则?yàn)證在圖19中所述的過(guò)程結(jié)束時(shí),向量S存儲(chǔ)A^乘以原始向量S的結(jié)果。注意,該過(guò)程中用于存儲(chǔ)任意時(shí)刻的碼元的存儲(chǔ)至多為《+1,并且所有步驟上總計(jì)的碼元運(yùn)算的數(shù)目與M中非零項(xiàng)的數(shù)目和("-W)2的和呈線性。以上參照?qǐng)D19所述的過(guò)程基本是參照?qǐng)D17所述的過(guò)程的逆。與參照?qǐng)D17所述的過(guò)程的情形一樣,圖19中所述過(guò)程有許多可得到更高效率和優(yōu)點(diǎn)的變形。例如,步驟1940、1950、1960和1970可以用確定^并隨后將/^乘以包括S的后個(gè)碼元的列向量且用其結(jié)果替換S的后個(gè)碼元的步驟來(lái)代替。F1的確定以及和它的乘法可以例如使用本公開(kāi)所述的原地變換或諸如標(biāo)準(zhǔn)Gaussian消元和矩陣乘法等標(biāo)準(zhǔn)技術(shù)來(lái)執(zhí)行。在為該步驟使用標(biāo)準(zhǔn)矩陣乘法的情形中,可能需要更多的碼元存儲(chǔ),例如額外的"-m個(gè)存儲(chǔ)碼元,從而使得在該原地變換期間最大的碼元存儲(chǔ)為2"-w+l個(gè)碼元,然而在整個(gè)原地變換過(guò)程中用于碼元的總存儲(chǔ)量顯著小于標(biāo)準(zhǔn)技術(shù)將使用的2",特別是當(dāng)m接近"時(shí)。應(yīng)用Reed隱Solomon碼已知的一類用于在刪除或損壞的情形中保護(hù)傳輸?shù)木€性碼為Reed-Solomon碼。有許多等效方式來(lái)描述這些碼,諸如循環(huán)碼、基于Vandermonde矩陣的碼、基于Cauchy矩陣的碼等。在所有這些情形中,可用矩陣與碼元向量的乘法來(lái)描述編碼過(guò)程。在源碼元數(shù)目為h輸出碼元數(shù)目為",v標(biāo)示要編碼的A:個(gè)源碼元的列向量,以及w標(biāo)示包含v的編碼的w個(gè)碼元的列向量的情形中,編碼過(guò)程被描述為Mv=w其中,M是格式為(",/t)的矩陣,它有時(shí)也被稱為該碼的生成矩陣。令M'標(biāo)識(shí)包括M的前A行的格式為(M:)的矩陣,并且令M"標(biāo)識(shí)包括M的后n4行的格式為(4)的矩陣。令w'標(biāo)識(shí)vv中的前A個(gè)碼元,而令w"標(biāo)識(shí)w中的后r個(gè)碼元。在該碼為系統(tǒng)性即在M與v的矩陣乘法之后結(jié)果的前A個(gè)碼元w'與v的各項(xiàng)相一致的情形中,M'為單位矩陣。在系統(tǒng)碼中,經(jīng)編碼的向量w'的各項(xiàng)被稱為源位置。在這種情形中,M"被用于計(jì)算r個(gè)冗余碼元w"。矩陣M可以各種方式來(lái)表示。例如,在需要非系統(tǒng)版本的情形中,Af可以是Vanderaumde矩陣。在系統(tǒng)的情形中,M"可以形成Cauchy矩陣。這些表示僅是出于示例性目的才提到的,而絕不構(gòu)成窮盡性列表。當(dāng)Reed-Solomon碼為非系統(tǒng)時(shí),參照?qǐng)D20所述的過(guò)程描述了在該過(guò)程中使用至多w+l個(gè)碼元的存儲(chǔ)來(lái)生成編碼的原地變換。最初vv'存儲(chǔ)要編碼的A個(gè)源碼元。在該過(guò)程結(jié)束時(shí),w存儲(chǔ)編碼結(jié)果,即w'存儲(chǔ)前A個(gè)編碼碼元,而w"存儲(chǔ)生成的剩余r個(gè)編碼碼元。在圖20的步驟2010中,使用直接矩陣乘法,例如使用先前所述的"簡(jiǎn)單變換過(guò)程"將w"計(jì)算為M,w'。在步驟2020,M'被因式分解為尸、丄和f/,其中這些矩陣的每一個(gè)都是(yUt)格式并且尸為轉(zhuǎn)置矩陣,丄為下三角矩陣,以及f/是上三角矩陣,因此肘'=,丄.[/。這種分解可用例如Gaussian消元法等各種方式來(lái)計(jì)算,或者當(dāng)矩陣M'為Cauchy矩陣時(shí),則該P(yáng)LU分解可用公式來(lái)計(jì)算,由此降低了計(jì)算的計(jì)算復(fù)雜度。在步驟2030,計(jì)算出原地變換t/丄w'。在步驟2040,計(jì)算出原地變換丄個(gè)w'。在步驟2050,計(jì)算出原地變換P(8)iv'。在步驟2060,由于原地變換結(jié)束所以過(guò)程停止。應(yīng)該注意,在任意給定系統(tǒng)中發(fā)送編碼碼元的順序無(wú)需是它們被存儲(chǔ)的順序,因此實(shí)際上可能不需要執(zhí)行最后一個(gè)步驟2060。當(dāng)Reed-Solomon碼為系統(tǒng)的時(shí),現(xiàn)在對(duì)在過(guò)程中使用至多m+l個(gè)碼元的碼元存儲(chǔ)以從々個(gè)源碼元生成r個(gè)冗余碼元的原地變換進(jìn)行描述,其中m是A和r的最大值。在這種情形中,最初存儲(chǔ)在w'中的源碼元全部或部分地被所生成的冗余碼元所覆蓋,因此被覆蓋的源碼元通常將被保存在由使用該FEC編碼器的應(yīng)用控制的另一存儲(chǔ)空間中或者它們已經(jīng)被發(fā)送而不再需要存儲(chǔ)。當(dāng)冗余碼元的數(shù)目r大于或等于源碼元的數(shù)目&時(shí),可使用圖20中所述過(guò)程的一個(gè)輕微變形來(lái)使用計(jì)算M'吸w'的原地變換生成冗余碼元,其中該原地變換至多使用r+l個(gè)存儲(chǔ)碼元。當(dāng)KA時(shí),可利用這里參照?qǐng)D21所述的過(guò)程使用至多使用A+l個(gè)存儲(chǔ)碼元的原地變換來(lái)生成冗余碼元。令v標(biāo)識(shí)w'中的前r個(gè)碼元,并且令v'標(biāo)識(shí)vv'中的后々-r個(gè)碼元。最初w'存儲(chǔ)要編碼的A個(gè)源碼元。在該過(guò)程結(jié)束時(shí),w'的前r項(xiàng)即v存儲(chǔ)該編碼的r個(gè)冗余碼元。令B為與M"的前r列相同的格式為(;vO的矩陣,并且令B'為與M"的后&列相同的格式為(r,yK)的矩陣。在圖21的步驟2110中,5被因式分解為尸、Z和f/,其中這些矩陣的每一個(gè)都是(M)格式并且尸為轉(zhuǎn)置矩陣,丄為下三角矩陣,以及U是上三角矩陣,因此^=尸.丄心。這種分解可用例如Gaussian消元法等各種方式來(lái)計(jì)算,或者當(dāng)矩陣S為Cauchy矩陣時(shí),則該P(yáng)LU分解可用公式來(lái)計(jì)算,由此降低了計(jì)算的計(jì)算復(fù)雜度。在步驟2120,計(jì)算出原地變換f/氺v。在步驟2130,計(jì)算出原地變換丄個(gè)v。在步驟2140,計(jì)算出原地變換尸(g)v。在步驟2150,使用諸如以上在標(biāo)題為"線性運(yùn)算符"章節(jié)中描述的"簡(jiǎn)單變換過(guò)程"等直接矩陣乘法的微小變形來(lái)將v更新為v④5吸v'。在步驟2160,由于原地變換結(jié)束所以過(guò)程停止。在其中發(fā)送的碼元在接收前可能被刪除的通信信道中,在用MOv-w定義該編碼的情形中,解碼問(wèn)題是根據(jù)對(duì)充分多的經(jīng)編碼的碼元的了解,即根據(jù)對(duì)W的充分多的項(xiàng)的了解,來(lái)確定原始源碼元向量v。在Reed-Solomon碼的情形中,術(shù)語(yǔ)"充分多的碼元"可譯為至少/t個(gè)碼元或多于A個(gè)碼元,這取決于應(yīng)用和該解碼可用的計(jì)算和存儲(chǔ)資源。在以下,描述了上述一般原地變換方法對(duì)系統(tǒng)Reed-Solomon碼的原地解碼的問(wèn)題的一示例性應(yīng)用。在閱讀本公開(kāi)之后,本領(lǐng)域的技術(shù)人員可容易地將所公開(kāi)的方法推廣到諸如非系統(tǒng)版等Reed-Solomon解碼的其它情形?,F(xiàn)在參照?qǐng)D22和23對(duì)原地解碼系統(tǒng)Reed-Solomon碼的方法進(jìn)行描述。在圖22所繪的該示例性過(guò)程中,步驟2205參照矩陣M"的列標(biāo)識(shí)由/7[1],...,;^]標(biāo)示的已刪除的源碼元位置,并在步驟2210參照矩陣M"的行標(biāo)識(shí)接收到的冗余碼元的位置r[l],...,r[e]。對(duì)于圖22中所繪示例性過(guò)程,我們假定接收到的碼元被存儲(chǔ)在/t個(gè)碼元的列向量v中,其中位置p[l],…,;[e]中的碼元是接收到的冗余碼元,其中v的其它be個(gè)位置中的碼元是在其正確位置中的接收到的源碼元,而解碼器的任務(wù)是將v在位置/7[l],.,.,;7[e]上的碼元變換為丟失的e個(gè)源碼元。在步驟2220到2250定義了關(guān)于變量/的外循環(huán),從而針對(duì)1到被刪除的源位置的數(shù)目e之間/值有效地運(yùn)行這些步驟。在進(jìn)入該循環(huán)前,/值在步驟2215被初始化為1。步驟2225到2240的循環(huán)檢查1與A之間不等于p[l],...,p[e]中任何一個(gè)的y'值,并且對(duì)于每個(gè)這樣的j'通過(guò)將v[p[i]]的值增加M"[小']^"[/']來(lái)更新v[p[i]]。在圖23的過(guò)程中,我們用z來(lái)標(biāo)示由v[p[l],...,/7[e]]構(gòu)成的向量,并用r標(biāo)示由矩陣M"的行r[l],…,r[e]和列p[l],…,p[e]構(gòu)成的矩陣的逆。如本領(lǐng)域的技術(shù)人員所知的,Reed-Solomon碼的一般原理顯示該矩陣總是可逆。在步驟2305中計(jì)算出該逆及其PLU分解。這種PLU分解可用例如Gaussian消元法等各種方式來(lái)計(jì)算,或者當(dāng)矩陣M"為Cauchy矩陣時(shí),則該P(yáng)LU分解可用公式來(lái)計(jì)算,由此降低了計(jì)算的計(jì)算復(fù)雜度。注意,r的PLU分解可直接通過(guò)該過(guò)程來(lái)計(jì)算而無(wú)需顯式地計(jì)算出矩陣r。在步驟2310,使用圖6所述的過(guò)程計(jì)算出原地變換f/丄z。在步驟2320,使用圖7中的過(guò)程計(jì)算出丄卞"在步驟2330,使用圖8中的過(guò)程計(jì)算出原地變換尸g)z。在步驟2340,由于Reed-Solomon碼的原地解碼結(jié)束所以過(guò)程停止。參照?qǐng)D23所述的總體原地變換在該過(guò)程中使用了至多A+l個(gè)碼元存儲(chǔ)。這里針對(duì)Reed-Solomon碼所述的過(guò)程僅用于演示性目的,而無(wú)意限制本發(fā)明的范圍。更具體地,非常類似的方法可被應(yīng)用到相似類的碼的原地解碼,諸如代數(shù)-幾何碼(簡(jiǎn)寫(xiě)為AG碼)、BCH碼、或其生成矩陣明確已知的任何其它類的碼。廣義重復(fù)累積(GRA)碼一般而言,這些是系統(tǒng)碼,其中t是源碼元的數(shù)目,r是冗余碼元的數(shù)目,因此"=壯〃是編碼中碼元的總數(shù)。在這種情形中,r個(gè)冗余碼元的列向量Z按如下從/t個(gè)源碼元的列向量V來(lái)構(gòu)造選擇格式為(r,Q的矩陣v4,并且選擇為稀疏上或下三角矩陣的格式為(r,。的另一矩陣^。對(duì)于該示例,(7被任意地選擇為一上三角矩陣。然后,常常在文獻(xiàn)中見(jiàn)到的不規(guī)則重復(fù)累積(IRA)碼的情形是這種構(gòu)造的一種特殊情形,其中j被假定為從在每一行和每一列具有數(shù)字1的指定分布的一組矩陣中隨機(jī)采樣的二進(jìn)制矩陣,而t/是在主對(duì)角線上為1以及在緊鄰該主對(duì)角線的上一對(duì)角線上為1而在其它項(xiàng)中全部為0的上三角矩陣,因此t/是稀疏的。注意對(duì)于該示例,^'是在主對(duì)角線以及主對(duì)角線以上的所有項(xiàng)都為1的稠密上三角矩陣。因此,對(duì)于該示例假定^是被選成在每一行有三個(gè)1以及在每一列有三個(gè)1的方形矩陣。在該示例中,計(jì)算出的冗余碼元對(duì)源碼元具有不規(guī)則的依存性,例如,z中最后一個(gè)冗余碼元是v中三個(gè)源碼元的XOR(異或),z中第二到最后一個(gè)冗余碼元是v中6個(gè)源碼元的XOR,等。現(xiàn)在參照?qǐng)D24描述對(duì)GRA碼的原地編碼過(guò)程。對(duì)于該示例,假定r至多為h即冗余碼元的數(shù)目至多是源碼元的數(shù)目。對(duì)于r大于A的情形,使用將行數(shù)大于列數(shù)的矩陣乘以碼元列向量的原地變換過(guò)程來(lái)代替將列數(shù)大于行數(shù)的矩陣乘以碼元列向量的原地變換過(guò)程,可對(duì)過(guò)程進(jìn)行修改。令,標(biāo)識(shí)由A的前r列構(gòu)成的方形矩陣,而令C標(biāo)識(shí)由A的后A-r列構(gòu)成的矩陣。令v為最初保存源碼元的A:個(gè)碼元的列向量,而令v'標(biāo)識(shí)v的前r個(gè)碼元并且令v"標(biāo)識(shí)v的后hr個(gè)碼元。在圖24的步驟2410,矩陣(被因式分解為尸、丄和r,其中尸為轉(zhuǎn)置矩陣,A為下三角矩陣,以及y是上三角矩陣,并且^'=尸.丄7。可使用各種方法來(lái)執(zhí)行這種因式分解,包括使用標(biāo)準(zhǔn)Gaussian消元。在標(biāo)準(zhǔn)2420,計(jì)算出原地變換r丄v',在步驟2430,計(jì)算出原地變換l卞v',以及在步驟2440,計(jì)算出原地變換P(H)v'。在步驟2450,使用諸如以上在標(biāo)題為"線性運(yùn)算符"章節(jié)中描述的"簡(jiǎn)單變換過(guò)程"等直接矩陣乘法的微小變形來(lái)計(jì)算出原地變換v^」"(8)v"0v'。在步驟2460,計(jì)算出原地變換5山v'。在步驟2470,計(jì)算停止,并且得到的r個(gè)冗余碼元被存儲(chǔ)在v的前r個(gè)碼元中,即v'中。參照?qǐng)D24所述的過(guò)程有許多變形。例如,步驟2410、2420、2430以及2440可以用諸如在題為"SystemsandProcessesforDecodingChainReactionCodesThroughInactivation(通過(guò)鈍化對(duì)連鎖反應(yīng)碼的解碼的系統(tǒng)和過(guò)程)"(下文被稱為"鈍化解碼器(InactivationDecoder)")的美國(guó)專利No.6,856,263號(hào)中公開(kāi)的更為復(fù)雜的方法來(lái)代替,以便以與圖11中所顯示的相類似的形式存寫(xiě)矩陣J并隨后使用參照?qǐng)Dn所述的過(guò)程的變形來(lái)使用原地變換計(jì)算JOv。例如,如果^是隨機(jī)選出的在每一行有三個(gè)i且在每一列有三個(gè)i的方形矩陣,即rb則能夠?qū)改為圖11中所示的形式,其中子矩陣i:的格式近似為(O.86A:,O.860而子矩陣C的格式近似為(0.14A,0.14/t)。在該情形中,可使用參照?qǐng)D17所述的原地變換過(guò)程,由此最小化該過(guò)程中用于存儲(chǔ)的碼元數(shù)目。作為另一變形,可使用參照?qǐng)D18所述的原地變換過(guò)程來(lái)計(jì)算J0v,由此使用34個(gè)碼元運(yùn)算,即和以直接方式計(jì)算X(2)v將使用的碼元運(yùn)算相同數(shù)目的碼元運(yùn)算,但僅使用了1.14,&個(gè)碼元存儲(chǔ)。連鎖反應(yīng)碼在題為"InformationAdditiveCodeGeneratorandDecoderforCommunicationsSystems(用于通信系統(tǒng)的信息加性碼生成器和解碼器)"的美國(guó)專禾UNo.6,307,487和題為"Multi-StageCodeGeneratorandDecoderforCommunicationsSystems(用于通信系統(tǒng)的多級(jí)碼生成器和解碼器)"的美國(guó)專利申請(qǐng)S/N.10/032,156號(hào)中進(jìn)行了描述。已經(jīng)為這種碼設(shè)計(jì)了諸多解碼器,例如"鈍化解碼器"中公開(kāi)的解碼器。在該解碼器中,解碼過(guò)程簡(jiǎn)化為求解以下形式的線性方程系其中,r是秩為"的格式為Cv^)的矩陣,其中s至少為",其中"是中間碼元的數(shù)目,其中A是源碼元的數(shù)目,r是冗余碼元的數(shù)目,因此^^A+r。注意,對(duì)于連鎖反應(yīng)碼的一些實(shí)施例,冗余碼元的數(shù)目r為0,而對(duì)于其它實(shí)施例,冗余碼元的數(shù)目r大于o。r的行對(duì)應(yīng)于動(dòng)態(tài)輸出碼元并對(duì)應(yīng)于冗余(預(yù)編碼)碼元,x是具有待求解的初始未知值的"個(gè)碼元的的向量,其中包括源碼元和冗余(預(yù)編碼)碼元,而z是具有已知值的s個(gè)碼元的向量,包括接收到的碼元和預(yù)編碼的校驗(yàn)碼元。在一些應(yīng)用中,校驗(yàn)碼元具有o值,而在其它應(yīng)用中,該值可能是不同于o的值。不論如何設(shè)置校驗(yàn)碼元,通過(guò)編碼器與解碼器之間的預(yù)先通信或通過(guò)其它步驟,它們對(duì)于解碼器而言都是已知的。"鈍化解碼器"使用通過(guò)將矩陣r變換為r二g.M.p的形式來(lái)求解未知碼元;c的過(guò)程,其中g(shù)是格式為(s力的轉(zhuǎn)置矩陣,尸是格式為(",")的轉(zhuǎn)置矩陣,以及M是格式為(S,M)、秩為"的矩陣,它類似于圖11中所示形式,區(qū)別在于s和c兩者都包括s-m行而非"-m行。其中,矩陣Z是格式為(m,m)的下三角二進(jìn)制矩陣,以及厶萬(wàn)和C是適當(dāng)大小的矩陣;在優(yōu)選應(yīng)用中,^和丄可以是稀疏矩陣,即它們可能沒(méi)有許多非零位置。使用這種因式分解,從接收到的碼元向量z恢復(fù)未知向量x的問(wèn)題可被轉(zhuǎn)變?yōu)橐韵聠?wèn)題(a)優(yōu)選地原地計(jì)算g-以使得結(jié)果都存儲(chǔ)在z中,(b)優(yōu)選地原地解方程系M;;=z求未知向量》以使得結(jié)果y存儲(chǔ)在z的前w項(xiàng)中,以及(c)優(yōu)選地原地將x計(jì)算為x=尸-1少以使得結(jié)果x存儲(chǔ)在z的前"項(xiàng)中。這些步驟彼此同步執(zhí)行。任務(wù)(a)和(c)在先前章節(jié)中進(jìn)行了描述,例如參照?qǐng)D8所述的過(guò)程即是使用原地變換執(zhí)行任務(wù)(a)和(c)的一種方法?,F(xiàn)在參照?qǐng)D11、圖12、圖13A、圖13B、圖14、圖15、圖16和圖19提供了在給定z情況下解方程M0;^z求未知向量y的過(guò)程的一個(gè)實(shí)施例,其中6"標(biāo)識(shí)在過(guò)程開(kāi)始時(shí)存儲(chǔ)在z中的s個(gè)碼元的向量,以及在過(guò)程結(jié)束時(shí)5"的前n個(gè)碼元等于向量y。參照?qǐng)D19所述的過(guò)程與當(dāng)前過(guò)程之間的一個(gè)區(qū)別在于M具有s行而非圖ll中所示的"行。因此,當(dāng)前實(shí)施例中的第一步是確定M當(dāng)中一起構(gòu)成秩為M的矩陣的"行并隨后將M重新定義為得到的格式為(",")的滿秩矩陣。參見(jiàn)圖11、圖12、圖13A、圖13B、圖14、圖15和圖16,當(dāng)前實(shí)施例中的其余步驟是執(zhí)行先前參照?qǐng)D19所述的過(guò)程。剛才所述的實(shí)施例有許多變形。例如,不是在第一步中確定使用格式為(&")的原始矩陣M的哪n行,可使用例如在"鈍化解碼器"中所述的方法隨著過(guò)程的行進(jìn)逐步地確定子矩陣丄、^、5和C。因此,圖19的步驟1910和1930中所述過(guò)程的變形可使用"鈍化解碼器"中所述的方法來(lái)執(zhí)行從而逐步地構(gòu)成這些矩陣并執(zhí)行圖19的步驟1910和1930中所述步驟的等效形式。在這些步驟的結(jié)束時(shí),M中秩為M的n行已被確定并在M的這些行已被邏輯地操作為圖11中所示的形式。隨后可以按恰當(dāng)順序應(yīng)用圖19中所示的剩余步驟以完成該原地變換過(guò)程。如本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到的,剛才所述的兩個(gè)實(shí)施例有許多變形。例如,參照?qǐng)D19所述的過(guò)程的變形也可應(yīng)用于這兩個(gè)實(shí)施例。連鎖反應(yīng)碼的原地系統(tǒng)編碼在Shokrollahi等人提交的題為"SystematicEncodingandDecodingofChainReactionCodes(連鎖反應(yīng)碼的系統(tǒng)編碼和解碼)"的美國(guó)申請(qǐng)S/N.10/677,624號(hào)(下文"ShokrollahiI")中,描述了一種用于連鎖反應(yīng)碼,尤其是多級(jí)連鎖反應(yīng)碼的系統(tǒng)編碼的方法。在該方法中,首先使用線性變換將源碼元變換為一組中間碼元。該變換的形式為其中,r是行對(duì)應(yīng)于源碼元和冗余(預(yù)編碼)碼元的格式為(",")的滿秩矩陣,X是具有待求解的初始未知值的中間碼元的向量,而Z是具有已知值的W個(gè)碼元的向量,其對(duì)應(yīng)于源碼元和預(yù)編碼的校驗(yàn)碼元。當(dāng)r為方形矩陣時(shí),該方程系是章節(jié)"連鎖反應(yīng)碼的原地解碼"中所述更一般的情形中的一種特殊情形。因此,章節(jié)"連鎖反應(yīng)碼的原地解碼"中所述原地變換的實(shí)施例可用于使用原地變換從已知碼元計(jì)算中間碼元。連鎖反應(yīng)碼的原系統(tǒng)解碼ShokrollahiI中所述方法執(zhí)行一系列步驟以從部分源碼元和由系統(tǒng)編碼器生成的部分輸出碼元的任意組合得到所有源碼元。在該方法的優(yōu)選實(shí)施例中,采集并解碼包括部分源碼元和其它輸出碼元的所有接收到的碼元以得到一組中間碼元。接著,對(duì)這些中間碼元進(jìn)行變換以得到丟失的源碼元。根據(jù)接收到的碼元對(duì)中間碼元進(jìn)行原地計(jì)算與以上在標(biāo)題為"連鎖反應(yīng)碼的原地解碼"中所述的相同。在本章節(jié)中,將描述根據(jù)中間碼元對(duì)源碼元的原地計(jì)算。如根據(jù)ShokrollahiI顯而易見(jiàn)并類似于上述情形的是,該問(wèn)題可簡(jiǎn)化為計(jì)算以下問(wèn)題其中,r是滿秩的格式為(M,")的矩陣,而s是"個(gè)中間碼元的列向量。矩陣r可被表示成其中尸和^是格式為(^V^)的轉(zhuǎn)置矩陣,而M是圖11中所示形式的格式為(w,")的矩陣。計(jì)算r0S的原地變換的實(shí)施例是參照?qǐng)D17,同時(shí)參照?qǐng)DU、圖12、圖13A、圖13B、圖14、圖15、圖16及圖17所述的過(guò)程。該實(shí)施例在過(guò)程中至多使用"+l個(gè)碼元存儲(chǔ)。參照?qǐng)D17所述的過(guò)程的變形也適用于該實(shí)施例。計(jì)算ros的原地變換的第二實(shí)施例是參照?qǐng)D18所述的過(guò)程。該實(shí)施例該過(guò)程中至多使用n+(w-m)+l個(gè)存儲(chǔ)。在連鎖反應(yīng)碼的優(yōu)選實(shí)施例中,相對(duì)于值"而言較小,因此在該過(guò)程中使用的碼元存儲(chǔ)的相對(duì)大小略大于"。參照?qǐng)D18所述的過(guò)程的變形也適用于該實(shí)施例。上述使用原地變換過(guò)程從接收到的輸出碼元計(jì)算中間碼元的實(shí)施例以及上述使用原地變換過(guò)程從經(jīng)恢復(fù)的輸入碼元計(jì)算源碼元的實(shí)施例可被組合以提供使用原地變換從接收到的輸出碼元計(jì)算源碼元的總體實(shí)施例,其中這兩個(gè)過(guò)程的組合所用的碼元存儲(chǔ)至多為任一個(gè)過(guò)程單獨(dú)所用的碼元存儲(chǔ)。以上描述僅出于說(shuō)明目的,而無(wú)意限制本發(fā)明的范圍。在讀了本公開(kāi)之后,許多等效版本和方法都是可能的。例如,在以上方法中,步驟2中對(duì)矩陣Z)的LU分解的計(jì)算可離線地實(shí)現(xiàn)。如已經(jīng)所述的,示教了一種新穎的用以構(gòu)造線性變換運(yùn)算的具有存儲(chǔ)器效率的方法。在這里所示的示例中,線性變換過(guò)程是對(duì)多個(gè)輸入元素應(yīng)用線性變換以導(dǎo)出多個(gè)輸出元素的過(guò)程。在這里所述的過(guò)程中,存儲(chǔ)器被分配用于存儲(chǔ)可用于該線性變換過(guò)程的輸入元素并且該存儲(chǔ)器中的至少一部分可被再次用于存儲(chǔ)所導(dǎo)出的輸出元素。使用這種方法,不用要求大至足以保存上述多個(gè)輸入元素的存儲(chǔ)器和大至足以保存上述多個(gè)輸出元素的存儲(chǔ)器,足以保存上述多個(gè)中的最大數(shù)目的元素的存儲(chǔ)器(按需加上一些較小的開(kāi)銷)就可工作,從而節(jié)省了有價(jià)值的存儲(chǔ)器空間。這里所述的技術(shù)可被用于各種線性變換,諸如用于FEC編碼或解碼、刪除編碼或解碼、糾錯(cuò)等的變換。FEC編碼可涉及諸如Reed-Solomon碼、連鎖反應(yīng)碼、多級(jí)連鎖反應(yīng)碼或任何其它線性碼等各種碼。用于執(zhí)行該變換的邏輯可讀取輸入元素以生成輸出元素并將用于已使用結(jié)束的輸入元素的存儲(chǔ)器再次用于存儲(chǔ)生成的輸出元素(或隨后可能又被使用結(jié)束的中間元素)。雖然參照示例性實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,但本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到各種修改是可能的。例如,這里所述的過(guò)程可使用硬件組件、軟件組件、和/或它們的任意組合來(lái)實(shí)現(xiàn)。因此,雖然關(guān)于示例性實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,但應(yīng)該認(rèn)識(shí)到的是,本發(fā)明旨在涵蓋落在所附權(quán)利要求的范圍內(nèi)的所有變形和等效方案。權(quán)利要求1.在將安排為多個(gè)源碼元的數(shù)據(jù)編碼為多個(gè)經(jīng)編碼的碼元的編碼器中,一種執(zhí)行從所述源碼元到所述經(jīng)編碼的碼元的變換的方法,其中所述源碼元中的一定數(shù)目即k個(gè)將被變換為n個(gè)經(jīng)編碼的碼元,所述方法包括訪問(wèn)存儲(chǔ)在第一存儲(chǔ)器中的所述k個(gè)源碼元;執(zhí)行第一變換步驟以計(jì)算對(duì)所述k個(gè)源碼元進(jìn)行操作的矩陣運(yùn)算,從而產(chǎn)生中間輸出碼元集,所述中間集中的至少一些碼元構(gòu)成所述n個(gè)經(jīng)編碼的碼元中的一些;將所述中間輸出碼元集存儲(chǔ)在所述第一存儲(chǔ)器中,以替換所述k個(gè)源碼元中的至少一些,所述中間集中輸出碼元的數(shù)目小于所述數(shù)目n;以及重復(fù)所述執(zhí)行和存儲(chǔ)步驟至少一次直至所述第一存儲(chǔ)器包含至少所述n個(gè)經(jīng)編碼的碼元以及不到總數(shù)k個(gè)的源碼元。2.如權(quán)利要求1所述的方法,其特征在于,在變換過(guò)程中所述第一存儲(chǔ)器中的最大碼元數(shù)目不大于n+l和k+l中的較大值。3.如權(quán)利要求l所述的方法,其特征在于,在變換過(guò)程中所述第一存儲(chǔ)器中的最大碼元數(shù)目與n+l和k+l中的較大值的接近程度遠(yuǎn)高于其與k+n的接近程度。4.如權(quán)利要求l所述的方法,其特征在于,n不等于k。5.如權(quán)利要求l所述的方法,其特征在于,n等于k。6.如權(quán)利要求1所述的方法,其特征在于,所述變換表示Reed-Solomon編碼。7.如權(quán)利要求l所述的方法,其特征在于,所述變換表示GRA編碼。8.如權(quán)利要求l所述的方法,其特征在于,所述變換表示連鎖反應(yīng)編碼。9.如權(quán)利要求l所述的方法,其特征在于,所述變換表示LDPC編碼。10.如權(quán)利要求1所述的方法,其特征在于,在所述變換中使用的碼元運(yùn)算的數(shù)目大致與所述矩陣的非零元素的數(shù)目成比例。11.如權(quán)利要求1所述的方法,其特征在于,在所述變換中使用的碼元運(yùn)算的數(shù)目大致與所述矩陣的逆的非零元素的數(shù)目成比例。12.如權(quán)利要求1所述的方法,其特征在于,所述矩陣包括編碼矩陣的允許實(shí)現(xiàn)原地編碼的分解。13.如權(quán)利要求1所述的方法,其特征在于,所述矩陣表示一種允許高效的原地編碼的碼。14.在將安排為多個(gè)經(jīng)編碼的源碼元的數(shù)據(jù)解碼為多個(gè)經(jīng)解碼的碼元的解碼器中,一種執(zhí)行從所述經(jīng)編碼的碼元到所述經(jīng)解碼的碼元的變換的方法,其中所述經(jīng)編碼的碼元中的一定數(shù)目即r個(gè)將被變換為d個(gè)經(jīng)解碼的碼元,所述方法包括訪問(wèn)存儲(chǔ)在第一存儲(chǔ)器中的所述r個(gè)經(jīng)編碼的碼元;執(zhí)行第一變換步驟以計(jì)算對(duì)所述r個(gè)經(jīng)編碼的碼元操作的矩陣運(yùn)算從而產(chǎn)生中間輸出碼元集,所述運(yùn)算是編碼矩陣的逆,所述中間集中的至少一些碼元構(gòu)成所述d個(gè)經(jīng)解碼的碼元中的一些;將所述中間輸出碼元集存儲(chǔ)在所述第一存儲(chǔ)器中,以替換所述r個(gè)經(jīng)編碼的碼元中的至少一些,所述中間集中輸出碼元的數(shù)目小于所述數(shù)目d;以及重復(fù)所述執(zhí)行和存儲(chǔ)步驟至少一次直至所述第一存儲(chǔ)器包含至少所述d個(gè)經(jīng)解碼的碼元以及不到總數(shù)r個(gè)的經(jīng)編碼的碼元。15.如權(quán)利要求14所述的方法,其特征在于,在變換過(guò)程中所述第一存儲(chǔ)器中的最大碼元數(shù)目不大于r+l和d+l中的較大值。16.如權(quán)利要求14所述的方法,其特征在于,在變換過(guò)程中所述第一存儲(chǔ)器中的最大碼元數(shù)目與r+l和d+l中的較大值的接近程度遠(yuǎn)高于與r+d的接近程度。17.如權(quán)利要求14所述的方法,其特征在于,r不等于d。18.如權(quán)利要求14所述的方法,其特征在于,r等于d。19.如權(quán)利要求14所述的方法,其特征在于,所述變換表示Reed-Solomon解碼。20.如權(quán)利要求14所述的方法,其特征在于,所述變換表示GRA解碼。21.如權(quán)利要求14所述的方法,其特征在于,所述變換表示連鎖反應(yīng)解碼。22.如權(quán)利要求14所述的方法,其特征在于,所述變換表示LDPC解碼。23.如權(quán)利要求14所述的方法,其特征在于,在所述變換中使用的碼元運(yùn)算的數(shù)目大致與所述矩陣的非零元素的數(shù)目成比例。24.如權(quán)利要求14所述的方法,其特征在于,在所述變換中使用的碼元運(yùn)算的數(shù)目大致與所述矩陣的逆的非零元素的數(shù)目成比例。25.如權(quán)利要求14所述的方法,其特征在于,所述矩陣包括解碼矩陣的允許原地解碼的分解。26.如權(quán)利要求14所述的方法,其特征在于,所述矩陣表示一種允許高效的原地解碼的碼。27.—種通信系統(tǒng),其中安排成多個(gè)即k個(gè)源碼元的數(shù)據(jù)在發(fā)射機(jī)處被變換為多個(gè)即n個(gè)經(jīng)編碼的碼元,在通信信道上被發(fā)送并且所發(fā)送的經(jīng)編碼的碼元的至少一些在接收機(jī)處作為多個(gè)即r個(gè)接收到的碼元被接收并且這r個(gè)接收到的碼元被變換為多個(gè)即d個(gè)經(jīng)解碼的碼元,所述d個(gè)經(jīng)解碼的碼元在d不小于k時(shí)表示所述k個(gè)源碼元,所述通信系統(tǒng)包括發(fā)送緩沖器,具有一大小,其中所述k個(gè)源碼元所需的存儲(chǔ)器的大小與所述n個(gè)經(jīng)編碼的碼元所需的存儲(chǔ)器的大小合在一起總計(jì)大于所述發(fā)送緩沖器的大?。话l(fā)送生成邏輯,用于通過(guò)計(jì)算對(duì)所述k個(gè)源碼元進(jìn)行操作的編碼矩陣運(yùn)算生成中間輸出碼元集,所述中間集中的至少一些碼元構(gòu)成所述n個(gè)經(jīng)編碼的碼元中的一些;發(fā)送存儲(chǔ)邏輯,用于將所述中間輸出碼元集存儲(chǔ)在所述發(fā)送緩沖器中,以替換所述k個(gè)源碼元中的至少一些,所述中間集中輸出碼元的數(shù)目小于所述數(shù)目n;流邏輯,用于使所述發(fā)送生成邏輯生成另一中間輸出碼元集并使所述發(fā)送存儲(chǔ)邏輯存儲(chǔ)該中間輸出碼元集,以替換所述k個(gè)源碼元中的另外一些碼元,直至所述發(fā)送緩沖器包含至少所述n個(gè)經(jīng)編碼的碼元以及不到總數(shù)k個(gè)的源碼元;發(fā)送電路,用于在所述通信信道上發(fā)送所述n個(gè)經(jīng)編碼的碼元;接收電路,用于接收所述r個(gè)接收到的碼元,其中所述r個(gè)接收到的碼元是所述通信信道傳送所述n個(gè)經(jīng)編碼的碼元的結(jié)果;接收緩沖器,具有一大小,使得所述r個(gè)接收到的碼元所需的存儲(chǔ)器大小與所述d個(gè)經(jīng)解碼的碼元所需的存儲(chǔ)器大小合在一起總計(jì)大于所述接收緩沖器的大??;接收生成邏輯,用于通過(guò)計(jì)算對(duì)所述r個(gè)接收到的碼元進(jìn)行操作的解碼矩陣運(yùn)算生成中間接收輸出碼元集,所述中間接收輸出碼元集中的至少一些構(gòu)成所述d個(gè)經(jīng)解碼的碼元中的一些;接收存儲(chǔ)邏輯,用于將所述中間接收輸出碼元集存儲(chǔ)在所述接收緩沖器中,以替換所述r個(gè)接收到的碼元中的至少一些,所述中間接收輸出碼元集中接收輸出碼元的數(shù)目小于所述數(shù)目山以及流邏輯,用于使所述接收生成邏輯生成另一中間接收輸出碼元集并使所述接收存儲(chǔ)邏輯存儲(chǔ)該中間接收輸出碼元集,以替換所述r個(gè)接收到的碼元中的另外一些碼元直至所述接收緩沖器包含至少所述d個(gè)經(jīng)解碼的碼元以及不到總數(shù)r個(gè)的接收到的碼元。28.如權(quán)利要求27所述的通信系統(tǒng),其特征在于,所述邏輯包括要由可編程處理器執(zhí)行的程序代碼指令。29.如權(quán)利要求27所述的通信系統(tǒng),其特征在于,所述邏輯包括硬件電路。30.如權(quán)利要求27所述的通信系統(tǒng),其特征在于,所述邏輯部分包括程序代碼指令且部分包括硬件電路。31.如權(quán)利要求27所述的通信系統(tǒng),其特征在于,所述解碼矩陣是所述編碼矩陣當(dāng)中由所述接收到的碼元中的至少一些定義的部分的逆,從而使得所述解碼矩陣乘以所述編碼矩陣的所述部分恰好為單位矩陣。32.如權(quán)利要求27所述的通信系統(tǒng),其特征在于,所述接收機(jī)是移動(dòng)電話接收機(jī)。33.如權(quán)利要求27所述的通信系統(tǒng),其特征在于,所述接收機(jī)是適于車用的接收機(jī)。34.如權(quán)利要求27所述的通信系統(tǒng),其特征在于,所述發(fā)射機(jī)是移動(dòng)電話發(fā)射機(jī)。35.如權(quán)利要求27所述的通信系統(tǒng),其特征在于,所述發(fā)射機(jī)是適于車用的發(fā)射機(jī)。36.如權(quán)利要求27所述的通信系統(tǒng),其特征在于,所述發(fā)射機(jī)是數(shù)字媒體發(fā)射機(jī),而所述接收機(jī)是數(shù)字媒體接收機(jī)。全文摘要在使用具有存儲(chǔ)器限制的計(jì)算設(shè)備編碼數(shù)據(jù)碼元的編碼器中,一種執(zhí)行變換的方法包括將源塊加載到該計(jì)算設(shè)備的存儲(chǔ)器中;執(zhí)行小于該源塊的全部的中間變換,然后在存儲(chǔ)器中用中間結(jié)果替換該源塊的一部分并隨后以存儲(chǔ)在存儲(chǔ)器中的輸出碼元構(gòu)成經(jīng)編碼碼元的集合的方式完成該變換。一種解碼器以允許基本使用同一存儲(chǔ)器來(lái)存儲(chǔ)接收到的數(shù)據(jù)和已解碼的源塊的順序執(zhí)行解碼步驟,從而就像執(zhí)行原地(in-place)變換一樣。使用原地變換,隨著接收到的數(shù)據(jù)被變換為經(jīng)解碼的源數(shù)據(jù),為接收到的數(shù)據(jù)所預(yù)留的大部分存儲(chǔ)器可被重寫(xiě)而不需要類似大小存儲(chǔ)器來(lái)用于經(jīng)解碼的源數(shù)據(jù)。文檔編號(hào)H04L27/00GK101243664SQ200680029326公開(kāi)日2008年8月13日申請(qǐng)日期2006年6月12日優(yōu)先權(quán)日2005年6月10日發(fā)明者M(jìn)·A·肖克洛拉希,M·G·盧比申請(qǐng)人:數(shù)字方敦股份有限公司