WO2010083882A1 - Neighbor search in codes - Google Patents
Neighbor search in codes Download PDFInfo
- Publication number
- WO2010083882A1 WO2010083882A1 PCT/EP2009/050660 EP2009050660W WO2010083882A1 WO 2010083882 A1 WO2010083882 A1 WO 2010083882A1 EP 2009050660 W EP2009050660 W EP 2009050660W WO 2010083882 A1 WO2010083882 A1 WO 2010083882A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- mapping
- vector
- code
- codeword
- binary
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3082—Vector coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/1505—Golay Codes
Definitions
- the present patent application relates to neighbor search in codes .
- the quantization is one of the main tools of lossy signal compression.
- the quantization process consists of finding, for a given input data, a close representative that would enable the storage or transmission of the data with reduced number of bits.
- a quantization function can be written as f:D->C where D is the input space and C is the set of representatives, or the codebook. For a given input from D, a representative, or codeword, is selected from C, such that a given distortion measure between the input and the representative is minimized over the entire codebook. The process of finding the codeword minimizing the distortion measure is usually called the nearest neighbor search.
- the quantization is called scalar quantization; otherwise it is called vector quantization.
- the representatives are also called codevectors in the case of vector quantization.
- the cardinality, C c , of the codebook is smaller than that of the input space, allowing the representation of the input data on fewer bits.
- the index, in the codebook, of the nearest neighbor codeword could be represented on ceil (log2C c ) bits, where ceil(r) indicates the nearest integer larger than or equal to r.
- the nearest neighbor search involves the evaluation of the distortion measure for each codeword, which, especially for the vector quantization case, may be very expensive from the computational point of view.
- Various fast nearest neighbor algorithms have been proposed, that reduce the number of distortion evaluations based on one or more conditions to stop the evaluations.
- a method comprising searching for a codeword of a set of codewords of a first code representing a near neighbor to a vector, wherein a second code is associated with a second set of codewords, wherein a codeword of the second set of codewords is associated with a subset of codewords of the first code, and wherein a codeword of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives; wherein the search comprises for each codeword of the second set of codewords: performing the search in at least one shell of the first code, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight, by determining a mapping representative of the set of mapping representatives for each shell of the at least one shell based on mapping properties and an optimization criterion, the mapping properties defining rules for the mapping representatives of the set of mapping representatives with respect to a shell of the
- a first apparatus comprising a processor configured to search for a codeword of a set of codewords of a first code representing a near neighbor to a vector, wherein a second code is associated with a second set of codewords, wherein a codeword of the second set of codewords is associated with a subset of codewords of the first code, and wherein a codeword of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives, wherein the search comprises for each codeword of the second set of codewords: performing the search in at least one shell of the first code, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight, by determining a mapping representative of the set of mapping representatives for each shell of the at least one shell based on mapping properties and an optimization criterion, the mapping properties defining rules for the mapping representatives of the set of mapping representatives with respect
- a second apparatus comprising means for searching for a codeword of a set of codewords of a first code representing a near neighbor to a vector, wherein a second code is associated with a second set of codewords, wherein a codeword of the second set of codewords is associated with a subset of codewords of the first code, and wherein a codeword of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives; wherein the search comprises for each codeword of the second set of codewords: performing the search in at least one shell of the first code, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight, by determining a mapping representative of the set of mapping representatives for each shell of the at least one shell based on mapping properties and an optimization criterion, the mapping properties defining rules for the mapping representatives of the set of mapping representatives with respect to a
- the first apparatus as well as the second apparatus can be a module that forms part of or is to form part of another apparatus (such as for instance an audio encoder or decoder) , for instance a processor, or it can be a separate apparatus.
- another apparatus such as for instance an audio encoder or decoder
- a processor for instance a processor
- a computer-readable storage medium encoded with instructions is described, that, when executed by a computer, perform the method according to the first aspect of the present invention.
- the readable storage medium may for instance be a computer-readable or processor-readable medium, and may either be a removable storage medium or a storage medium that is fixedly installed in an apparatus or device.
- a computer program which causes a processor to search for a codeword of a set of codewords of a first code representing a near neighbor to a vector, wherein a second code is associated with a second set of codewords, wherein a codeword of the second set of codewords is associated with a subset of codewords of the first code, and wherein a codeword of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives; wherein the search comprises for each codeword of the second set of codewords: performing the search in at leasr one shell of the first code, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight, by determining a mapping representative of the set of mapping representatives for each shell of the at least one shell based on mapping properties and an optimization criterion, the mapping properties defining rules for the mapping representatives of the set of mapping representatives with
- the invention comprises searching for a codeword of a set of codewords of a first code representing a near neighbor to a vector.
- this vector may represent a vector comprising values which have to be replaced by an approximation in a codeword of a set of codewords of the code, wherein the set of codewords may be considered as a codebook of the code .
- this replacement may be used for vector quantization of the real valued vector.
- the apparatus may for instance represent an audio encoder or a component of an audio encoder configured to perform a vector quantization of the vector.
- the vector may represent a received vector at a receiving apparatus or at a component of a receiving apparatus, which due to channel errors might be different of a transmitted vector, wherein the transmit vector is encoded with the code.
- the apparatus may for instance represent a decoder or a component of a decoder configured to find a neighbor to a received transmitted vector in the code .
- vector is not limiting, any representation comprising information which can be mapped to a codeword of the set of codewords of the first code may be understood as vector.
- the first code may represent a block code, e.g. a BCH-Code, a Reed-Solomon Code, a Golay Code or any other well-suited code.
- the code may represent a binary code, and the binary code may represent a cyclic binary code.
- the first code can be associated with different shells, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight.
- the Hamming weight may be defined as the number of non-zero entries in a vector. For instance, the Hamming weight may be defined by the number of ones in a binary codeword comprising elements with values one and zero.
- a second code is applied for performing the search of a codeword of the first code representing a near neighbor to the vector.
- the second code is associated with a second set of codewords, wherein this second set may be considered as a second codebook associated with the second code.
- the number of codewords in the second codebook may be smaller than the number of codewords in the codebook of the first code.
- a codeword of the second set of codewords is associated with a subset of codewords of the first code, and a codeword of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives.
- a kind of transfer function/transfer rule may exist configured to transform a codeword of the first code into a corresponding pair of codeword of the second code and mapping representative, and vice versa, for transforming a pair of second code codeword and mapping representative to the corresponding codeword of the first code.
- a codeword of the second code may be used to construct any of the codewords of the associated subset of codewords of the first code, and the mapping representative may be used to map zhe codeword of the second code to one codeword of this subset of codewords of the first code.
- the transfer function may be implemented in a kind of look-up table, or it may be a generic function/algorithm or a combination of both.
- mapping representatives are associated with mapping properties defining rules for the mapping representatives with respect to a shell of the at least one shell.
- mapping properties may further depend on the codeword of the second code .
- the mapping properties may comprise further rules, e.g. general mapping properties or other special mapping properties.
- the mapping representatives may be realized by means of binary vectors, wherein special bit patterns in the binary vectors are associated with predetermined mappings, but any other representation may also be applied.
- At least one shell of the code is selected.
- this at least one selected shell may represent a set of shells.
- a codeword of the second set of codewords may be selected for performing the search in the selected shell of the first code.
- the selected codeword of the second code is associated with a corresponding subset of codewords of the first code.
- the second codebook of the second code may be stored in a kind of look-up table, or the codewords of the second codebook may be constructed by means of a generic function/algorithm. For instance, codeword leaders may be stored in a table and they may be used to construct the second codebook by specific permutation and scaling operation (s) .
- a mapping representative is determined for each shell of the selected at least one shell based on the mapping properties and an optimization criterion.
- the optimization criterion is based on determining a metric distance representative between the vector and a codeword of the first code depending on a selected codeword of the second code and a selected mapping representative.
- determining the mapping representative may comprise switching between different mapping representatives of the set of mapping representatives in order to maximize the optimization criterion under consideration of the mapping properties of the respective shell. This switching between different mapping representatives may be performed based on special rules.
- the metric distance representative may represent any well-suited metric for determining a value being associated with the distance between the vector and the selected codeword of the first code. For instance, this metric distance representative may represent a value being associated with the Euclidian distance between the vector and the selected codeword of the first code, or the metric distance representative may represent a value being associated with a maximum likelikood or maximum a-priori decoding of the vector with respect to the codeword. Of course, any other well-suited metric may also be used for the metric distance representative.
- the mapping representative providing a good metric distance representative is determined, e.g. the best metric distance may be the aim for the determining of the mapping representative in each of the selected shells.
- the determined metric distance representative may be compared to the metric distance of a previous determined favorite pair of codeword of the second code and mapping representative, and in case the determined metric distance representative is better that the metric distance of the previous determined favorite pair, the determined mapping representative and the corresponding codeword of the second code and the respective metric distance representative are stored as favorite pair.
- a favorite pair may be determined for each of the selected shells. For instance, this maybe applied in case the optimization criterion depends on the metric distance representative and an additional value, wherein the additional value depends on the shell of the codeword and represents for example a constant value for each shell, and wherein the metric distance representative is calculated in a same way for each of the shells. Then, after a favorite pair has been determined for each of the selected shells, the best pair of this set of favorite pairs may be selected in order to optimize the optimization criterion across selected shells.
- the search based on the selected codeword of the second code is finished, it is determined whether there exists a next codeword in the second set of codewords. If there is a next codeword in the second set of codewords, this codeword is selected and the method proceeds with determining a mapping representative for each shell of the selected shells in order to search for the mapping representatives providing the best metric distance in this at least one shell for the actual codeword of the second code.
- this search is performed for each codeword of the second code.
- the mapping representative and the corresponding codeword of the second code optimizing the optimizing criterion is selected out of the determined mapping representatives and corresponding codewords of the second code. For instance, this may be achieved by storing and updating the favorite pair of second code codeword and mapping representative corresponding to the codeword of the first code providing the best metric distance representative, as exemplary mentioned above. Furthermore, this updating of the favorite pair may be performed for each of the shells separately, or it may be performed for the complete set of shells, which may depend on the optimization criterion, as mentioned above.
- This selected mapping representative and the corresponding codeword of the second code may now be associated with the codeword of the first code representing a near neighbor to the vector.
- This method shows the advantage, that the search for the neighbor codeword is performed based on the second code and the mapping representative, thus, the search is partitioned into a search in the different subsets of codewords of the first code, wherein each of these subsets is associated with one codeword of the second codebook.
- the mapping properties and the optimization criterion may be used to perform a search in at least one shell of the codewords of the selected subset of codewords. Due to this partitioning of the search with respect for each of the at least one selected shell, the computational complexity can be decreased compared to a complete search in the full codebook.
- a codeword of the second code is associated with N components and each mapping representative of the set of mapping representatives is associated with a binary mapping vectors comprising M bits, and the metric distance representative of the optimization criterion depends on N submetrics, each of the N submetrics depending on a component of the N components and on the binary mapping vector, wherein said determining a mapping representative comprises: selecting a shell of the at least one shell, and setting values of the bits of a binary mapping vector in accordance with the mapping properties for the selected shell taking into account optimizing the metric distance representative based on the influence of the bits with respect to the N submetrics.
- a binary mapping vector may be considered as a mapping representative, wherein a binary mapping vector and a codeword of the second code are associated with a codeword of the first code.
- a submetric of the N submetrics depends on a component of the N components which are associated with a codeword of the second code, and, further, the submetric may depend on at least one bit of the respective binary mapping vector.
- the metric distance representative between the vector and a codeword of the first code may be determined based on determining the N submetrics, wherein these submetrics may be determined based on the N components of the codeword of the second code and the M bits of the binary mapping vector.
- the values of the bits of the binary mapping vector may be set so that the metric distance representative is maximized (or minimized, which may depend on the optimization criterion) by simultaneously fulfilling the mapping properties for the selected shell.
- mapping properties comprise rules for setting ones in the binary mapping vector
- the best locations for setting bits having the value one in the binary mapping vector fulfilling these mapping properties by simultaneously optimizing the optimization criterion may be determined, and then the ones are placed at the determined locations in the binary mapping vector, whereas the other locations in the binary mapping vector are filled with zeros.
- the locations may be chosen such that the influence of the selected values of the bits at these locations - the bits having the value one - and the corresponding components of the N submetrics maximize (or minimize) the metric distance representative.
- the mapping properties may comprise rules for setting zeros in the binary mapping vector, so that setting the values of the bits in the binary mapping vector may be performed in a similar way as described above.
- the number of bits in the binary mapping representative is the same as the number of components associated with a codeword of the second code, and there may exist a special decomposition of the submetrics such that each submetric depends on exactly one bit of a bit position in the binary mapping vector. Accordingly, for instance, changing one bit of the N bits in a binary mapping vector affects exactly one submetric of the N submetric.
- each submetric is calculated by multiplying a first value and a second value, the first value representing an algebraic sign depending on the bit of the corresponding bit position in the binary mapping vector, and the second value representing a metric value depending on the corresponding component and the vector, the method comprising determining the N second values for the actual codeword of the second code, wherein said setting values of the bits of the binary mapping vector comprises: setting values of the bits of the binary mapping vector based on the mapping properties for the selected shell and, if the mapping properties allow, based on at least one second value of the metric representative, in order to optimize the metric distance representative.
- bit may represent the value of the bit at i-th position in the binary mapping vector, so that the first value represents the algebraic sign depending on the bit at the corresponding i-th bit position in the binary mapping vector. Further, for instance, in case holds, the first value is represented by the value of the bit at the corresponding i-th position in the binary mapping vector .
- the metric value may be denoted as and it may depend on the corresponding component of the codeword h of the second code and the associated position i in the binary mapping vector. Further, the metric value depends on the vector for which the neighbor search is to be performed, so that, for instance, the metric value may be considered as a representative indicating an influence of the corresponding component H 1 with respect to the metric distance representative for a given vector.
- setting the values of the bits b t of the binary mapping vector may comprise setting the value of at least one bit of the binary vector such that the corresponding first value has the same algebraic sign as the corresponding second value
- this setting the value of at least one bit of the binary vector is performed for so many bits as possible.
- the value of at least one bit of the binary vector is ser such that the corresponding first value ⁇ t has the opposite algebraic sign as the corresponding second value
- the metric values may be calculated first, and then at least one metric value is selected from the set of N metric values, wherein the at least one selected metric value has higher influence on the metric distance representative compared to the influence of the remaining metric values, and the bits b ⁇ of the binary mapping vector being associated with the at least one selected metric value are set as mentioned above in order to maximize (or minimize) the respective submetric.
- the mapping properties exactly specify the value of at least one bit in the binary mapping vector
- the at least one metric value is not selected from the complete set of N metric values but from the subset of metric values which are not associated with the at least one predefined bit in the binary mapping vector.
- the at least one selected metric value has higher influence on the metric distance representative compared to the influence of the remaining metric values of the subset of submetrics.
- the mapping properties comprise a set of odd parity rules and a set of even parity rules
- the odd parity rules comprising rules for setting values of the bits in the binary mapping vector in order to perform mapping on a codeword of the first code according to a shell and in order to ensure odd parity of the binary mapping vector
- the even parity rules comprising rules for setting values of the bits in the binary mapping vector in order to perform mapping on a codeword in the first code according to a shell and in order to ensure even parity of the binary mapping vector.
- the search in one shell may be partitioned into a first search covering odd parity binary mapping vectors and into a second search covering even parity binary mapping vectors based on the special odd parity rules and even parity rules, respectively.
- the metric distance representative can be determined by means of a case differentiation, the first case relating to odd parity binary mapping vectors and the second case relating to even parity binary mapping vectors, wherein each submetric is calculated by multiplying a first value and a second value, the first value representing an algebraic sign depending on the bit of the corresponding bit position in the binary mapping vector, and wherein in the first case the second value represents a metric value depending on the corresponding component and the vector under the assumption of an odd parity binary mapping vector, and wherein in the second case the second value represents a metric value depending on the corresponding component and the vector under the assumption of an even parity binary mapping vector, the method comprising determining the N second values for the actual codeword of the second code for the first and second case, respectively, wherein said setting values of the bits of the binary mapping vector comprises: - for the first case: setting values of the bits of the binary mapping vector based on the mapping properties for the selected shell and, if the mapping properties allow, based on at least one second
- the setting of values of at least one of the first and second case may be performed as mentioned above with respect to the penultimate exemplary embodiment and under consideration of the respective odd or even mapping properties.
- the method comprises calculating a first set of second values related wirh the first case, the first set of second values comprising all second values for each of the N positions for each component under the assumption of an even parity binary mapping vector; and calculating a second set of second values related with the second case, the second set of second values comprising all second values for each of the N positions for each component under the assumption of an odd parity binary mapping vector, wherein the calculating of the first and second set of second values is performed prior to the searching.
- the first set of second values may be used to select at least one metric value from this set of N metric values, wherein the at least one selected metric value has higher influence on the metric distance representative compared to the influence of the remaining metric values, and the bits of the binary mapping vector being associated with the at least one selected metric value are set as mentioned above in order to maximize (or minimize) the respective submetric.
- the mapping properties exactly specify the value of at least one bit in the binary mapping vector
- the at least one metric value is not selected from the complete set of N metric values but from the subset of metric values which are not associated with the at least one predefined bit in the binary mapping vector.
- the at least one selected metric value has higher influence on the metric distance representative compared to the influence of the remaining metric values of the subset of submetrics .
- the same may be applied for performing the search in the second case.
- setting values of the bits of the binary mapping vector in one of the first and second cases comprises, under the assumption that represents the i-th second value of the selected case based on the i-th component of the codeword of the second code and that i denotes the bit position in the binary mapping vector: determining the number of bits in the binary mapping vector to be set to value one based on the mapping properties in order to ensure that the binary mapping vector maps onto the selected shell, the number of ones denoted as k; - placing the ones to the locations in the binary mapping vector such that the sum will be as large as possible and the relevant mapping properties will be satisfied.
- mapping properties have to be satisfied in order to perform mapping on a codeword of the first code in the selected shell. For instance, depending on the relevant mapping properties, it may occur that the locations i v ...,i k may not be chosen completely freely.
- the sum of the N submetrics may be maximized, because the selected second values are associated with first values having a positive algebraic sign.
- the other locations being different from i ] ,...,i k are filled with zeros. For instance, before placing the ones, each element of the binary vector may be set to zero.
- the method might be modified slightly and is not restricted to placing ones to the locations in order to fulfill the requirements, but the method may be performed vice versa, by determining the number of bits to be set to value zero depending on the selected shell, and then by placing the zeros to the locations i v ...,i k - while the other location are filled with ones - in order to minimize the sum under consideration of the mapping properties .
- the ones may be placed to the locations i v ...,i k in the binary mapping vector in such a way thar the sum will be as small as possible and the relevant mapping properties will be satisfied
- setting values of the bits of a binary mapping vector in one of the first and second cases comprises, under the assumption that represents the i-th second value of the selected case based on the i-th component h. of the codeword of the second code and that i denotes the bit position in the binary mapping vector: - determining a starting binary mapping vector providing a good starting solution with respect to the metric distance representative of the optimization criterion, changing the values of k elements in locations of the starring binary mapping vector in order to determine the binary mapping vector, wherein k is the minimum number which will satisfy the relevant mapping properties, wherein this changing comprises choosing from all possible such choices providing the minimum sum
- the final binary mapping vector may be enforced to fulfill the mapping properties of a desired shell and by satisfying other mapping properties, thereby taking into account to degrade the starting metric representative only slightly.
- the starting binary mapping vector may be obtained by setting the value of at least one bit b t of the binary vector such that the corresponding first value ⁇ t has the same algebraic sign as the corresponding second value ⁇
- the starting binary mapping vector may be obtained by setting the value of at least one bit of the binary vector such that the corresponding first value has the opposite algebraic sign as the corresponding second value
- changing the value of an element of the starting binary mapping vector may be performed by changing a value to value b or vice versa .
- determining a starting binary mapping vector comprises placing a zero at i-th position of the starting binary mapping vector in case is negative, otherwise placing a one at i-th position.
- the first code represents a Golay code
- the second code represents a hexacode
- the mapping representatives represent binary mapping vectors .
- Fig. Ia depicts a schematic illustration of a first exemplary embodiment of a method according to the present invention
- Fig. Ib depicts a schematic illustration of a first exemplary embodiment of an apparatus according to the present invention
- Fig. Ic depicts a schematic illustration of a second exemplary embodiment of an apparatus according to the present invention.
- Fig. 2a depicts a schematic illustration of a second exemplary embodiment of a method according to the present invention
- Fig. 2b depicts a schematic illustration of a third exemplary embodiment of a method according to the present invention.
- Fig. 2c depicts a schematic illustration of a fourth exemplary embodiment of a method according to the present invention.
- Fig. 2d depicts a schematic illustration of a fifth exemplary embodiment of a method according to the present invention.
- FIG. 3 depicts a schematic illustration of a sixth exemplary embodiment of a method according to the present invention.
- Fig. 4a depicts a schematic illustration of an exemplary embodiment of a system according to the present invention
- Fig. 4b depicts a schematic illustration of a third exemplary embodiment of an apparatus according to the present invention
- Fig. 5 depicts a schematic illustration of an exemplary embodiment of a readable medium according to the present invention
- Figs. 6a and 6b depict a schematic table comprising counting the Hamming weights of all possible Golay codewords obtained by the mapping of each hexacode word.
- Fig. Ia depicts a schematic flowchart of a first exemplary embodiment of a method according to the present invention.
- the method comprises searching for a codeword of a set of codewords of a first code representing a near neighbor to a vector.
- this vector may represent a real valued vector which has to be replaced by an approximation in a codeword of a set of codewords of the first code, wherein the set of codewords may be considered as a codebook of the code.
- this replacing may be used for vector quantization of the real valued vector.
- Ib depicts a schematic illustration of a first exemplary embodiment of an apparatus 170 according to the present invention, wherein the apparatus 170 represents an audio encoder or a component of an audio encoder configured to perform vector quantization as part of the encoding process by replacing an input vector received at input 171 or a data vector derived based on the input data received at input 171 with a neighbor codeword of the code, wherein the determined codeword may be outputted at output 172 of the audio encoder 170.
- the vector may represent a received vector at a receiving apparatus or at a component of a receiving apparatus, which due to channel errors might be different of a transmitted vector, wherein the transmitted vector is encoded with the code.
- Fig. Ic depicts a schematic illustration of a second exemplary embodiment of an apparatus 180 according to the present invention, wherein the apparatus 180 represents a decoder 180 configured to search for the nearest vector of code with respect to a distorted input vector which is received at input 181.
- the vector is input or read to be processed by the method, as indicated by reference 110 in Fig. Ia.
- vector is not limiting, any representation comprising information which can be mapped to a codeword of the set of codewords of the code may be understood as vector.
- the code may represent a block code, e.g. a BCH-Code, a Reed-Solomon Code, a Golay Code or any other well-suited code.
- the code can be associated with different shells, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight.
- a second code is applied for performing the search of a codeword representing a near neighbor to the vector.
- the second code is associated with a second set of codewords, wherein this second set of codewords may be considered as a second codebook associated with the second code.
- the number of codewords in the second codebook may be smaller than the number of codewords in the codebook of the first code.
- a codeword of the second set of codewords is associated with a subset of codewords of the first code, and a codeword of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives.
- a kind of transfer function/transfer rule may exist configured to transform a codeword of the first code into a corresponding pair of second code codeword and mapping representative, and vice versa, for transforming a pair of codeword of the second code and mapping representative to the corresponding codeword of the first code.
- a codeword of the second code may be used to construct any of the codewords of the associated subset of codewords of the first code, and the mapping representative is used to map the codeword of the second code on one codeword of this subset of codewords of the first code.
- the transfer function may be implemented in a kind of look-up table, or it may be a generic function/algorithm or a combination of both.
- the mapping representatives are associated with mapping properties defining rules for the mapping representatives with respect to a shell of the at least one shell of the first code. Thus, if a codeword of the second code is intended to be mapped to codewords of the first code on the same shell, the mapping representatives have to fulfill the mapping properties with respect to this shell. Some of the rules of these mapping properties may further depend on the codeword of the second code.
- mapping properties may comprise furrher rules, e.g. general mapping properties or other special mapping properties.
- mapping representatives may be realized by means of binary vectors, wherein a special bit patterns in the binary vectors are associated with predetermined mappings, but any other representation may also be applied.
- At least one shell of the first code is selected, as indicated by reference sign 120 in Fig. Ia.
- this at least one selected shell may represent a set of shells.
- a codeword of the second set of codewords is selected, as indicated by reference sign 130.
- the selected codeword of the second code is associated with a corresponding subset of codewords of the first code.
- the second codebook of the second code may be stored in a kind of look-up table, or the codewords of the second codebook may be constructed by means of a generic function/algorithm. For instance, codeword leaders may be stored in a table and may be used to construct the second codebook by specific permutation and scaling operation.
- a mapping representative is determined for each shell of the selected at least one shell based on the mapping properties and an optimization criterion, as indicated by reference sign 140 in Fig. Ia.
- the optimization criterion is based on determining a metric distance representative between the vector and a codeword of the first code depending on a selected codeword of the second code and a selected mapping representative.
- determining the mapping representative may comprise switching between different mapping representatives of the set of mapping representatives in order to maximize the optimization criterion under consideration of the mapping properties of the respective shell. This switching between different mapping representatives may be performed based on special rules.
- the metric distance representative may represent any well-suited metric for determining a value being associated with the distance between the vector and the selected codeword of the first code, the selected codeword of the first code depending on the selected codeword of the second code and a mapping representative.
- this metric distance representative may represent a value being associated with the Euclidian distance between the vector and the selected codeword of the first code, or the metric distance representative may represent a value being associated with a maximum likelikood or maximum a-priori decoding of the vector with respect to the codeword of the first code.
- any other well-suited metric may also be used for the metric distance representative.
- the mapping representative providing a good metric distance representative is determined, e.g. the best metric distance may be the aim for the determining of the mapping representative in each of the selected shells.
- the determined metric distance representative may be compared to the metric distance of a previous determined favorite pair of second code codeword and mapping representative, and in case the determined metric distance representative is better than the metric distance of the previous determined favorite pair, the determined mapping representative and the corresponding codeword of the second code and the respective metric distance representative are stored as favorite pair.
- a favorite pair may be determined for each of the selected shells. For instance, this may applied in case the optimization criterion depends on the metric distance representative and an additional value, wherein the additional value depends on the shell of the codeword of the first code and represents for example a constant value for each shell, and wherein the metric distance representative is calculated in a same way for each of the shells. Then, after a favorite pair has been determined for each of the selected shells, the best pair of this set of favorite pairs may be selected in order to optimize the optimization criterion across selected shells, as exemplarily indicated by reference sign 160 in Fig. Ia.
- next codeword in the second set of codewords as indicated by reference sign 150. If there is a next codeword, this codeword is selected (as indicated by reference sign 130) and the method proceeds with determining a mapping representative for each shell of the selected at least one shell (as indicated by reference sign 130) in order to search for the mapping representatives providing the best metric distance in this at least one shell.
- this search is performed for each codeword of the second code.
- mapping representative and the corresponding codeword of the second code optimizing the optimizing criterion are selected, as indicated by reference sign 160 in Fig. Ia. For instance, this may be achieved by storing and updating the favorite pair of second code codeword and mapping representative providing the best metric distance representative, as exemplary mentioned above. Furthermore, this updating of the favorite pair may be performed for each of the shells separately, or it may be performed for the complete set of shells, which may depend on the optimization criterion, as mentioned above.
- This selected mapping representative and the corresponding codeword of the second code can now be associated with the codeword of the first code representing a near neighbor to the vector.
- This method shows the advantage, that the search for the neighbor codeword of the first code is performed based on the second code and the mapping representative, thus, the search is partitioned into a search in the different subsets of codewords of the first code, wherein each of these subsets is associated with one codeword of the second codebook.
- the mapping properties and the optimization criterion may be used to perform a search in at least one shell of the codewords of the selected subset of codewords. Due to this partitioning of the search with respect to each of the at least one selected shell, the computational complexity can be decreased compared to a complete search in the full codebook.
- Fig. 2a depicts a schematic flowchart of a second exemplary embodiment of a merhod according to the present invention, which may be used for determining a mapping representative for at least one of the selected shells as described above with respect to the first exemplary embodiment and as indicated by reference sign 140 in Fig. Ia.
- the mapping representatives are realized by means of binary mapping vectors b having the length M, and, e.g., under the assumption that the vector represents a codeword in the codebook of the first code and that represents a codeword in the second codebook H of the second code, the mapping between a pair of codeword and mapping representative b to a codeword g may be performed by means of a transfer function
- each vector may comprise N components. Under this assumption, a codeword h may be mapped on 2 N codewords of the first code by means of the set of mapping representatives and the transfer function.
- the metric distance representative may depend on N submetrics, wherein each of the N submetrics depends on a component of the N components of a codeword of the second code and on the binary mapping vector.
- the i-th submetric may depend on the i-th component of the codeword of the second code and the i-th bit in the binary mapping vector, but any other well-suited assignment may also be applied.
- each component may represent a symbol of an alphabet comprising at least two symbols.
- the metric distance representative may represent the sum of the N submetrics, wherein increasing this sum may optimize the optimizing criterion.
- any other suited definition for the metric distance representative may be used, for instance decreasing the sum may optimize the optimizing criterion.
- a kind of rule depending on the submetrics in order to maximize the optimizing criterion may be defined.
- the N submetrics depend on the bits of the binary mapping vector. Accordingly, in order to a find a binary mapping vector providing the best metric distance representative in a selected shell of the first code and for a selected codeword of the second code, the method comprises setting values of the bits of a binary mapping vector in accordance with the mapping properties of the selected shell by simultaneously maximizing the optimizing criterion based on the influence of the bits with respect to the N submetrics, as indicated by reference sign 220 in Fig. 2.
- first and second shell may represent complementary shells, in the sense that for each codeword in the first shell there exists a codeword in the second shell such that the zeros becomes ones and the ones become zeros
- this special mapping connection between a first and a second shell may be used when performing determining the mapping representative for several shells by step 140 in Fig. Ia.
- this determined binary mapping vector may be mapped on its binary complement in order to construct a complement codeword in the second shell. Then, in this example, no further search has to be performed in the second shell of the first code, and only one of the first and second shells of the first code has to be selected in step 210.
- each of the N submetrics may depend on one bit of a bit position in the binary mapping vector.
- the number of bits in the binary mapping representative may be the same as the number of components associated with a codeword of the second code, and there may exist a special decomposition of the submetrics such that each submetric depends on exactly one bit of a bit position in the binary mapping vector. Accordingly, for instance, changing one bit of the N bits in a binary mapping vector affects exactly one submetric of the N submetric.
- Fig. 2b depicts a schematic flowchart of a third exemplary embodiment of a method according to the present invention, which may be used for determining a mapping representative for each shell as described in the preceding exemplary embodiments .
- each submetric may be calculated by multiplying a first value and a second value, rhe first value representing an algebraic sign depending on the bit of the corresponding i-th bit position in the binary mapping vector, and the second value representing a metric value depending on the corresponding component
- mapping properties comprise rules in order to ensure that the mapping vectors map onto the selected shell, wherein these rules related to the selected shell do not limit choosing the locations of bits in the binary vector.
- the method comprises determining the number of bits to be set to value one in the binary mapping vector based on the mapping properties in order to ensure that the binary mapping vectors maps onto a selected shell, as indicated by reference sign 241 in Fig. 2b, the number of ones being denoted as k.
- each element of the binary vector may be set " co zero.
- Fig. 2b might be modified slightly and is not restricted in placing ones to the locations in order to fulfill the requirements, but the method may be performed vice versa, by determining the number of bits to be set to value zero depending on the selected shell, and then by placing the zeros to the locations i v ...,i k - while the other location are filled with ones - in order to minimize the sum under consideration of the mapping properties .
- this third exemplary embodiment of the method may be used for determining a mapping representative for each shell of the first code presented in the first exerrplary embodiment, as indicate ⁇ by reference sign 120 in Fig. Ia, so that the third exemplary method for instance may be carried out for at least one of the selected at least one shell.
- this third exemplary embodiment of the method may be applied for setting values of the bits of a binary mapping vector as described in the second exemplary embodiment (indicated by reference sign 220 in Fig. 2a) .
- Fig. 2c depicts a schematic flowchart of a fourth exemplary embodiment of a method according to the present invention, which may be used for determining a mapping representative for the at least one selected shell as described in the preceding exemplary embodiments.
- each submetric may be calculated by multiplying a first value ana a second value, the first value representing an algebraic sign depending on the bit of the corresponding i-th bit position in the binary mapping vector, and the second value representing a metric value depending on the corresponding component
- the method comprises determining a starting binary mapping vector providing a good starting solution with respect to the metric distance representative of the optimization criterion, as indicated by reference sign 251 in Fig. 2c.
- each submetric being associated with the starting binary mapping vector provides a positive value resulting in a large starting metric representative, thereby maximizing the optimization criterion.
- any other well-suited starting binary mapping vector may be used, which may depend on the optimization criterion.
- the method comprises changing the binary values of k elements in locations Z 1 ,...,4 of the starting binary mapping vector in order to determine the final binary mapping vector, wherein k is the minimum number which will satisfy the relevant mapping properties, wherein this changing comprises choosing from all possible such choices providing the minimum sum
- the final binary mapping vector may be enforced to fulfill the mapping properties of a desired shell and by satisfying other mapping properties, thereby taking into account to degrade the starting metric representative only slightly.
- this fourth exemplary embodiment of the method may be used for determining a mapping representative for each shell presented in the first exemplary embodiment, as indicated by reference sign 120 in Fig. Ia, so that the fourth exemplary method for instance may be carried out for at least one of the selected shells. Furthermore, for instance, this fourth exemplary embodiment of the method may be applied for setting values of the bits of the binary mapping vector as described in the second exemplary embodiment (indicated by reference sign 220 in Fig. 2a) .
- Fig. 2d depicts a schematic flowchart of a fifth exemplary embodiment of a method according to the present invention, which may be used for determining a mapping representative for the at least one selected shell as described in the preceding exemplary embodiments .
- the mapping properties may comprise a set of odd parity rules and a set of even parity rules, the odd parity rules comprising rules for setting values of the bits in the binary mapping vector in order to perform mapping on a codeword of the first code according to a shell and in order to ensure odd parity of the binary mapping vector, and the even parity rules comprising rules for setting values of the bits in the binary mapping vector in order to perform mapping on a codeword of the first code according to a shell and in order to ensure even parity of the binary mapping vector.
- the search in one shell may be partitioned into a first search covering odd parity binary mapping vectors and into a second search covering even parity binary mapping vectors.
- the metric distance representative can be determined by means of a case differentiation, the first case relating to odd parity binary mapping vectors and the second case relating to even parity binary mapping vectors, wherein each submetric is calculated by multiplying a first value and a second value, the first value representing an algebraic sign depending on the bit of the corresponding bit position in the binary mapping vector, e.g. similar as explained before.
- the second value represents a metric value depending on the corresponding component and the vector under the assumption of an odd parity binary mapping vector
- the second value represents a metric value depending on the corresponding component and the vector under the assumption of an even parity binary mapping vector
- the N second values may be determined for the actual codeword of the second code for the first and second case, respectively, and, for instance, the second values of the first case may be denoted as and the second values of the second case may be denoted as
- performing the first search may include setting values of the bits of the binary mapping vector based on at least one second value of the metric representative of the first case in order to determine an odd parity binary mapping vector in a shell by means of the optimization criterion and based on the odd property rules and, for instance, other general mapping properties .
- performing the second search may include setting values of the bits into the binary mapping vector base ⁇ on at least one second value ⁇ e (i,h t ) of the metric representative of the second case in order to determine an even parity binary mapping vector in a shell by means of the optimization criterion and based on the even property rules and, for instance, other general mapping properties.
- each of the setting values of the bits of the binary mapping vector for the first search and for the second search may be performed by one out of the second, third or fourth exemplary embodiments mentioned above.
- the determined binary mapping vector for a selected shell may be chosen from the determined binary mapping vectors of the first and second searches providing the better metric representative .
- Fig. 3 depicts a schematic flowchart of a sixth exemplary embodiment of a method according to the present invention, which may be used for applying the search in at least one shell of the at least one selected shell.
- this method may be used for determining a mapping representative for each shell of the first exemplary method indicated by reference sign 140 in Fig. Ia.
- a scored metric distance representative is initialized by setting it to value (s) indicating a very suboptimal representative.
- Each of these values is configured to represent a metric distance representative associated with the selected shell, wherein the method is configured to store the metric distance representative of the mapping representative providing the best metric distance representative by means of updating the value in case a better metric distance representative is obtained for a new mapping representative in the same shell.
- one shell of the at least one shell is selected, as indicated by reference sign 310 and the method comprises determining a mapping representative for zhe selected shell based on the mapping properties and the optimization criterion (indicated by reference sign 320) . For instance, each of the exemplary methods described above may be used for this determining.
- mapping representative is determined which maps the selected codeword of the second code to the codeword of the first code representing the nearest neighbor with respect to the vector in the selected shell.
- the method stores the new metric distance representative and assigns the stored representative with the determined mapping representative and the actual codeword of the second code (as indicated by reference sign 340), or, alternatively, with the codeword of the first code.
- it is checked whether there is another shell left for performing a search in this shell (indicated by reference sign 350) , and if there is another shell, then it is proceeded with selecting this shell and the loop in Fig. 3 starts again for the selected shell.
- each of the selected at least one shell of the first code can be searched.
- the method may then proceed with selecting the mapping representative and the corresponding codeword of the second code - implying selecting the final codeword of the first code - optimizing the optimization criterion based on the stored metric distance representatives for each shell.
- a constant value depending on the shell may be added to or subtracted from the metric distance representatives of each shell.
- the value representing a value proportional to the Hamming weight of the shell of the determined codeword ⁇ of the first code may be subtracted from the metric distance
- the final codeword can be selected.
- the full matrix G 24 can be obtained by appending a parity bit to each row of the matrix G 94 and we write simply G , omitting the subscript of the codebook G and of the matrix when it is not relevant, or when it is clear from the vector length L .
- the set of nontrivial Hamming weights of the codevectors is for G 24 and for the trivial Hamming weights being those corresponding to all-zero and all-one codevectors.
- Fig. 4a depicts a first exemplary embodiment of a system of the present invention, wherein a transmitter 410 or a component 410 of a transmitter embeds a binary message mi, ...,mi 2 (with 12 informational bits) into a redundant L -bit long binary message which is provided for transmission over a channel 420 where some bits may be corrupted.
- a receiver 430 or a component 430 of a receiver receives a message which due to the channel errors will be different from the transmitted s . If only few bits of s were affected by errors, one can look for the s'eG that is the closest to the received r and then the 12 informational bits can be extracted from s_' . For some channels, for each transmitted bit S 1 the receiver may not take immediately trivial hard decisions but instead it can evaluate the probability and P Then for each transmitted bit S 1
- Golay codevector the probability may be used for a better decision, given by the maximum likelihood (ML) decoding
- the ML decoding can thus may achieved by solving the following problem:
- Problem 1 For given numbers find for each d * e D the solution of In words, Problem 1 asks for the maximum dot product between the vectors and when the vectors belong to the shell of weight
- Fig. 4b depicts a second exemplary embodiment of a system of the present invention, wherein a vector quantization (VQ) unit 450 is fed with a real valued input vector v of dimension L (indicated by reference sign 451) , which is to be replaced with its best approximation in a codebook G in the Euclidian distance sense, by the vector g minimizing the distance
- VQ vector quantization
- each of the criterions defined in equations (2), (3) and (5) may be used as optimization criterion based on determining a metric distance representative between the vector and a codeword of the Golay code. For instance, in case
- criterion (5) may represent the metric distance representative between the vector and a codeword of the Golay code, wherein may represent a constant value for the different shells of the Golay code.
- the second code represents the hexacode
- the hexacode codebook H contains 64 codewords each formed of 6 symbols from the alphabet of the Galois field GF (4) .
- the generator matrix is
- Table 1 The hexacode leaders.
- Table 2 shows an interpretation function e.g. known from A. Vardy and Y. Be'ery “More efficient soft decoding of the Golay codes", IEEE Transactions on Information Theory, vol. 37, no. 3, pp. 667-672, 1991.
- the vector b represents a mapping representative of the set of mapping representatives
- the nexacode H represents the second code
- a codeword of the set of codewords G 24 of the first code is associated with a hexacode codeword, representing a codeword of the second code, and a vector b, representing a mapping representative.
- a property of the hexacode codewords is that from each codeword one can construct 64 codewords of lengrh 24, resulting in a total of 4096 codewords, which can be shown to form a Goiay codebook.
- each hexacode codeword, representing a codeword of the second code can be associated with the corresponding 64 codewords of the Golay code, wherein these 64 codewords represent the set of codewords being associated with the corresponding codeword of the second code .
- This codeword may be presented for example in a 4 by 6 matrix form, or the matrix may be vectorized column wise into a 24-long vector.
- mapping properties defining rules for the mapping representatives in order to map a codeword of the second code on a codeword of the first code. It has to be understood, that the following properties represent exemplary properties for the mapping representatives with respect to the exemplary Golay code and hexacode, but any other well-suited mapping properties may also be used depending on the applied first code and the applied second code.
- Gl The parity of the vector b is the same as the parity of each column and of the first row of (the matrix form of ) G2: For any g (that is, is an odd number) if or
- these property rules 01, 02 and 03 represent odd parity rules of the mapping properties, the odd parity rules comprising rules for setting values of the bits in vector b in order to fulfill the odd parity of b depending on the shell of the codeword.
- the odd parity rules do not depend on the codeword of the second code.
- these property rules El, E2 , E3 and E4 represent even parity rules of the mapping properties, the even parity rules comprising rules for setting values of the bits in vector b in order to fulfill the even parity of b depending on the shell d H (g) of the codeword.
- the even parity rules further depend on the codeword of the second code.
- mapping properties comprise general property rules, even parity rules, and odd parity rules .
- the first case relates to odd parity vectors b
- the second case relates to even party vectors b
- the second value represents the metric value depending on the corresponding subelement
- the second value represents the metric value
- the criterion for all 64 binary vectors be ⁇ 0,l ⁇ 6 should be taken into account.
- mapping properties tell directly the value of and vector is not needed. Instead, we can for example take the zero vector as mapping representative and then switch a required number of binary values, which is equal to the from zero to one.
- the elements to be changed are chosen in such a way that the sum of optimizing criterion (10) is maximized.
- determining the mapping representative b * of odd parity vectors for the selected shell comprises: placing the ones "o the locations ⁇ ,...,i k in vector b * (e.g., as indicated by reference sign 242 in Fig. 2b) such that
- this optimization method may be performed by rhe third exemplary method depicted in Fig. 2b.
- the second criterion may be summarized by starting with a binary mapping vector comprising a zero at i-th position in case (ih) is negative and otherwise comprising a one at i-th position, as this maximizes the criterion (10) at the beginning of search.
- k binary values in locations of the starting binary mapping vector are changed in order to obtain the mapping representative of even parity vectors for the selected shell, wherein k is the minimum number which will satisfy the general property (G2) and the even parity rules (E1-E3) (enforcing Additionally, from all possible such choices of elements to be changed, choosing the one having the minimum sum so that degradation of metric representative (10) is minimized compared to the metric of the starting binary mapping vector.
- this optimization method may be performed by the third exemplary method depicted in Fig. 2b.
- the third exemplary method depicted in Fig. 2b may be applied.
- the algorithm is configured to find the optimal values of (10) for each of the shells of weights
- the initialization requires the computation of the 4x6 matrices and from (9) and (10) and storing the signs of their elements in the matrixes and .
- the values J can be evaluated efficiently by adding or subtracting the values from the sum J 1 and its complement as described below.
- the steps 2.2 and 2.3 may involve sorting, for example by employing the insertion sort, which may be well-suited for sorting a vector having a small number - five in this exemplary embodiment - number of elements.
- the insertion sort which may be well-suited for sorting a vector having a small number - five in this exemplary embodiment - number of elements.
- separating the positive and negative values of the vector, if there are both, before the sorting may decrease the number of comparison operations during the insertion sort.
- the value of J can be evaluated efficiently by counting first the value J and then adding the values to it, as described in the algorithm above.
- a similar idea can be used also in the even case: First evaluate the J value corresponding to the vector of signs, Then just compare the vectors to the vector of signs and compute the values corresponding to the various shells by adding the values
- the further exemplary method presented above searches 6 optimal values of criterion (10) . Each of these values corresponds to a shell of some weight
- This another exemplary method presents another embodiment for searching.
- This exemplary method may be suited to the case when one does not need all the 6 different values, but needs a value corresponding to a certain weight d .
- the initialization step may require the computation of the 4x6 matrices ⁇ o and ⁇ e from (9) and (10), and storing the signs of the elements of ⁇ e in the matrix .
- We also initialize the current maxima variable Denote h the hexacodeword and b the binary vector corresponding to the current maximum.
- the output of this algorithm of this exemplary method is which is the optimal value of (10) for one of the shells, and also the vectors and corresponding to this optimal value .
- Fig. 5 is a schematic illustration of an embodiment of a readable medium 500 according to the fourth aspect of the present invention.
- the readable medium 500 is a computer-readable medium.
- a program 501 according to the fifth aspect of the present invention is stored thereon.
- the program 501 comprises program code 502.
- the instructions of the program code 502 cause a processor to search for a codeword of a set of codewords of a first code representing a near neighbor to a vector, wherein a second code is associated with a second set of codewords, wherein a codeword of the second set of codewords is associated with a subset of codewords of the first code, and wherein a codeword of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives; wherein the searching comprises for each codeword of the second set of codewords: performing the search in at least on shell of the first code, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight, by determining a mapping representative of the set of mapping representatives for each
- the logical blocks in the schematic block diagrams as well as the flowchart and algorithm steps presented in the above description may at least partially be implemented in electronic hardware and/or computer software, wherein it depends on the functionality of the logical block, flowchart step and algorithm step and on design constraints imposed on the respective devices and/or apparatuses to which degree a logical block, a flowchart step or algorithm step is implemented in hardware or software.
- the presented logical blocks, flowchart steps and algorithm steps may for instance be implemented in one or more digital signal processors, application specific integrated circuits, field programmable gate arrays or other programmable devices.
- Said computer software may be stored in a variety of storage media of electric, magnetic, electro-magnetic or optic type and may be read and executed by a processor, such as for instance a microprocessor.
- a processor such as for instance a microprocessor.
- said processor and said storage medium may be coupled to interchange information, or the storage medium may be included in the processor.
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Error Detection And Correction (AREA)
Abstract
It is disclosed to search for a codeword from a set of codewords of a first code representing a near neighbor to a vector, wherein a second code is associated with a second set of codewords, wherein a codeword of the second set of codewords is associated with a subset of codewords of the first code, and wherein a codeword of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives; wherein the search comprises for each codeword of the second set of codewords performing the search in at least on shell of the first code, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight, by determining a mapping representative of the set of mapping representatives for each shell of the at least one shell based on mapping properties and an optimization criterion.
Description
Neighbor Search in Codes
FIELD OF THE APPLICATION
The present patent application relates to neighbor search in codes .
BACKGROUND OF THE APPLICATION
The quantization is one of the main tools of lossy signal compression. The quantization process consists of finding, for a given input data, a close representative that would enable the storage or transmission of the data with reduced number of bits.
A quantization function can be written as f:D->C where D is the input space and C is the set of representatives, or the codebook. For a given input from D, a representative, or codeword, is selected from C, such that a given distortion measure between the input and the representative is minimized over the entire codebook. The process of finding the codeword minimizing the distortion measure is usually called the nearest neighbor search.
If the input space, as well as the codebook, is one-dimensional, the quantization is called scalar quantization; otherwise it is called vector quantization. The representatives are also called codevectors in the case of vector quantization.
The cardinality, Cc, of the codebook is smaller than that of the input space, allowing the representation of the input data
on fewer bits. The index, in the codebook, of the nearest neighbor codeword, could be represented on ceil (log2Cc) bits, where ceil(r) indicates the nearest integer larger than or equal to r. The quantization rate, if all the codewords were represented with the same number of bits, is R = ceil (log2Cc) /k bits per sample, where k is the codeword dimension.
Generally, the nearest neighbor search involves the evaluation of the distortion measure for each codeword, which, especially for the vector quantization case, may be very expensive from the computational point of view. Various fast nearest neighbor algorithms have been proposed, that reduce the number of distortion evaluations based on one or more conditions to stop the evaluations.
SUMMARY OF SOME EXAMPLE EMBODIMENTS QF THE INVENTION
According to a first aspect of the present invention, a method is described, comprising searching for a codeword of a set of codewords of a first code representing a near neighbor to a vector, wherein a second code is associated with a second set of codewords, wherein a codeword of the second set of codewords is associated with a subset of codewords of the first code, and wherein a codeword of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives; wherein the search comprises for each codeword of the second set of codewords: performing the search in at least one shell of the first code, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight, by determining a mapping representative of the set of mapping representatives for each shell of the
at least one shell based on mapping properties and an optimization criterion, the mapping properties defining rules for the mapping representatives of the set of mapping representatives with respect to a shell of the at least one shell, and wherein the optimization criterion is based on determining a metric distance representative between the vector and a codeword of the first code depending on a selected codeword of the second code and a selected mapping representative, and, after the search is performed for each codeword of the second set of codewords, selecting the mapping representative and the corresponding codeword of the second code optimizing the optimizing criterion.
According to a second aspect of the present invention, a first apparatus is described, comprising a processor configured to search for a codeword of a set of codewords of a first code representing a near neighbor to a vector, wherein a second code is associated with a second set of codewords, wherein a codeword of the second set of codewords is associated with a subset of codewords of the first code, and wherein a codeword of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives, wherein the search comprises for each codeword of the second set of codewords: performing the search in at least one shell of the first code, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight, by determining a mapping representative of the set of mapping representatives for each shell of the at least one shell based on mapping properties and an optimization criterion, the mapping properties defining rules for the mapping representatives of the set of mapping representatives with respect to a shell
of the at least one shell, and wherein the optimization criterion is based on determining a metric distance representative between the vector and a codeword of the first code depending on a selected codeword of the second code and a selected mapping representative, and, after the search is performed for each codeword of the second set of codewords, selecting the mapping representative and the corresponding codeword of the second code optimizing the optimizing criterion.
According to a third aspect of the present invention, a second apparatus is described, comprising means for searching for a codeword of a set of codewords of a first code representing a near neighbor to a vector, wherein a second code is associated with a second set of codewords, wherein a codeword of the second set of codewords is associated with a subset of codewords of the first code, and wherein a codeword of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives; wherein the search comprises for each codeword of the second set of codewords: performing the search in at least one shell of the first code, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight, by determining a mapping representative of the set of mapping representatives for each shell of the at least one shell based on mapping properties and an optimization criterion, the mapping properties defining rules for the mapping representatives of the set of mapping representatives with respect to a shell of the at least one shell, and wherein the optimization criterion is based on determining a metric distance representative between the vector and a codeword of the first
code depending on a selected codeword of the second code and a selected mapping representative, and, after the search is performed for each codeword of the second set of codewords, selecting the mapping representative and the corresponding codeword of the second code optimizing the optimizing criterion.
The first apparatus as well as the second apparatus can be a module that forms part of or is to form part of another apparatus (such as for instance an audio encoder or decoder) , for instance a processor, or it can be a separate apparatus.
According to a fourth aspect of the present invention, a computer-readable storage medium encoded with instructions is described, that, when executed by a computer, perform the method according to the first aspect of the present invention.
The readable storage medium may for instance be a computer-readable or processor-readable medium, and may either be a removable storage medium or a storage medium that is fixedly installed in an apparatus or device.
According to a fifth aspect of the present invention, a computer program is described which causes a processor to search for a codeword of a set of codewords of a first code representing a near neighbor to a vector, wherein a second code is associated with a second set of codewords, wherein a codeword of the second set of codewords is associated with a subset of codewords of the first code, and wherein a codeword of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives; wherein the search
comprises for each codeword of the second set of codewords: performing the search in at leasr one shell of the first code, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight, by determining a mapping representative of the set of mapping representatives for each shell of the at least one shell based on mapping properties and an optimization criterion, the mapping properties defining rules for the mapping representatives of the set of mapping representatives with respect to a shell of the at least one shell, and wherein the optimization criterion is based on determining a metric distance representative between the vector and a codeword of the first code depending on a selected codeword of the second code and a selected mapping representative, and, after the search is performed for each codeword of the second set of codewords, selecting the mapping representative and the corresponding codeword of the second code optimizing the optimizing criterion.
The invention comprises searching for a codeword of a set of codewords of a first code representing a near neighbor to a vector.
For instance, this vector may represent a vector comprising values which have to be replaced by an approximation in a codeword of a set of codewords of the code, wherein the set of codewords may be considered as a codebook of the code . E.g., this replacement may be used for vector quantization of the real valued vector. Thus, the apparatus may for instance represent an audio encoder or a component of an audio encoder configured to perform a vector quantization of the vector.
Furthermore, for instance, the vector may represent a received vector at a receiving apparatus or at a component of a receiving apparatus, which due to channel errors might be different of a transmitted vector, wherein the transmit vector is encoded with the code. Thus, the apparatus may for instance represent a decoder or a component of a decoder configured to find a neighbor to a received transmitted vector in the code .
It has to be understood that the term vector is not limiting, any representation comprising information which can be mapped to a codeword of the set of codewords of the first code may be understood as vector.
For instance, the first code may represent a block code, e.g. a BCH-Code, a Reed-Solomon Code, a Golay Code or any other well-suited code. E.g., the code may represent a binary code, and the binary code may represent a cyclic binary code.
The first code can be associated with different shells, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight. The Hamming weight may be defined as the number of non-zero entries in a vector. For instance, the Hamming weight may be defined by the number of ones in a binary codeword comprising elements with values one and zero.
Furthermore, for performing the search of a codeword of the first code representing a near neighbor to the vector, a second code is applied. The second code is associated with a second set of codewords, wherein this second set may be considered as a second codebook associated with the second
code. The number of codewords in the second codebook may be smaller than the number of codewords in the codebook of the first code.
A codeword of the second set of codewords is associated with a subset of codewords of the first code, and a codeword of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives. Thus, a kind of transfer function/transfer rule may exist configured to transform a codeword of the first code into a corresponding pair of codeword of the second code and mapping representative, and vice versa, for transforming a pair of second code codeword and mapping representative to the corresponding codeword of the first code. Furthermore, a codeword of the second code may be used to construct any of the codewords of the associated subset of codewords of the first code, and the mapping representative may be used to map zhe codeword of the second code to one codeword of this subset of codewords of the first code. For instance, the transfer function may be implemented in a kind of look-up table, or it may be a generic function/algorithm or a combination of both.
The mapping representatives are associated with mapping properties defining rules for the mapping representatives with respect to a shell of the at least one shell. Thus, if a codeword of the second code is intended to be mapped on codewords of the first code on the same shell, the mapping representatives have to fulfill the mapping properties with respect to this shell. Some of the rules of these mapping properties may further depend on the codeword of the second code .
Furthermore, the mapping properties may comprise further rules, e.g. general mapping properties or other special mapping properties. For instance, the mapping representatives may be realized by means of binary vectors, wherein special bit patterns in the binary vectors are associated with predetermined mappings, but any other representation may also be applied.
For the search to be performed, at least one shell of the code is selected. Thus, this at least one selected shell may represent a set of shells.
Then a codeword of the second set of codewords may be selected for performing the search in the selected shell of the first code. As mentioned above, the selected codeword of the second code is associated with a corresponding subset of codewords of the first code. The second codebook of the second code may be stored in a kind of look-up table, or the codewords of the second codebook may be constructed by means of a generic function/algorithm. For instance, codeword leaders may be stored in a table and they may be used to construct the second codebook by specific permutation and scaling operation (s) .
For this selected codeword of the second code, a mapping representative is determined for each shell of the selected at least one shell based on the mapping properties and an optimization criterion. The optimization criterion is based on determining a metric distance representative between the vector and a codeword of the first code depending on a selected codeword of the second code and a selected mapping representative. Thus, for each of the at least one shell,
determining the mapping representative may comprise switching between different mapping representatives of the set of mapping representatives in order to maximize the optimization criterion under consideration of the mapping properties of the respective shell. This switching between different mapping representatives may be performed based on special rules.
The metric distance representative may represent any well-suited metric for determining a value being associated with the distance between the vector and the selected codeword of the first code. For instance, this metric distance representative may represent a value being associated with the Euclidian distance between the vector and the selected codeword of the first code, or the metric distance representative may represent a value being associated with a maximum likelikood or maximum a-priori decoding of the vector with respect to the codeword. Of course, any other well-suited metric may also be used for the metric distance representative.
Thus, for each of the selected shells the mapping representative providing a good metric distance representative is determined, e.g. the best metric distance may be the aim for the determining of the mapping representative in each of the selected shells.
For instance, after a mapping representative is determined, the determined metric distance representative may be compared to the metric distance of a previous determined favorite pair of codeword of the second code and mapping representative, and in case the determined metric distance representative is
better that the metric distance of the previous determined favorite pair, the determined mapping representative and the corresponding codeword of the second code and the respective metric distance representative are stored as favorite pair.
Depending on the optimization criterion, a favorite pair may be determined for each of the selected shells. For instance, this maybe applied in case the optimization criterion depends on the metric distance representative and an additional value, wherein the additional value depends on the shell of the codeword and represents for example a constant value for each shell, and wherein the metric distance representative is calculated in a same way for each of the shells. Then, after a favorite pair has been determined for each of the selected shells, the best pair of this set of favorite pairs may be selected in order to optimize the optimization criterion across selected shells.
Then, when the search based on the selected codeword of the second code is finished, it is determined whether there exists a next codeword in the second set of codewords. If there is a next codeword in the second set of codewords, this codeword is selected and the method proceeds with determining a mapping representative for each shell of the selected shells in order to search for the mapping representatives providing the best metric distance in this at least one shell for the actual codeword of the second code.
Accordingly, this search is performed for each codeword of the second code.
Afterwards, when the search is performed for each codeword of the second code, the mapping representative and the corresponding codeword of the second code optimizing the optimizing criterion is selected out of the determined mapping representatives and corresponding codewords of the second code. For instance, this may be achieved by storing and updating the favorite pair of second code codeword and mapping representative corresponding to the codeword of the first code providing the best metric distance representative, as exemplary mentioned above. Furthermore, this updating of the favorite pair may be performed for each of the shells separately, or it may be performed for the complete set of shells, which may depend on the optimization criterion, as mentioned above.
This selected mapping representative and the corresponding codeword of the second code may now be associated with the codeword of the first code representing a near neighbor to the vector.
This method shows the advantage, that the search for the neighbor codeword is performed based on the second code and the mapping representative, thus, the search is partitioned into a search in the different subsets of codewords of the first code, wherein each of these subsets is associated with one codeword of the second codebook. When performing the search in one of these subsets of codewords of the first code, the mapping properties and the optimization criterion may be used to perform a search in at least one shell of the codewords of the selected subset of codewords. Due to this partitioning of the search with respect for each of the at least one
selected shell, the computational complexity can be decreased compared to a complete search in the full codebook.
According to an exemplary embodiment, a codeword of the second code is associated with N components and each mapping representative of the set of mapping representatives is associated with a binary mapping vectors comprising M bits, and the metric distance representative of the optimization criterion depends on N submetrics, each of the N submetrics depending on a component of the N components and on the binary mapping vector, wherein said determining a mapping representative comprises: selecting a shell of the at least one shell, and setting values of the bits of a binary mapping vector in accordance with the mapping properties for the selected shell taking into account optimizing the metric distance representative based on the influence of the bits with respect to the N submetrics.
Thus, a binary mapping vector may be considered as a mapping representative, wherein a binary mapping vector and a codeword of the second code are associated with a codeword of the first code.
A submetric of the N submetrics depends on a component of the N components which are associated with a codeword of the second code, and, further, the submetric may depend on at least one bit of the respective binary mapping vector.
Thus, the metric distance representative between the vector and a codeword of the first code may be determined based on determining the N submetrics, wherein these submetrics may
be determined based on the N components of the codeword of the second code and the M bits of the binary mapping vector.
For instance, the values of the bits of the binary mapping vector may be set so that the metric distance representative is maximized (or minimized, which may depend on the optimization criterion) by simultaneously fulfilling the mapping properties for the selected shell.
Further, as an example, in case the mapping properties comprise rules for setting ones in the binary mapping vector, the best locations for setting bits having the value one in the binary mapping vector fulfilling these mapping properties by simultaneously optimizing the optimization criterion may be determined, and then the ones are placed at the determined locations in the binary mapping vector, whereas the other locations in the binary mapping vector are filled with zeros. For instance, the locations may be chosen such that the influence of the selected values of the bits at these locations - the bits having the value one - and the corresponding components of the N submetrics maximize (or minimize) the metric distance representative. Of course, the mapping properties may comprise rules for setting zeros in the binary mapping vector, so that setting the values of the bits in the binary mapping vector may be performed in a similar way as described above.
According to an exemplary embodiment, M=N holds and each of the N submetrics depends on one bit of a bit position in the binary mapping vector.
Thus, the number of bits in the binary mapping representative is the same as the number of components associated with a codeword of the second code, and there may exist a special decomposition of the submetrics such that each submetric depends on exactly one bit of a bit position in the binary mapping vector. Accordingly, for instance, changing one bit of the N bits in a binary mapping vector affects exactly one submetric of the N submetric.
According to an exemplary embodiment, each submetric is calculated by multiplying a first value and a second value, the first value representing an algebraic sign depending on the bit of the corresponding bit position in the binary mapping vector, and the second value representing a metric value depending on the corresponding component and the vector, the method comprising determining the N second values for the actual codeword of the second code, wherein said setting values of the bits of the binary mapping vector comprises: setting values of the bits of the binary mapping vector based on the mapping properties for the selected shell and, if the mapping properties allow, based on at least one second value of the metric representative, in order to optimize the metric distance representative.
For instance, bit
may represent the value of the bit at i-th position in the binary mapping vector, so that the first value represents the algebraic sign depending
on the bit at the corresponding i-th bit position in the binary mapping vector. Further, for instance, in case
holds, the first value is represented by the value of the bit
at the corresponding i-th position in the binary mapping vector .
Furthermore, for instance, the metric value may be denoted as and it may depend on the corresponding component
of the codeword h of the second code and the associated
position i in the binary mapping vector. Further, the metric value depends on the vector for which the neighbor search is to be performed, so that, for instance, the metric value may be considered as a representative indicating an influence of the corresponding component H1 with respect to the metric distance representative for a given vector.
For instance, in case the metric values are independent from the values of bt and under the assumption that the metric distance representative is to be maximized, setting the values of the bits bt of the binary mapping vector may comprise setting the value of at least one bit
of the binary vector such that the corresponding first value
has the same algebraic sign as the corresponding second value
This ensures that the product of the corresponding first value and second value at position i is positive, and, thus, the corresponding submetric being associated with position i is maximized. Depending on the mapping properties, this setting the value of at least one bit of the binary vector is
performed for so many bits as possible.
Of course, in case the metric distance representative is to be minimized, the value of at least one bit of the binary
vector is ser such that the corresponding first value βt has the opposite algebraic sign as the corresponding second value
For instance, the metric values may be calculated first, and then at least one metric value is selected from the set of N metric values, wherein the at least one selected metric value has higher influence on the metric distance representative compared to the influence of the remaining metric values, and the bits b{ of the binary mapping vector being associated with the at least one selected metric value are set as mentioned above in order to maximize (or minimize) the respective submetric. Furthermore, for instance, in case the mapping properties exactly specify the value of at least one bit in the binary mapping vector, the at least one metric value is not selected from the complete set of N metric values but from the subset of metric values which are not associated with the at least one predefined bit in the binary mapping vector. Thus, the at least one selected metric value has higher influence on the metric distance representative compared to the influence of the remaining metric values of the subset of submetrics.
According to an exemplary embodiment, the mapping properties comprise a set of odd parity rules and a set of even parity rules, the odd parity rules comprising rules for setting values of the bits in the binary mapping vector in order to perform mapping on a codeword of the first code according to a shell and in order to ensure odd parity of the binary mapping vector, and the even parity rules comprising rules for setting values of the bits in the binary mapping vector in order to
perform mapping on a codeword in the first code according to a shell and in order to ensure even parity of the binary mapping vector.
Thus, for instance, the search in one shell may be partitioned into a first search covering odd parity binary mapping vectors and into a second search covering even parity binary mapping vectors based on the special odd parity rules and even parity rules, respectively.
According to an exemplary embodiment, the metric distance representative can be determined by means of a case differentiation, the first case relating to odd parity binary mapping vectors and the second case relating to even parity binary mapping vectors, wherein each submetric is calculated by multiplying a first value and a second value, the first value representing an algebraic sign depending on the bit of the corresponding bit position in the binary mapping vector, and wherein in the first case the second value represents a metric value depending on the corresponding component and the vector under the assumption of an odd parity binary mapping vector, and wherein in the second case the second value represents a metric value depending on the corresponding component and the vector under the assumption of an even parity binary mapping vector, the method comprising determining the N second values for the actual codeword of the second code for the first and second case, respectively, wherein said setting values of the bits of the binary mapping vector comprises: - for the first case: setting values of the bits of the binary mapping vector based on the mapping properties for the selected shell and, if the mapping properties allow, based
on at least one second value of the metric representative relating to the first case, in order to optimize the metric distance representative; and for the second case: setting values of the bits of the binary mapping vector based on the mapping properties for the selected shell and, if the mapping properties allow, based on at least one second value of the metric representative relating to the second case, in order to optimize the metric distance representative.
For instance, the setting of values of at least one of the first and second case may be performed as mentioned above with respect to the penultimate exemplary embodiment and under consideration of the respective odd or even mapping properties.
According to an exemplary embodiment, the method comprises calculating a first set of second values related wirh the first case, the first set of second values comprising all second values for each of the N positions for each component under the assumption of an even parity binary mapping vector; and calculating a second set of second values related with the second case, the second set of second values comprising all second values for each of the N positions for each component under the assumption of an odd parity binary mapping vector, wherein the calculating of the first and second set of second values is performed prior to the searching.
For instance, the first set of second values may be used to select at least one metric value from this set of N metric values, wherein the at least one selected metric value has higher influence on the metric distance representative
compared to the influence of the remaining metric values, and the bits of the binary mapping vector being associated with the at least one selected metric value are set as mentioned above in order to maximize (or minimize) the respective submetric. Furthermore, for instance, in case the mapping properties exactly specify the value of at least one bit in the binary mapping vector, the at least one metric value is not selected from the complete set of N metric values but from the subset of metric values which are not associated with the at least one predefined bit in the binary mapping vector. Thus, the at least one selected metric value has higher influence on the metric distance representative compared to the influence of the remaining metric values of the subset of submetrics .
For instance, the same may be applied for performing the search in the second case.
According to an exemplary embodiment, setting values of the bits of the binary mapping vector in one of the first and second cases comprises, under the assumption that
represents the i-th second value of the selected case based on the i-th component of the codeword of the second code
and that i denotes the bit position in the binary mapping vector: determining the number of bits in the binary mapping vector to be set to value one based on the mapping properties in order to ensure that the binary mapping vector maps onto the selected shell, the number of ones denoted as k; - placing the ones to the locations
in the binary mapping vector such that the sum will be as
large as possible and the relevant mapping properties will be satisfied.
Of course, the relevant mapping properties have to be satisfied in order to perform mapping on a codeword of the first code in the selected shell. For instance, depending on the relevant mapping properties, it may occur that the locations iv...,ik may not be chosen completely freely.
Accordingly, the sum of the N submetrics may be
maximized, because the selected second values are associated with first values having a
positive algebraic sign. The other locations being different from i],...,ik are filled with zeros. For instance, before placing the ones, each element of the binary vector may be set to zero.
Of course, the method might be modified slightly and is not restricted to placing ones to the locations in order to fulfill the requirements, but the method may be performed vice versa, by determining the number of bits to be set to value zero depending on the selected shell, and then by placing the zeros to the locations iv...,ik - while the other location are filled with ones - in order to minimize the sum under consideration of the mapping
properties .
Furthermore, in case the metric distance representative is to be minimized, the ones may be placed to the locations iv...,ik in the binary mapping vector in such a way thar the sum
will be as small as possible and the relevant
mapping properties will be satisfied
According to an exemplary embodiment, setting values of the bits of a binary mapping vector in one of the first and second cases comprises, under the assumption that represents
the i-th second value of the selected case based on the i-th component h. of the codeword of the second code and that i denotes the bit position in the binary mapping vector: - determining a starting binary mapping vector providing a good starting solution with respect to the metric distance representative of the optimization criterion, changing the values of k elements in locations
of the starring binary mapping vector in order to determine the binary mapping vector, wherein k is the minimum number which will satisfy the relevant mapping properties, wherein this changing comprises choosing from all possible such choices providing the minimum sum
Thus, the final binary mapping vector may be enforced to fulfill the mapping properties of a desired shell and by satisfying other mapping properties, thereby taking into account to degrade the starting metric representative only slightly. For instance, in case the metric distance representative is to be maximized, the starting binary mapping vector may be obtained by setting the value of at least one bit bt of the binary vector such that the corresponding first value βt has the same algebraic sign as the corresponding second value ■ Vice versa, for instance, in case the metric distance
representative is to be minimized, the starting binary mapping vector may be obtained by setting the value of at least one bit of the binary vector such that the corresponding first value
has the opposite algebraic sign as the corresponding second value
For instance, in case an element of the binary mapping
vector is out of the set changing the value of an
element of the starting binary mapping vector may be performed by changing a value to value b or vice
versa .
According to an exemplary embodiment, determining a starting binary mapping vector comprises placing a zero at i-th position of the starting binary mapping vector in case
is negative, otherwise placing a one at i-th position.
According to an exemplary embodiment, wherein the first code represents a Golay code, the second code represents a hexacode, and the mapping representatives represent binary mapping vectors .
These and other aspects of the invention will be apparent from and elucidated with reference to the exemplary embodiments described hereinafter.
BRIEF DESCRIPTION OF THE FIGURES
For a more complete understanding of example embodiments of the present invention, reference is now made to the following
descriptions taken in connection with the accompanying figures in which:
Fig. Ia depicts a schematic illustration of a first exemplary embodiment of a method according to the present invention;
Fig. Ib depicts a schematic illustration of a first exemplary embodiment of an apparatus according to the present invention;
Fig. Ic depicts a schematic illustration of a second exemplary embodiment of an apparatus according to the present invention;
Fig. 2a depicts a schematic illustration of a second exemplary embodiment of a method according to the present invention;
Fig. 2b depicts a schematic illustration of a third exemplary embodiment of a method according to the present invention;
Fig. 2c depicts a schematic illustration of a fourth exemplary embodiment of a method according to the present invention;
Fig. 2d depicts a schematic illustration of a fifth exemplary embodiment of a method according to the present invention;
Fig. 3 depicts a schematic illustration of a sixth exemplary embodiment of a method according to the present invention;
Fig. 4a depicts a schematic illustration of an exemplary embodiment of a system according to the present invention;
Fig. 4b depicts a schematic illustration of a third exemplary embodiment of an apparatus according to the present invention;
Fig. 5 depicts a schematic illustration of an exemplary embodiment of a readable medium according to the present invention;
Figs. 6a and 6b depict a schematic table comprising counting the Hamming weights of all possible Golay codewords obtained by the mapping of each hexacode word.
DETAILED DESCRIPTION OF SOME EXAMPLE EMBODIMENTS OF THE INVENTION
In the following detailed description, some exemplary embodiments will be described.
Fig. Ia depicts a schematic flowchart of a first exemplary embodiment of a method according to the present invention.
The method comprises searching for a codeword of a set of codewords of a first code representing a near neighbor to a vector.
For instance, this vector may represent a real valued vector which has to be replaced by an approximation in a codeword of a set of codewords of the first code, wherein the set of codewords may be considered as a codebook of the code. E.g., this replacing may be used for vector quantization of the real valued vector. Fig. Ib depicts a schematic illustration of
a first exemplary embodiment of an apparatus 170 according to the present invention, wherein the apparatus 170 represents an audio encoder or a component of an audio encoder configured to perform vector quantization as part of the encoding process by replacing an input vector received at input 171 or a data vector derived based on the input data received at input 171 with a neighbor codeword of the code, wherein the determined codeword may be outputted at output 172 of the audio encoder 170.
Furthermore, for instance, the vector may represent a received vector at a receiving apparatus or at a component of a receiving apparatus, which due to channel errors might be different of a transmitted vector, wherein the transmitted vector is encoded with the code. Fig. Ic depicts a schematic illustration of a second exemplary embodiment of an apparatus 180 according to the present invention, wherein the apparatus 180 represents a decoder 180 configured to search for the nearest vector of code with respect to a distorted input vector which is received at input 181.
The vector is input or read to be processed by the method, as indicated by reference 110 in Fig. Ia.
It has to be understood that the term vector is not limiting, any representation comprising information which can be mapped to a codeword of the set of codewords of the code may be understood as vector.
For instance, the code may represent a block code, e.g. a BCH-Code, a Reed-Solomon Code, a Golay Code or any other well-suited code.
The code can be associated with different shells, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight.
Furthermore, for performing the search of a codeword representing a near neighbor to the vector, a second code is applied. The second code is associated with a second set of codewords, wherein this second set of codewords may be considered as a second codebook associated with the second code. The number of codewords in the second codebook may be smaller than the number of codewords in the codebook of the first code.
A codeword of the second set of codewords is associated with a subset of codewords of the first code, and a codeword of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives. Thus, a kind of transfer function/transfer rule may exist configured to transform a codeword of the first code into a corresponding pair of second code codeword and mapping representative, and vice versa, for transforming a pair of codeword of the second code and mapping representative to the corresponding codeword of the first code. Thus, a codeword of the second code may be used to construct any of the codewords of the associated subset of codewords of the first code, and the mapping representative is used to map the codeword of the second code on one codeword of this subset of codewords of the first code. For instance, the transfer function may be implemented in a kind of look-up table, or it may be a generic function/algorithm or a combination of both.
The mapping representatives are associated with mapping properties defining rules for the mapping representatives with respect to a shell of the at least one shell of the first code. Thus, if a codeword of the second code is intended to be mapped to codewords of the first code on the same shell, the mapping representatives have to fulfill the mapping properties with respect to this shell. Some of the rules of these mapping properties may further depend on the codeword of the second code.
Furthermore, the mapping properties may comprise furrher rules, e.g. general mapping properties or other special mapping properties. For instance, the mapping representatives may be realized by means of binary vectors, wherein a special bit patterns in the binary vectors are associated with predetermined mappings, but any other representation may also be applied.
For the search to be performed, at least one shell of the first code is selected, as indicated by reference sign 120 in Fig. Ia. Thus, this at least one selected shell may represent a set of shells.
Then a codeword of the second set of codewords is selected, as indicated by reference sign 130. As mentioned above, the selected codeword of the second code is associated with a corresponding subset of codewords of the first code. The second codebook of the second code may be stored in a kind of look-up table, or the codewords of the second codebook may be constructed by means of a generic function/algorithm. For instance, codeword leaders may be stored in a table and may
be used to construct the second codebook by specific permutation and scaling operation.
For this selected codeword of the second code, a mapping representative is determined for each shell of the selected at least one shell based on the mapping properties and an optimization criterion, as indicated by reference sign 140 in Fig. Ia. The optimization criterion is based on determining a metric distance representative between the vector and a codeword of the first code depending on a selected codeword of the second code and a selected mapping representative. Thus, for each of the at least one shell of the first code, determining the mapping representative may comprise switching between different mapping representatives of the set of mapping representatives in order to maximize the optimization criterion under consideration of the mapping properties of the respective shell. This switching between different mapping representatives may be performed based on special rules.
The metric distance representative may represent any well-suited metric for determining a value being associated with the distance between the vector and the selected codeword of the first code, the selected codeword of the first code depending on the selected codeword of the second code and a mapping representative. For instance, this metric distance representative may represent a value being associated with the Euclidian distance between the vector and the selected codeword of the first code, or the metric distance representative may represent a value being associated with a maximum likelikood or maximum a-priori decoding of the vector with respect to the codeword of the first code. Of
course, any other well-suited metric may also be used for the metric distance representative.
Thus, for each of the selected at least one shell the mapping representative providing a good metric distance representative is determined, e.g. the best metric distance may be the aim for the determining of the mapping representative in each of the selected shells.
For instance, after a mapping representative is determined, the determined metric distance representative may be compared to the metric distance of a previous determined favorite pair of second code codeword and mapping representative, and in case the determined metric distance representative is better than the metric distance of the previous determined favorite pair, the determined mapping representative and the corresponding codeword of the second code and the respective metric distance representative are stored as favorite pair.
Depending on the optimization criterion, a favorite pair may be determined for each of the selected shells. For instance, this may applied in case the optimization criterion depends on the metric distance representative and an additional value, wherein the additional value depends on the shell of the codeword of the first code and represents for example a constant value for each shell, and wherein the metric distance representative is calculated in a same way for each of the shells. Then, after a favorite pair has been determined for each of the selected shells, the best pair of this set of favorite pairs may be selected in order to optimize the optimization criterion across selected shells, as exemplarily indicated by reference sign 160 in Fig. Ia.
Then, when the search based on the selected codeword of the second code is finished, it is determined whether there exists a next codeword in the second set of codewords, as indicated by reference sign 150. If there is a next codeword, this codeword is selected (as indicated by reference sign 130) and the method proceeds with determining a mapping representative for each shell of the selected at least one shell (as indicated by reference sign 130) in order to search for the mapping representatives providing the best metric distance in this at least one shell.
Accordingly, this search is performed for each codeword of the second code.
Afterwards, when the search is performed for each codeword of the second code, the mapping representative and the corresponding codeword of the second code optimizing the optimizing criterion are selected, as indicated by reference sign 160 in Fig. Ia. For instance, this may be achieved by storing and updating the favorite pair of second code codeword and mapping representative providing the best metric distance representative, as exemplary mentioned above. Furthermore, this updating of the favorite pair may be performed for each of the shells separately, or it may be performed for the complete set of shells, which may depend on the optimization criterion, as mentioned above.
This selected mapping representative and the corresponding codeword of the second code can now be associated with the codeword of the first code representing a near neighbor to the vector.
This method shows the advantage, that the search for the neighbor codeword of the first code is performed based on the second code and the mapping representative, thus, the search is partitioned into a search in the different subsets of codewords of the first code, wherein each of these subsets is associated with one codeword of the second codebook. When performing the search in one of these subsets of codewords of the first code, the mapping properties and the optimization criterion may be used to perform a search in at least one shell of the codewords of the selected subset of codewords. Due to this partitioning of the search with respect to each of the at least one selected shell, the computational complexity can be decreased compared to a complete search in the full codebook.
Fig. 2a depicts a schematic flowchart of a second exemplary embodiment of a merhod according to the present invention, which may be used for determining a mapping representative for at least one of the selected shells as described above with respect to the first exemplary embodiment and as indicated by reference sign 140 in Fig. Ia.
For instance, the mapping representatives are realized by means of binary mapping vectors b having the length M, and, e.g., under the assumption that the vector
represents a codeword in the codebook of the first code and that
represents a codeword in the second codebook H
of the second code, the mapping between a pair
of codeword
and mapping representative b to a codeword g may be performed by means of a transfer function For instance, each
vector may comprise N components. Under this
assumption, a codeword h may be mapped on 2N codewords of the first code by means of the set of mapping representatives and the transfer function.
The metric distance representative may depend on N submetrics, wherein each of the N submetrics depends on a component of the N components of a codeword of the second code and on the binary mapping vector. For instance, the i-th submetric may depend on the i-th component of the codeword of the second code and the i-th bit in the binary mapping vector, but any other well-suited assignment may also be applied. For instance, each component may represent a symbol of an alphabet comprising at least two symbols.
For instance, the metric distance representative may represent the sum of the N submetrics, wherein increasing this sum may optimize the optimizing criterion. Furthermore, any other suited definition for the metric distance representative may be used, for instance decreasing the sum may optimize the optimizing criterion. Thus, with respect to the submetrics, a kind of rule depending on the submetrics in order to maximize the optimizing criterion may be defined.
Thus, when performing the search based on the selected codeword of the second code, the N submetrics depend on the bits of the binary mapping vector. Accordingly, in order to a find a binary mapping vector providing the best metric distance representative in a selected shell of the first code and for a selected codeword of the second code, the method comprises setting values of the bits of a binary mapping
vector in accordance with the mapping properties of the selected shell by simultaneously maximizing the optimizing criterion based on the influence of the bits with respect to the N submetrics, as indicated by reference sign 220 in Fig. 2.
Furthermore, there may exist a special mapping connection between codewords of a first shell and second shell. For instance, the first and second shell may represent complementary shells, in the sense that for each codeword in the first shell there exists a codeword in the second shell such that the zeros becomes ones and the ones become zeros
(e.g. to 10011 it corresponds 01100) . Thus, this special mapping connection between a first and a second shell may be used when performing determining the mapping representative for several shells by step 140 in Fig. Ia. For example, after setting values for the bits of a binary mapping vector for a selected first shell, as indicated by reference sign 220 in Fig. 2a, in order to determine a binary mapping vector for this first shell, this determined binary mapping vector may be mapped on its binary complement in order to construct a complement codeword in the second shell. Then, in this example, no further search has to be performed in the second shell of the first code, and only one of the first and second shells of the first code has to be selected in step 210.
Furthermore, as an example, M=N holds and each of the N submetrics may depend on one bit of a bit position in the binary mapping vector. Thus, the number of bits in the binary mapping representative may be the same as the number of components associated with a codeword of the second code, and there may exist a special decomposition of the submetrics such
that each submetric depends on exactly one bit of a bit position in the binary mapping vector. Accordingly, for instance, changing one bit of the N bits in a binary mapping vector affects exactly one submetric of the N submetric.
The explanations mentioned above with respect to the first and second exemplary embodiments also hold for the succeeding exemplary embodiments.
Fig. 2b depicts a schematic flowchart of a third exemplary embodiment of a method according to the present invention, which may be used for determining a mapping representative for each shell as described in the preceding exemplary embodiments .
It is assumed that each submetric may be calculated by multiplying a first value and a second value, rhe first value
representing an algebraic sign depending on the bit of the corresponding i-th bit position in the binary mapping vector, and the second value representing a metric value depending on the corresponding component
In this third exemplary embodiment, it may further be exemplary assumed that the mapping properties comprise rules in order to ensure that the mapping vectors map onto the selected shell, wherein these rules related to the selected shell do not limit choosing the locations of bits in the binary vector.
After the N second values for the actual codeword of the second code have been determined, the method comprises determining
the number of bits to be set to value one in the binary mapping vector based on the mapping properties in order to ensure that the binary mapping vectors maps onto a selected shell, as indicated by reference sign 241 in Fig. 2b, the number of ones being denoted as k.
Then, the ones are placed to the locations
v k in the binary mapping vector in such a way that the sum
will be as large as possible and the relevant mapping properties will be satisfied. Accordingly, the sum of the N submetrics β
is maximized. The other locations are filled with zeros . For instance, before placing the ones, each element of the binary vector may be set "co zero.
Of course, the method depicted in Fig. 2b might be modified slightly and is not restricted in placing ones to the locations in order to fulfill the requirements, but the method may be performed vice versa, by determining the number of bits to be set to value zero depending on the selected shell, and then by placing the zeros to the locations iv...,ik - while the other location are filled with ones - in order to minimize the sum under consideration of the mapping
properties .
For instance, this third exemplary embodiment of the method may be used for determining a mapping representative for each shell of the first code presented in the first exerrplary embodiment, as indicateσ by reference sign 120 in Fig. Ia, so that the third exemplary method for instance may be carried out for at least one of the selected at least one shell.
Furthermore, for instance, this third exemplary embodiment of the method may be applied for setting values of the bits of a binary mapping vector as described in the second exemplary embodiment (indicated by reference sign 220 in Fig. 2a) .
Fig. 2c depicts a schematic flowchart of a fourth exemplary embodiment of a method according to the present invention, which may be used for determining a mapping representative for the at least one selected shell as described in the preceding exemplary embodiments.
It is assumed that each submetric may be calculated by multiplying a first value ana a second value, the first value
representing an algebraic sign depending on the bit of the corresponding i-th bit position in the binary mapping vector, and the second value representing a metric value depending on the corresponding component
After the N second values for the actual codeword of the second code have been determined, the method comprises determining a starting binary mapping vector providing a good starting solution with respect to the metric distance representative of the optimization criterion, as indicated by reference sign 251 in Fig. 2c.
For instance, this may be performed by placing a zero at i-th position of the starting binary mapping vector in case
is negative, otherwise placing a one at i-th position. Accordingly, each submetric being associated with the starting binary mapping vector provides a positive value
resulting in a large starting metric representative, thereby maximizing the optimization criterion. Of course, any other well-suited starting binary mapping vector may be used, which may depend on the optimization criterion.
Then, the method comprises changing the binary values of k elements in locations Z1,...,4 of the starting binary mapping vector in order to determine the final binary mapping vector, wherein k is the minimum number which will satisfy the relevant mapping properties, wherein this changing comprises choosing from all possible such choices providing the
minimum sum
Thus, the final binary mapping vector may be enforced to fulfill the mapping properties of a desired shell and by satisfying other mapping properties, thereby taking into account to degrade the starting metric representative only slightly.
For instance, in case an element bt of the binary mapping vector is out of the set changing the value of element
bj of the starting binary mapping vector may be performed by changing a value to value or vice versa.
For instance, this fourth exemplary embodiment of the method may be used for determining a mapping representative for each shell presented in the first exemplary embodiment, as indicated by reference sign 120 in Fig. Ia, so that the fourth exemplary method for instance may be carried out for at least one of the selected shells.
Furthermore, for instance, this fourth exemplary embodiment of the method may be applied for setting values of the bits of the binary mapping vector as described in the second exemplary embodiment (indicated by reference sign 220 in Fig. 2a) .
Fig. 2d depicts a schematic flowchart of a fifth exemplary embodiment of a method according to the present invention, which may be used for determining a mapping representative for the at least one selected shell as described in the preceding exemplary embodiments .
For instance, the mapping properties may comprise a set of odd parity rules and a set of even parity rules, the odd parity rules comprising rules for setting values of the bits in the binary mapping vector in order to perform mapping on a codeword of the first code according to a shell and in order to ensure odd parity of the binary mapping vector, and the even parity rules comprising rules for setting values of the bits in the binary mapping vector in order to perform mapping on a codeword of the first code according to a shell and in order to ensure even parity of the binary mapping vector.
Then, the search in one shell may be partitioned into a first search covering odd parity binary mapping vectors and into a second search covering even parity binary mapping vectors.
Furthermore, for instance, the metric distance representative can be determined by means of a case differentiation, the first case relating to odd parity binary mapping vectors and the second case relating to even parity
binary mapping vectors, wherein each submetric is calculated by multiplying a first value and a second value, the first value representing an algebraic sign depending on the bit of the corresponding bit position in the binary mapping vector, e.g. similar as explained before.
For instance, in the first case the second value represents a metric value depending on the corresponding component and the vector under the assumption of an odd parity binary mapping vector, and in the second case the second value represents a metric value depending on the corresponding component and the vector under the assumption of an even parity binary mapping vector.
Then, at first the N second values may be determined for the actual codeword of the second code for the first and second case, respectively, and, for instance, the second values of the first case may be denoted as
and the second values of the second case may be denoted as
E.g. , as indicated by reference sign 261, performing the first search may include setting values of the bits of the binary mapping vector based on at least one second value of
the metric representative of the first case in order to determine an odd parity binary mapping vector in a shell by means of the optimization criterion and based on the odd property rules and, for instance, other general mapping properties .
Furthermore, as indicated by reference sign 262, performing the second search may include setting values of the bits into
the binary mapping vector baseα on at least one second value μe(i,ht) of the metric representative of the second case in order to determine an even parity binary mapping vector in a shell by means of the optimization criterion and based on the even property rules and, for instance, other general mapping properties.
For instance, each of the setting values of the bits of the binary mapping vector for the first search and for the second search may be performed by one out of the second, third or fourth exemplary embodiments mentioned above.
Then, the determined binary mapping vector for a selected shell may be chosen from the determined binary mapping vectors of the first and second searches providing the better metric representative .
Fig. 3 depicts a schematic flowchart of a sixth exemplary embodiment of a method according to the present invention, which may be used for applying the search in at least one shell of the at least one selected shell. Thus, this method may be used for determining a mapping representative for each shell of the first exemplary method indicated by reference sign 140 in Fig. Ia.
With respect to the method depicted in Fig. Ia, before the loop starts with step 140 for the first time, for each of the at least one shell of the first code a scored metric distance representative is initialized by setting it to value (s) indicating a very suboptimal representative.
Each of these values is configured to represent a metric distance representative associated with the selected shell, wherein the method is configured to store the metric distance representative of the mapping representative providing the best metric distance representative by means of updating the value in case a better metric distance representative is obtained for a new mapping representative in the same shell.
Then, one shell of the at least one shell is selected, as indicated by reference sign 310 and the method comprises determining a mapping representative for zhe selected shell based on the mapping properties and the optimization criterion (indicated by reference sign 320) . For instance, each of the exemplary methods described above may be used for this determining.
Thus, the mapping representative is determined which maps the selected codeword of the second code to the codeword of the first code representing the nearest neighbor with respect to the vector in the selected shell.
Then, it is checked whether the metric distance representative associated with the determined mapping representative (and thus the codeword) is better than the stored metric distance representative of the selected shell. If true, the method stores the new metric distance representative and assigns the stored representative with the determined mapping representative and the actual codeword of the second code (as indicated by reference sign 340), or, alternatively, with the codeword of the first code.
Afterwards, it is checked whether there is another shell left for performing a search in this shell (indicated by reference sign 350) , and if there is another shell, then it is proceeded with selecting this shell and the loop in Fig. 3 starts again for the selected shell. Thus, for instance, each of the selected at least one shell of the first code can be searched.
If there is no shell left, the method proceeds to point 360. For instance, the method may then proceed with selecting the mapping representative and the corresponding codeword of the second code - implying selecting the final codeword of the first code - optimizing the optimization criterion based on the stored metric distance representatives for each shell. Furthermore, for example and depending on the optimization criterion, a constant value depending on the shell may be added to or subtracted from the metric distance representatives of each shell. E.g., assuming criterion (5), which will be explained in the sequel, for each shell, the value
representing a value proportional to the Hamming weight of the shell of the determined codeword γ of the first code may be subtracted from the metric distance
representation associated with this shell in order to
obtain the value of the optimization criterion for this shell. Then, according to the best optimization criterion the final codeword can be selected.
The explanations and advantages presented with respect to the first to fifth exemplary embodiment also holds for the following exemplary embodiments.
In the following, as an exemplary example without any restrictions, a unique set of 4096 Golay codewords, wherein each codewords represents a codevector of length 24, will be used as first code, wherein G24 represents the codebook, for which a fixed indexing scheme will be exemplarily defined. When leaving out the 24-th entry in each codevector we obtain the codebook G23 (and thus the matrix G23 defining the codebook G23 is the matrix of the codebook G24 with the last column erased) . The full matrix G24 can be obtained by appending a parity bit to each row of the matrix G94 and we write simply G , omitting the subscript of the codebook G and of the matrix when it is not relevant, or when it is clear from the vector length L . The set of nontrivial Hamming weights of the codevectors is
for G24 and
for
the trivial Hamming weights being those corresponding to all-zero and all-one codevectors.
Fig. 4a depicts a first exemplary embodiment of a system of the present invention, wherein a transmitter 410 or a component 410 of a transmitter embeds a binary message mi, ...,mi2 (with 12 informational bits) into a redundant L -bit long binary message
which is provided for transmission over a channel 420 where some bits may be corrupted. A receiver 430 or a component 430 of a receiver receives a message which due to the channel errors
will be different from the transmitted s . If only few bits of s were affected by errors, one can look for the s'eG that is the closest to the received r and then the 12 informational bits can be extracted from s_' . For some channels, for each
transmitted bit S1 the receiver may not take immediately trivial hard decisions
but instead it can evaluate the probability
and P Then for each
Golay codevector the probability may
be used for a better decision, given by the maximum likelihood (ML) decoding
L s
It is convenient to transform the binary g into the symmetrical values and we will denote the
element wise transformation of g by and that of the
entire codebook G as the codebook Ξ . We notice that also We will define and call it with a
slight abuse the Hamming weight of the vector The shell
of weight d* in the codebook G is the set of codevectors having Hamming weight
and we will also call shell d* in Ξ the set of vectors obtained by transforming by
/(•) the vectors of the shell d* in G . The ML decoding can thus may achieved by solving the following problem:
Problem 1: For given numbers find for each d* e D the
solution of
In words, Problem 1 asks for the maximum dot product between the vectors
and when the vectors belong to the shell
of weight
There is also a problem of finding only the overall maximum dot product, for all vectors in the codebook:
Fig. 4b depicts a second exemplary embodiment of a system of the present invention, wherein a vector quantization (VQ) unit 450 is fed with a real valued input vector v of dimension L (indicated by reference sign 451) , which is to be replaced with its best approximation in a codebook G in the Euclidian distance sense, by the vector g minimizing the distance
which is equivalent to maximizing the difference
Thus, the solution to Problem 1, where P1 are replaced by V1, will also provide a solution to the VQ problem shown in (5) .
Accordingly,, each of the criterions defined in equations (2), (3) and (5) may be used as optimization criterion based on determining a metric distance representative between the vector and a codeword of the Golay code. For instance, in case
criterion (5) is applied, may represent the metric
distance representative between the vector and a codeword of the Golay code, wherein may represent a constant value
for the different shells of the Golay code.
Furthermore, as a non-limiting example, in the following it is assumed that the second code represents the hexacode, wherein the hexacode codebook H
contains 64 codewords
each formed of 6 symbols from the alphabet
of the Galois field GF (4) . The generator matrix is
The hexacode leaders, in accordance with V. Pless, "Decoding the Golay codes", IEEE Transactions on Information Theory, vol. 32, no. 4, pp. 561-567, 1986, are shown in Table 1. From the leaders one can construct the codebook by specific permutation and scaling operations.
Table 1: The hexacode leaders.
From each leader one can form valid codewords by permuting the groups and/or by changing in two of the groups the
order in the pair, e.g. is a valid codeword.
Also, multiplication (in GF(4) ) of any valid codeword with a scalar produces a valid codeword.
Table 2 shows an interpretation function
e.g.
known from A. Vardy and Y. Be'ery "More efficient soft decoding of the Golay codes", IEEE Transactions on Information Theory, vol. 37, no. 3, pp. 667-672, 1991.
By applying the interpretation function to each symbol of a hexacode codeword results in the Golay codeword
obtained as where
is the parity bit of the vector b .
Thus, the vector b represents a mapping representative of the set of mapping representatives, and the nexacode H represents the second code, wherein a codeword of the set of codewords G24 of the first code is associated with a hexacode codeword, representing a codeword of the second code, and a vector b, representing a mapping representative. Each hexacode codeword
comprises K=6 components Ji1.
Each GF (4) symbol can be mapped to four different binary
4-bit words by using the interpretation function from Table 2,
(J b ) , depending on the bit bl and the overall parity bit where q = \ if the sum is odd and q = 0 when
is even.
A property of the hexacode codewords is that from each codeword one can construct 64 codewords of lengrh 24, resulting in a total of 4096 codewords, which can be shown to form a Goiay codebook. Thus, each hexacode codeword, representing a codeword of the second code, can be associated with the corresponding 64 codewords of the Golay code, wherein
these 64 codewords represent the set of codewords being associated with the corresponding codeword of the second code .
Starting from the codebook H specified in Figs βa and 6b - or from any equivalent hexacode codebook - one can define the corresponding Golay codebooks, G23 and G24 by the already specified one-to-one mapping between a codeword and
the pair (
with heH representing the codeword of the second code and
representing the mapping representative .
By replacing each GF (4) symbol by the 4-bit vector, as shown in Table 2, one obtains the 24-bit Golay codeword. This codeword may be presented for example in a 4 by 6 matrix form, or the matrix may be vectorized column wise into a 24-long vector.
Since the last bit in is a parity bit of all bits of
passing from one codevector to the other is a trivial
matter, so we describe in the following properties of both 23 -long and 24-long vectors. The exemplary focus will be on the vectors of length 23 , which will have their Hamming weight in the set
The mapping between and the pair with
heH and
obeys to mapping properties defining rules for the mapping representatives
in order to map a codeword of the second code on a codeword of
the first code. It has to be understood, that the following properties represent exemplary properties for the mapping representatives with respect to the exemplary Golay code and hexacode, but any other well-suited mapping properties may also be used depending on the applied first code and the applied second code.
General properties:
Gl: The parity of the vector b is the same as the parity of each column and of the first row of (the matrix form of )
G2: For any g
(that is, is an odd
number) if or
In the odd parity rules 01, 02 and 03 above - and for the even parity rules E2, E3 and E4 below - the term iff stands for "if and only if".
Thus, these property rules 01, 02 and 03 represent odd parity rules of the mapping properties, the odd parity rules comprising rules for setting values of the bits in vector b in order to fulfill the odd parity of b depending on the shell of the codeword. The odd parity rules do not
depend on the codeword of the second code.
Thus, these property rules El, E2 , E3 and E4 represent even parity rules of the mapping properties, the even parity rules comprising rules for setting values of the bits in vector b in order to fulfill the even parity of b depending on the shell dH(g) of the codeword. The even parity rules further depend on the codeword of the second code.
Accordingly, in this exemplary case, the mapping properties comprise general property rules, even parity rules, and odd parity rules .
Regarding the optimization criterion with respect to the applied Golay code and hexacode, in order to simplify the next formulae, Greek letters corresponding to the roman letters
are used to express conveniently the binary variables that are described by roman letters,
The criterion to be optimized is
A similar decomposition of the Golay codeword as shown above for vector v is denoted by
Thus, the optimization criterion (7) is configured to determine a metric distance representative between the vector v and codeword g ,
the metric distance representative depending on N=6 submetries
From Table 2 it can be noticed that
holds. Depending on the parity of the mapping representative b the following can be denoted:
To speed up the evaluation of
for all Golay codewords, the values
and
may be computed for all
before the start of the search phase. Let's denote
the signs of the variables μe(i,h) and μo(i,h) as ξe(i,h) and ξg(i,h) , respectively. The optimization criterion can now be written as case differentiation depending on the parity of vector b :
The first case relates to odd parity vectors b , and the second case relates to even party vectors b . Thus, calculating the submetric depends on the multiplication of the
first value
and a second value, the first value βt =2bt-\ representing an algebraic sign depending on the bit of the corresponding bit position i in the mapping vector b , and wherein in the first case the second value represents the metric value
depending on the corresponding subelement
and wherein in the second case the second value represents the metric value These first and second
cases may be considered to represent the first and second cases presented with respect to the fourth exemplary embodiment depicted in Fig. 2d.
For each hexacodeword h the criterion for all 64 binary vectors be{0,l}6 should be taken into account. The key to the fast optimization of the criterion (10) stems in the observation that the maximizing vector b can be easily obtained by processing the vectors
and
To exemplify this we take first q = l
implying odd parity, and see that the maximum sum
is clearly obtained when in the situation when the
vector does not have odd parity, the odd
parity may be enforced by changing the binary value of one entry and changing the entry k where the
absolute value of
is the smallest may be beneficial, because the resulting criterion is
For instance, when looking for the solution of Problem 1, it is not sufficient to find only the maximum of (10) over all possible pairs
but the individual maxima for each shell
/ , , , , ; is needed. To do this efficiently, without evaluating (10) for all 64 binary vectors , we may
utilize the same fact that the absolute maximum of the sums in (10) is achieved by one of the vectors and and this
solution may be enforced to belong to various shells by changing as many bits in and as necessary to satisfy
the respective mapping properties.
In fact, in the odd interpretation, when q(b) = \, the odd parity rules of the mapping properties tell directly the value of and vector is not needed. Instead, we can for
example take the zero vector as mapping representative and then switch a required number of binary values, which is equal to the from zero to one. The elements to be changed are
chosen in such a way that the sum of optimizing criterion (10) is maximized.
Due to the form of the optimization criterion (10) the following property of the optimal solution b* for a given shell d may be stated:
For a given shell
and
the solution
maximizing (10), constrained to
and can be obtained
by the following way: From the properties 01-03 the number of ones in the solution vector
b is known. This number of ones is denoted k. Then, determining the mapping representative b* of odd parity vectors for the selected shell comprises: placing the ones "o the locations \,...,ik in vector b* (e.g., as indicated by reference sign 242 in Fig. 2b) such that
(b) the general property (G2) will be satisfied
Thus, this optimization method may be performed by rhe third exemplary method depicted in Fig. 2b.
(10), constrained to
and
, can be obtained by changing the binary values of the elements in
locations of (e.g., as indicated by reference sign
252 in Fig. 2c) such that
(a) k is the minimum number of switch operations which will satisfy the general property (G2) and even parity rules
(b) from all possible such choices
of elements to be changed, choosing the one resulting in the minimum sum
Thus, the second criterion may be summarized by starting with a binary mapping vector comprising a zero at i-th position in case (ih) is negative and otherwise comprising a one at i-th position, as this maximizes the criterion (10) at the beginning of search. Then, k binary values in locations of the starting binary mapping vector are changed in
order to obtain the mapping representative
of even parity vectors for the selected shell, wherein k is the minimum number which will satisfy the general property (G2) and the even parity rules (E1-E3) (enforcing
Additionally, from all possible such choices
of elements to be changed, choosing the one having the minimum sum so that degradation of metric
representative (10) is minimized compared to the metric of the starting binary mapping vector.
Accordingly, this optimization method may be performed by the third exemplary method depicted in Fig. 2b.
There is a special case
in the even interpretation, which can be treated as the odd case. Thus, in this special case
, the third exemplary method depicted in Fig. 2b may be applied.
In the sequel, a further exemplary method according to the present invention will be described. The algorithm is configured to find the optimal values of (10) for each of the shells of weights
0. Input:
Given at input a real vector
as indicated by reference sign 110 depicted in Fig. 1), we first expand the vector appending an entry
1. Initialization:
The initialization requires the computation of the 4x6 matrices and from (9) and (10) and storing the signs
of their elements in the matrixes and
. We also
initialize the current maxima variables (e.g., corresponding to the metric distance representatives) on each shell, { , , , , , ; . Denote the hexacodewords and
the binary vectors corresponding to the current maxima.
2.1
Form the vectors
and
and the vectors of signs and
Denote and the corresponding
binary vectors of signs, in which zero refers to the negative and one to the positive sign.
2.2 Preparations for odd interpretation:
Sort the indexes i corresponding to the first five components of the vector mo in such a way that will be arranged in
ascending order. In other words, if ik are the components of the sorted vector /, then [
In order to speed up the sorting, that is, to decrease the amount of comparisons of real values , one can put the
indexes ik corresponding to the negative at the beginning
of the vector, and those corresponding to the positive at
the end of the vector i, before sorting. This may be done by means of the vector or its binary analogue
2.3 Preparations for even interpretation:
Denote the locations of the zero-valued entries in
if there are only two zero-valued entries, and neither of these zero-valued entries is the 6th element of
such that If then denote the other index where
if it is unique. Denote the index of the minimum
value in the set of absolute values
then, as in the step 2.2, separate the negative and positive
entries of
. Sort again into ascending order
and denote k
the number of negative entries in
2.4 Odd interpretation if
When
all the vectors
are computed similarly, but those corresponding to the odd shells I1 11, 15 are then the even ones and vice versa.
Initialize
then set
Initializeέ then set and
Initialize
(the binary complement vector) Initialize
, then set
2.4.2
Because changing one bit in vector
changes the value
by , the values J can be evaluated efficiently by adding
or subtracting the values from the sum J1 and its complement as described below.
2.5.1.2.1 Middle shells
Evaluate
and update
if necessary. 2.5.1.3 Else If and not all
2.5.1.3.1 Small or Middle shells. Set
Compute the current shell:
If is odd, change the bit
2.5.2.2 Large shells: Set and
Update if necessary.
In the sequel, a further exemplary embodiment of a method of the present invention will be explained.
Accordingly, there are 2x6x4=48 values to compute, each of these being a sum of four real numbers, which can be expressed as a dot product . Here is the interpretation
function, whose binary analogue was the function z described in the Table 2. Taking a look at those eight interpretations z, for which b=0, one can notice that they can be arranged in such a way, that the difference between two consecutive z is only one bit. In the dot product*
the difference of one bit corresponds to an addition of
for certain i . This fact, which may be taken advantage of when speeding up the calculation of μo and μe values from Equation (9) was presented in A. Vardy and Y. Be ' ery "More efficient soft decoding of the Golay codes", IEEE Transactions on Information Theory, vol. 37, no. 3, pp. 667-672, 1991. One difference to be pointed out is that the definition of values
used here does not involve taking the absolute values of the sums.
An alternative way to compute
and
efficiently is to first count the following sums and differences for each j
After this, all the dot products can be computed as
an addition or subtraction of two of the preceding values.
The steps 2.2 and 2.3 may involve sorting, for example by employing the insertion sort, which may be well-suited for sorting a vector having a small number - five in this exemplary embodiment - number of elements. In addition, separating the positive and negative values of the vector, if there are both, before the sorting may decrease the number of comparison operations during the insertion sort.
In odd case the value of J
can be evaluated efficiently by counting first the value J
and then adding the values to it, as described in the algorithm above. A
similar idea can be used also in the even case: First evaluate the J value corresponding to the vector of signs, Then just compare the vectors to the
vector of signs and compute the values corresponding
to the various shells by adding the values
In the sequel, another exemplary method for performing a search for separate shells will be described next.
The further exemplary method presented above searches 6 optimal values of criterion (10) . Each of these values corresponds to a shell of some weight
This another exemplary method presents another embodiment for searching. This exemplary method may be suited to the case
when one does not need all the 6 different values, but needs a value corresponding to a certain weight d .
The description of this exemplary method uses the same notations as in the further exemplary method mentioned above.
In addition to those, we denote now and the indexes
of the largest and the second largest values of the set Again, the last element of the vector is
excluded. We denote also
and the indexes of the
smallest and the second smallest values of the set
The following algorithm presents a process for finding the optimal sums
for the shells of the weights .
Similar rules could be established also for the other shells, but an alternative way to handle them is provided: As discussed above, there is an one-to-one mapping between
(or and the pair That is, if we take
particular vectors and they can be mapped to
a codeword g Because the complement vector of the
particular vector
is also a binary vector, we can map it to another codeword Furthermore, is the complement
vector of g :
If the Hamming weight of the vector g is d , then by definition of the Hamming weight . The sums
have also following property:
. Therefore
which also holds for the pairs of the norms
and {\\,\2} . This gives us a method to find the optimal sum for the shell dπ =16 by using the algorithm designed for the shell 7 for the vector —v . In a similar manner, algorithm designed for the shell 8 can be used to find the optimal sum for the shell 15, and algorithm designed for the shell 11 can be used to find "che optimal sum for the shell 12. This approach provides the correct sum and the correct hexacodeword In addition,
it provides a binary vector
that is the complement of the correct
The description of the algorithm of this exemplary method is provided below:
0. Input:
1. Initialization:
The initialization step may require the computation of the 4x6 matrices μo and μe from (9) and (10), and storing the signs of the elements of μe in the matrix . We also
initialize the current maxima variable
Denote h the
hexacodeword and b the binary vector corresponding to the current maximum.
2. Shell of the norm
2.1 Even interpretation :
If h6 set otherwise set
If is odd, change the bit
Evaluate
and update and if necessary.
Special case
Initialize
Set and
5. Output
The output of this algorithm of this exemplary method is
which is the optimal value of (10) for one of the shells, and also the vectors and corresponding to this optimal
value .
Fig. 5is a schematic illustration of an embodiment of a readable medium 500 according to the fourth aspect of the present invention.
In this example the readable medium 500 is a computer-readable medium. A program 501 according to the fifth aspect of the present invention is stored thereon. The program 501 comprises program code 502. When executed by a processor, the instructions of the program code 502 cause a processor to search for a codeword of a set of codewords of a first code representing a near neighbor to a vector, wherein a second code is associated with a second set of codewords, wherein a codeword of the second set of codewords is associated with a subset of codewords of the first code, and wherein a codeword
of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives; wherein the searching comprises for each codeword of the second set of codewords: performing the search in at least on shell of the first code, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight, by determining a mapping representative of the set of mapping representatives for each shell of the at least one shell based on mapping properties and an optimization criterion, the mapping properties defining rules for the mapping representatives of the set of mapping representatives with respect to a shell of the at least one shell, and wherein the optimization criterion is based on determining a metric distance representative between the vector and a codeword of the first code depending on a selected codeword of the second code and a selected mapping representative, and, after the search is performed for each codeword of the second set of codewords, selecting the mapping representative and the corresponding codeword of the second code optimizing the optimizing criterion .
It is readily clear for a skilled person that the logical blocks in the schematic block diagrams as well as the flowchart and algorithm steps presented in the above description may at least partially be implemented in electronic hardware and/or computer software, wherein it depends on the functionality of the logical block, flowchart step and algorithm step and on design constraints imposed on the respective devices and/or apparatuses to which degree a logical block, a flowchart step or algorithm step is implemented in hardware or software. The presented logical
blocks, flowchart steps and algorithm steps may for instance be implemented in one or more digital signal processors, application specific integrated circuits, field programmable gate arrays or other programmable devices. Said computer software may be stored in a variety of storage media of electric, magnetic, electro-magnetic or optic type and may be read and executed by a processor, such as for instance a microprocessor. To this end, said processor and said storage medium may be coupled to interchange information, or the storage medium may be included in the processor.
The invention has been described above by means of exemplary embodiments. It should be noted that there are alternative ways and variations which are obvious to a skilled person in the art and can be implemented without deviating from the scope and spirit of the appended claims. In particular, the invention is not restricted to Golay codes and hexacodes exclusively, but can be applied to any other well-suited codes. Furthermore, the word "step" used in this description should not be understood in a limiting way, i.e. any step may comprise a set of substeps so that the word "step" is not restricted to exactly one step.
Claims
1. A method, comprising: searching for a codeword from a set of codewords of a first code representing a near neighbor to a vector, wherein a second code is associated with a second set of codewords, wherein a codeword of the second set of codewords is associated with a subset of codewords of the first code, and wherein a codeword of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives; wherein the search comprises for each codeword of the second set of codewords: performing the search in at least one shell of the first code, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight, by determining a mapping representative of the set of mapping representatives for each shell of the at least one shell based on mapping properties and an optimization criterion, the mapping properties defining rules for the mapping representatives of the set of mapping representatives with respect to a shell of the at least one shell, and wherein the optimization criterion is based on determining a metric distance representative between the vector and a codeword of the first code depending on a selected codeword of the second code and a selected mapping representative, and, after the search is performed for each codeword of the second set of codewords, selecting the mapping representative and the corresponding codeword of the second code optimizing the optimizing criterion.
2. The method according to claim 1, wherein a codeword of the second code is associated with N components and each mapping representative of the set of mapping representatives is associated with a binary mapping vector comprising M bits, and wherein the metric distance representative of the optimization criterion depends on N submetrics, each of the N submetrics depending on a component of the N components and on the binary mapping vector, and wherein said determining a mapping representative comprises: selecting a shell of the at least one shell; setting values of the bits of a binary mapping vector in accordance with the mapping properties for the selected shell by taking into account optimizing the metric distance representative based on the influence of the bits with respect to the N submetrics.
3. The method according to claim 2, wherein M=N holds and each of the N submetrics depends on one bit of a bit position in the binary mapping vector.
4. The method according to claim 3, wherein each submetric is calculated by multiplying a first value and a second value, the first value representing an algebraic sign depending on the bit of the corresponding bit position in the binary mapping vector, and the second value representing a metric value depending on the corresponding component and the vector, the method comprising determining the N second values for the actual codeword of the second code, wherein said setting values of the bits of the binary mapping vector comprises : setting values of the bits of the binary mapping vector based on the mapping properties for the selected shell and, if the mapping properties allow, based on at least one second value of the metric representative, in order to optimize the metric distance representative.
The method according to claim 3 wherein the mapping properties comprise a set of odd parity rules and a set of even parity rules, the odd parity rules comprising rules for setting values of the bits in the binary mapping vector in order to perform mapping on a codeword of the first code according to a shell and in order to ensure odd parity of the binary mapping vector, and the even parity rules comprising rules for setting values of the bits in the binary mapping vector in order to perform mapping on a codeword of the first code according to a shell and in order to ensure even parity of the binary mapping vector.
The method according to claim 5, wherein the metric distance representative can be determined by means of a case differentiation, the first case relating to odd parity binary mapping vectors and the second case relating to even parity binary mapping vectors, wherein each submetric is calculated by multiplying a first value and a second value, the first value representing an algebraic sign depending on the bit of the corresponding bit position in the binary mapping vector, and wherein in the first case the second value represents a metric value depending on the corresponding component and the vector under the assumption of an odd parity binary mapping vector, and wherein in the second case the second value represents a metric value depending on the corresponding component and the vector under the assumption of an even parity binary mapping vector, the method comprising determining the N second values for the actual codeword of the second code for the first and second case, respectively, wherein said setting values of the bits of the binary mapping vector comprises : for the first case: setting values of the bits of the binary mapping vector based on the mapping properties for the selected shell and, if the mapping properties allow, based on at least one second value of the metric representative relating to the first case, in order to optimize the metric distance representative; and for the second case: setting values of the bits if the binary mapping vector based on the mapping properties for the selected shell and, if the mapping properties allow, based on at least one second value of the metric representative relating to the second case, in order to optimize the metric distance representative.
7. The method according to claim 6, comprising calculating a first set of second values related with the first case, the first set of second values comprising all second values for each of the N positions for each componenr under the assumption of an even parity binary mapping vector; and calculating a second set of second values related with the second case, the second set of second values comprising all second values for each of the N positions for each component under the assumption of an odd parity binary mapping vector, wherein the calculating of the first and second set of second values is performed prior to the searching.
The method according to claim 6 or claim 7, wherein setting values of the bits of the binary mapping vector in one of the first and second cases comprises, under the assumption that μ represents the i-th second value of the selected case based on the i-th component of the codeword of the second code and that i denotes the bit position in the binary mapping vector: determining the number of bits to be set to value one in the binary mapping vector based on the mapping properties in order to ensure that the binary mapping vectors maps onto the selected shell, the amount of ones denoted as k; placing the ones to the locations in the binary mapping vector in such away that the sum will be as large as possible and the relevant mapping properties will be satisfied.
The method according to one of claims 6 to 8, wherein setting values of the bits of the binary mapping vector in one of rhe first and second cases comprises, under the assumption that represents the i-th second value of the selected case based on the i-th component \ of the codeword of the second code and that i denotes the bit position in the binary mapping vector: determining a starting binary mapping vector providing a good starting solution with respect to the metric distance representative of the optimization criterion, changing the values of k elements in locations of the starting binary mapping vector in order to determine the binary mapping vector, wherein k is the minimum number which will satisfy the relevant mapping properties, wherein this changing comprises choosing from all possible such choices providing the minimum sum
11. The method according to one of the preceding claims, wherein the first code represents a Golay code, the second code represents a hexacode and the mapping representatives represent binary mapping vectors .
12. An apparatus, comprising: a processor configured to search for a codeword of a set of codewords of a first code representing a near neighbor to a vector, wherein a second code is associated with a second set of codewords, wherein a codeword of the second set of codewords is associated with a subset of codewords of the first code, and wherein a codeword of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives; wherein the search comprises for each codeword of the set of second codewords: performing the search in at least on shell of the first code, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight, by determining a mapping representative of the set of mapping representatives for each shell of the at least one shell based on mapping properties and an optimization criterion, the mapping properties defining rules for the mapping representatives of the set of mapping representatives with respect to a shell of the at least; one shell, and wherein the optimization criterion is based on determining a metric distance representative between the vector and a codeword of the first code depending on a selected codeword of the second code and a selected mapping representative, and, after the search is performed for each codeword of the second set of codewords, selecting the mapping representative and the corresponding codeword of the second code optimizing the optimizing criterion.
13. The apparatus according to claim 12, wherein a codeword of the second code is associated with N components and each mapping representative of the set of mapping representatives is associated with a binary mapping vector comprising M bits, and wherein the metric distance representative of the optimization criterion depends on N submetrics, each of the N submetrics depending on a component of the N sαbelements and on the binary mapping vector, and said determining a mapping representative comprises: selecting a shell of the at least one shell; setting values of the bits of a binary mapping vector in accordance with the mapping properties for the selected shell by taking into account optimizing the metric distance representative based on the influence of the bits with respect to the N submetrics .
14. The apparatus according to claim 13, wherein M=N holds and each of the N submetrics depends on one bit of a bit position in the binary mapping vector.
15. The apparatus according to claim 14, wherein each submetric is calculated by multiplying a first value and a second value, the first value representing an algebraic sign depending on the bit of the corresponding bit position in the binary mapping vector, and the second value representing a metric value depending on the corresponding component and the vector, wherein the processor is configured to determine the N second values for the actual codeword of the second code, wherein said setting values of the bits of the binary mapping vector comprises : setting values of the bits of the binary mapping vector based on the mapping properties for the selected shell and, if the mapping properties allow, based on at least one second value of the metric representative, in order to optimize the metric distance representative.
16. The apparatus according to claim 14, wherein the mapping properties comprise a set of odd parity rules and a set of even parity rules, the odd parity rules comprising rules for setting values of the bits in the binary mapping vector in order to perform mapping on a codeword of the first code according to a shell and in order to ensure odd parity of the binary mapping vector, and the even parity rules comprising rules for setting values of the bits in the binary mapping vector in order to perform mapping on a codeword of the first code according to a shell and in order to ensure even parity of the binary mapping vector.
17. The apparatus according to claim 16, wherein the metric distance representative can be determined by means of a case differentiation, the first case relating to odd parity binary mapping vectors and the second case relating to even parity binary mapping vectors, wherein each submetric is calculated by multiplying a first value and a second value, ~he first value representing an algebraic sign depending on the bit of the corresponding bit position in the binary mapping vector, and wherein in the first case the second value represents a metric value depending on the corresponding component and the vector under the assumption of an odd parity binary mapping vector, and wherein in the second case the second value represents a metric value depending on the corresponding component and the vector under the assumption of an even parity binary mapping vector, wherein the processor is configured to determine the N second values for the actual codeword of the first code for the first and second case, respectively, wherein said setting values of the bits of the binary mapping vector comprises : for the first case: setting values of the bits of the binary mapping vector based on the mapping properties for the selected shell and, if the mapping properties allow, based on at least one second value of the metric representative relating to the first case, in order to optimize the metric distance representative; and for the second case: setting values of the bits of the binary mapping vector based on the mapping properties for the selected shell and, if the mapping properties allow, based on at least one second value of the metric representative relating to the second case, in order to optimize the metric distance representative.
18. The apparatus according to claim 17, comprising calculating a first set of second values related with the first case, the first set of second values comprising all second values for each of the N positions for each component under the assumption of an even parity binary mapping vector; and calculating a second set of second values related with the second case, the second set of second values comprising all second values for each of the N positions for each component under the assumption of an odd parity binary mapping vector, wherein the calculating of the first and second set of second values is performed prior to the searching.
19. The apparatus according to claim 17 or claim 18, wherein setting values of the bits of the a binary mapping vector in one of the first and second cases comprises, under the assumption that represents the i-th second value of the selected case based on the i-th component ht of the codeword of the second code and that i denotes the bit position in the binary mapping vector: determining the number of bits to be set to value one in the binary mapping vector based on the mapping properties in order to ensure that the binary mapping vectors maps onto the selected shell, the amount of ones denoted as k; placing the ones to the locations in the binary mapping vector in such a way that the sum will be as large as possible and the relevant mapping properties will be satisfied.
20. The apparatus according to one of claims 17 to 19, wherein setting values of the bits of the binary mapping vector in one of the first and second cases comprises, under the assumption that μ(i, A.) represents the i-th second value of the selected case based on the i-th component ht of the codeword of the second code and that i denotes the bit position in the binary mapping vector: determining a starting binary mapping vector providing a good starting solution with respect to the metric distance representative of the optimization criterion, changing the values of k elements in locations of the starting binary mapping vector in order to determine the binary mapping vector, wherein k is the minimum number which will satisfy the relevant mapping properties, wherein this changing comprises choosing from all possible such choices providing the minimum sum
21. The apparatus according to claim 20, wherein determining a starting binary mapping vector comprises placing a zero at i-th position of the starting binary mapping vector in case H(Uh1) is negative, otherwise placing a one at i-th position.
22. The apparatus according to one of claims 12-21, wherein the first code represents a Golay code, the second code represents a hexacode and the mapping representatives represent binary mapping vectors.
23. An apparatus, comprising: means for searching for a codeword from a set of codewords of a first code representing a near neighbor to a vector, wherein a second code is associated with a second set of codewords, wherein a codeword of the second set of codewords is associated with a subset of codewords of the first code, and wherein a codeword of the set of codewords of the first code can be constructed by a codeword of the second code and a mapping representative of a set of mapping representatives; wherein the search comprises for each codeword of the second set of codewords: performing the searching in at least on shell of the first code, wherein a shell is associated with codewords of the set of codewords having the same Hamming weight, by determining a mapping representative of the set of mapping representatives for each shell of the at least; one shell based on mapping properties and an optimization criterion, the mapping properties defining rules for the mapping representatives of the set of mapping representatives with respect to a shell of the at least one shell, and wherein the optimization criterion is based on determining a metric distance representative between the vector and a codeword of the first code depending on a selected codeword of the second code and a selected mapping representative, and, after the search is performed for each codeword of the second set of codewords, selecting the mapping representative and the corresponding codeword of the second code optimizing the optimizing criterion.
24. A program, comprising: program code for performing the method according to one of the claims 1-11, when the program is executed on a processor.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2009/050660 WO2010083882A1 (en) | 2009-01-21 | 2009-01-21 | Neighbor search in codes |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2009/050660 WO2010083882A1 (en) | 2009-01-21 | 2009-01-21 | Neighbor search in codes |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2010083882A1 true WO2010083882A1 (en) | 2010-07-29 |
Family
ID=40720025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/EP2009/050660 WO2010083882A1 (en) | 2009-01-21 | 2009-01-21 | Neighbor search in codes |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2010083882A1 (en) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6084534A (en) * | 1999-06-14 | 2000-07-04 | The United States Of America As Represented By The Director Of The National Security Agency | Method for efficient storage and transmission of the centroids of a leech lattice quantizer |
-
2009
- 2009-01-21 WO PCT/EP2009/050660 patent/WO2010083882A1/en active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6084534A (en) * | 1999-06-14 | 2000-07-04 | The United States Of America As Represented By The Director Of The National Security Agency | Method for efficient storage and transmission of the centroids of a leech lattice quantizer |
Non-Patent Citations (6)
Title |
---|
ALEXANDER VARDY, YAIR BE'ERY.: "More efficient soft decoding of the Golay codes", INTERNET ARTICLE, 1991, XP002552668, Retrieved from the Internet <URL:http://www.eng.tau.ac.il/~ybeery/papers/ieee-il-1991-vardy-b.pdf> [retrieved on 20091023] * |
DANIEL M. GORDON: "Minimal permutation sets for decoding the binary Golay codes", IEEE TRANS INFORMATION THEORY, vol. IT-28, no. 3, May 1982 (1982-05-01), XP002552681 * |
E. VITERBO, E. BIGLIERI: "A universal decoding algorithm for lattice codes", INTERNET ARTICLE, September 1993 (1993-09-01), XP002552698, Retrieved from the Internet <URL:http://www.josephboutros.org/coding/Gretsi93_ViterboBiglieri_paper.pdf> [retrieved on 20091028] * |
J. H. CONWAY , N. J. A. SLOANE: "Soft Decoding Techniques for Codes and Lattices, Including the Golay Code and the Leech Lattice", INTERNMET ARTICLE, 1986, XP002552697, Retrieved from the Internet <URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.49.5032> [retrieved on 20091028] * |
STEPHANE RAGOT, JEAN-PIERRE ADOUL, ROCH LEFEBVRE: "Hexacode-based Quantisation of the Gaussian Source at 1/2 Bit per Sample", IEEE TRANS COMM, vol. 49, no. 12, December 2001 (2001-12-01), XP002552696 * |
VERA PLESS: "Decoding the Golay Codes", IEEE TRANS INFORMATION THEORY, vol. IT-32, no. 4, July 1986 (1986-07-01), XP002552686 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9847791B2 (en) | System and method for compressing data using asymmetric numeral systems with probability distributions | |
CN101610088B (en) | System and method for encoding data based on a compression technique with security features | |
EP2274833B1 (en) | Vector quantisation method | |
US7872598B2 (en) | Accelerated decompression | |
WO2002099976B1 (en) | A method and coding apparatus using low density parity check codes for data storage or data transmission | |
WO2003054860A1 (en) | Method and system for information signal coding using combinatorial and huffman codes | |
EP1798861A1 (en) | LDPC encoding through decoding algorithm | |
EP2023341B1 (en) | Vector coding/decoding method and apparatus and stream media player | |
JP5584203B2 (en) | How to process numeric data | |
US20080126917A1 (en) | Data processing systems and methods for processing digital data with low density parity check matrix | |
US9998149B2 (en) | Constant hamming weight coding | |
CN101431335B (en) | Modulation coding and decoding method, device and system | |
CN102780495B (en) | Data coding method and data decoding method | |
CN108429553B (en) | Encoding method, encoding device and equipment of polarization code | |
WO2010083882A1 (en) | Neighbor search in codes | |
US9318115B2 (en) | Efficient coding of binary strings for low bit rate entropy audio coding | |
US11362673B2 (en) | Entropy agnostic data encoding and decoding | |
Cao et al. | A fast search algorithm for vector quantization using a directed graph | |
JP2004120623A (en) | Encoding apparatus, encoding method, decoding apparatus and decoding method | |
KR20110033154A (en) | Method for counting vectors in regular point networks | |
Mittal et al. | Coding unconstrained FCB excitation using combinatorial and Huffman codes | |
Khandelwal et al. | Implementation of Direct Indexing and 2-V Golomb Coding of Lattice Vectors for Image Compression | |
Tabus et al. | Fast search on the shells of Golay codes | |
JPH08279757A (en) | Hierarchical vector quantizer | |
WO2020106230A1 (en) | Hardware complexity reduction technique for successive cancellation list decoders |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 09778970 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 09778970 Country of ref document: EP Kind code of ref document: A1 |