WO2010083882A1 - Neighbor search in codes - Google Patents

Neighbor search in codes Download PDF

Info

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
Application number
PCT/EP2009/050660
Other languages
French (fr)
Inventor
Adriana Vasilache
Ioan Tabus
Mari Johanna SEPPÄNEN
Original Assignee
Nokia Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nokia Corporation filed Critical Nokia Corporation
Priority to PCT/EP2009/050660 priority Critical patent/WO2010083882A1/en
Publication of WO2010083882A1 publication Critical patent/WO2010083882A1/en

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3082Vector coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/1505Golay 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.

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
Figure imgf000017_0001
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
Figure imgf000017_0002
on the bit at the corresponding i-th bit position in the binary mapping vector. Further, for instance, in case
Figure imgf000017_0003
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
Figure imgf000018_0001
of the codeword h of the second code and the associated
Figure imgf000018_0002
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
Figure imgf000018_0005
of the binary vector such that the corresponding first value
Figure imgf000018_0004
has the same algebraic sign as the corresponding second value
Figure imgf000018_0003
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
Figure imgf000018_0006
performed for so many bits as possible.
Figure imgf000018_0007
Of course, in case the metric distance representative is to be minimized, the value of at least one bit of the binary
Figure imgf000018_0008
vector is ser such that the corresponding first value βt has the opposite algebraic sign as the corresponding second value
Figure imgf000019_0001
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
Figure imgf000022_0004
represents the i-th second value of the selected case based on the i-th component of the codeword of the second code
Figure imgf000022_0003
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
Figure imgf000022_0002
in the binary mapping vector such that the sum will be as
Figure imgf000022_0001
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
Figure imgf000023_0003
maximized, because the selected second values are associated with first values having a
Figure imgf000023_0001
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
Figure imgf000023_0002
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
Figure imgf000024_0006
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
Figure imgf000024_0003
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
Figure imgf000024_0002
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
Figure imgf000024_0005
Figure imgf000024_0001
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
Figure imgf000024_0004
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
Figure imgf000025_0007
has the opposite algebraic sign as the corresponding second value
Figure imgf000025_0001
For instance, in case an element of the binary mapping
Figure imgf000025_0006
vector is out of the set changing the value of an
Figure imgf000025_0002
element of the starting binary mapping vector may be performed by changing a value to value b or vice
Figure imgf000025_0003
Figure imgf000025_0005
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
Figure imgf000025_0004
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
Figure imgf000034_0003
represents a codeword in the codebook of the first code and that
Figure imgf000034_0004
Figure imgf000034_0006
represents a codeword in the second codebook H
Figure imgf000034_0005
of the second code, the mapping between a pair
Figure imgf000034_0001
of codeword
Figure imgf000034_0007
and mapping representative b to a codeword g may be performed by means of a transfer function For instance, each
Figure imgf000034_0002
vector may comprise N components. Under this
Figure imgf000035_0001
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
Figure imgf000037_0001
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
Figure imgf000037_0002
Figure imgf000037_0003
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
Figure imgf000038_0002
v k in the binary mapping vector in such a way that the sum
Figure imgf000038_0001
will be as large as possible and the relevant mapping properties will be satisfied. Accordingly, the sum of the N submetrics β
Figure imgf000038_0003
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
Figure imgf000038_0004
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
Figure imgf000039_0001
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
Figure imgf000039_0002
Figure imgf000039_0004
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
Figure imgf000039_0003
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
Figure imgf000040_0005
minimum sum
Figure imgf000040_0001
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
Figure imgf000040_0002
bj of the starting binary mapping vector may be performed by changing a value to value or vice versa.
Figure imgf000040_0003
Figure imgf000040_0004
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
Figure imgf000042_0002
and the second values of the second case may be denoted as
Figure imgf000042_0001
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
Figure imgf000042_0003
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
Figure imgf000045_0002
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
Figure imgf000045_0001
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
Figure imgf000046_0003
for G24 and
Figure imgf000046_0004
for
Figure imgf000046_0005
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
Figure imgf000046_0001
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
Figure imgf000046_0002
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
Figure imgf000047_0012
but instead it can evaluate the probability
Figure imgf000047_0011
and P Then for each
Figure imgf000047_0010
Golay codevector the probability may
Figure imgf000047_0014
Figure imgf000047_0009
be used for a better decision, given by the maximum likelihood (ML) decoding
L s
Figure imgf000047_0001
It is convenient to transform the binary g into the symmetrical values and we will denote the
Figure imgf000047_0008
element wise transformation of g by and that of the
Figure imgf000047_0007
entire codebook G as the codebook Ξ . We notice that also We will define and call it with a
Figure imgf000047_0015
Figure imgf000047_0003
slight abuse the Hamming weight of the vector The shell
Figure imgf000047_0006
of weight d* in the codebook G is the set of codevectors having Hamming weight
Figure imgf000047_0002
and we will also call shell d* in Ξ the set of vectors obtained by transforming by
Figure imgf000047_0004
/(•) 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
Figure imgf000047_0013
solution of
Figure imgf000047_0005
In words, Problem 1 asks for the maximum dot product between the vectors
Figure imgf000048_0005
and when the vectors belong to the shell
Figure imgf000048_0006
Figure imgf000048_0007
of weight
Figure imgf000048_0003
There is also a problem of finding only the overall maximum dot product, for all vectors in the codebook:
Problem 2: For given numbers
Figure imgf000048_0008
find the solution of
Figure imgf000048_0002
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
Figure imgf000048_0001
which is equivalent to maximizing the difference
Figure imgf000048_0004
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
Figure imgf000049_0002
distance representative between the vector and a codeword of the Golay code, wherein may represent a constant value
Figure imgf000049_0003
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
Figure imgf000049_0006
contains 64 codewords
Figure imgf000049_0005
each formed of 6 symbols from the alphabet
Figure imgf000049_0004
of the Galois field GF (4) . The generator matrix is
Figure imgf000049_0001
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.
Figure imgf000049_0007
Figure imgf000050_0006
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
Figure imgf000050_0004
order in the pair, e.g. is a valid codeword.
Figure imgf000050_0003
Also, multiplication (in GF(4) ) of any valid codeword with a scalar produces a valid codeword.
Table 2 shows an interpretation function
Figure imgf000050_0001
e.g.
Figure imgf000050_0002
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.
Figure imgf000050_0005
Figure imgf000051_0010
Table 2: The interpretation function [ ] (hb )
Figure imgf000051_0009
By applying the interpretation function to each symbol of a hexacode codeword results in the Golay codeword
Figure imgf000051_0008
obtained as where
Figure imgf000051_0006
Figure imgf000051_0007
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
Figure imgf000051_0005
comprises K=6 components Ji1.
Each GF (4) symbol can be mapped to four different binary
Figure imgf000051_0004
4-bit words by using the interpretation function from Table 2,
Figure imgf000051_0001
(J b ) , depending on the bit bl and the overall parity bit where q = \ if the sum is odd and q = 0 when
Figure imgf000051_0002
is even.
Figure imgf000051_0003
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
Figure imgf000052_0010
the pair (
Figure imgf000052_0001
with heH representing the codeword of the second code and
Figure imgf000052_0002
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
Figure imgf000052_0003
passing from one codevector to the other is a trivial
Figure imgf000052_0011
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
Figure imgf000052_0004
The mapping between and the pair with
Figure imgf000052_0005
Figure imgf000052_0007
Figure imgf000052_0008
heH and
Figure imgf000052_0006
obeys to mapping properties defining rules for the mapping representatives
Figure imgf000052_0013
in order to map a codeword of the second code on a codeword of
Figure imgf000052_0012
Figure imgf000052_0009
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 )
Figure imgf000053_0005
G2: For any g
Figure imgf000053_0003
(that is, is an odd
Figure imgf000053_0004
number) if or
Figure imgf000053_0002
Figure imgf000053_0001
Odd parity of for
Figure imgf000053_0008
Figure imgf000053_0007
01: 02: 03: .
Figure imgf000053_0006
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
Figure imgf000053_0009
depend on the codeword of the second code.
Even parity of
Figure imgf000053_0011
for
Figure imgf000053_0010
Figure imgf000054_0001
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,
Figure imgf000055_0003
Figure imgf000055_0002
The criterion to be optimized is
Figure imgf000055_0001
where the vector v of 24 elements is decomposed into 6 smaller vectors
Figure imgf000055_0006
where
Figure imgf000055_0005
A similar decomposition of the Golay codeword as shown above for vector v is denoted by
Figure imgf000055_0013
Thus, the optimization criterion (7) is configured to determine a metric distance representative between the vector v and codeword g ,
Figure imgf000055_0015
the metric distance representative depending on N=6 submetries
Figure imgf000055_0004
From Table 2 it can be noticed that
Figure imgf000055_0012
holds. Depending on the parity of the mapping representative b the following can be denoted:
Figure imgf000055_0007
To speed up the evaluation of
Figure imgf000055_0011
for all Golay codewords, the values
Figure imgf000055_0008
and
Figure imgf000055_0009
may be computed for all
Figure imgf000055_0014
Figure imgf000055_0010
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 :
Figure imgf000056_0001
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
Figure imgf000056_0003
first value
Figure imgf000056_0002
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
Figure imgf000056_0005
depending on the corresponding subelement
Figure imgf000056_0006
and wherein in the second case the second value represents the metric value These first and second
Figure imgf000056_0004
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
Figure imgf000056_0007
and To exemplify this we take first q = l
Figure imgf000057_0003
implying odd parity, and see that the maximum sum
Figure imgf000057_0002
is clearly obtained when in the situation when the
Figure imgf000057_0004
vector does not have odd parity, the odd
Figure imgf000057_0015
parity may be enforced by changing the binary value of one entry and changing the entry k where the
Figure imgf000057_0014
absolute value of
Figure imgf000057_0016
is the smallest may be beneficial, because the resulting criterion is
Figure imgf000057_0001
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
Figure imgf000057_0017
but the individual maxima for each shell
Figure imgf000057_0005
/ , , , , ; is needed. To do this efficiently, without evaluating (10) for all 64 binary vectors , we may
Figure imgf000057_0010
utilize the same fact that the absolute maximum of the sums in (10) is achieved by one of the vectors and and this
Figure imgf000057_0008
Figure imgf000057_0009
solution may be enforced to belong to various shells by changing as many bits in and as necessary to satisfy
Figure imgf000057_0006
Figure imgf000057_0007
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
Figure imgf000057_0011
Figure imgf000057_0012
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
Figure imgf000057_0013
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:
First case - odd parity vector
Figure imgf000058_0003
For a given shell
Figure imgf000058_0001
and
Figure imgf000058_0002
the solution
Figure imgf000058_0006
maximizing (10), constrained to
Figure imgf000058_0013
and can be obtained
Figure imgf000058_0005
by the following way: From the properties 01-03 the number of ones in the solution vector
Figure imgf000058_0004
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
(a) the sum will be as large as possible,
Figure imgf000058_0007
and
(b) the general property (G2) will be satisfied
Thus, this optimization method may be performed by rhe third exemplary method depicted in Fig. 2b.
Second case - even parity vector
Figure imgf000058_0011
For a given shell
Figure imgf000058_0012
and
Figure imgf000058_0010
the solution b* maximizing
(10), constrained to
Figure imgf000058_0008
and
Figure imgf000058_0009
, can be obtained by changing the binary values of the elements in locations of (e.g., as indicated by reference sign
Figure imgf000059_0005
Figure imgf000059_0004
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
(E1-E3) (enforcing
Figure imgf000059_0002
and additionally,
(b) from all possible such choices
Figure imgf000059_0003
of elements to be changed, choosing the one resulting in the minimum sum
Figure imgf000059_0001
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
Figure imgf000059_0008
order to obtain the mapping representative
Figure imgf000059_0009
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
Figure imgf000059_0006
Additionally, from all possible such choices
Figure imgf000059_0010
of elements to be changed, choosing the one having the minimum sum so that degradation of metric
Figure imgf000059_0007
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
Figure imgf000060_0012
in the even interpretation, which can be treated as the odd case. Thus, in this special case
Figure imgf000060_0013
, 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
Figure imgf000060_0001
0. Input:
Given at input a real vector
Figure imgf000060_0002
as indicated by reference sign 110 depicted in Fig. 1), we first expand the vector appending an entry
Figure imgf000060_0003
1. Initialization:
The initialization requires the computation of the 4x6 matrices and from (9) and (10) and storing the signs
Figure imgf000060_0004
Figure imgf000060_0005
of their elements in the matrixes and
Figure imgf000060_0011
. We also
Figure imgf000060_0010
initialize the current maxima variables (e.g., corresponding to the metric distance representatives) on each shell, { , , , , , ; . Denote the hexacodewords and
Figure imgf000060_0006
Figure imgf000060_0009
Figure imgf000060_0014
the binary vectors corresponding to the current maxima.
2. Loop for Now we will take in turn each codeword
Figure imgf000060_0008
Figure imgf000060_0007
2.1 Form the vectors
Figure imgf000061_0003
and
Figure imgf000061_0004
and the vectors of signs and
Figure imgf000061_0005
Denote and the corresponding
Figure imgf000061_0002
Figure imgf000061_0013
Figure imgf000061_0014
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
Figure imgf000061_0007
ascending order. In other words, if ik are the components of the sorted vector /, then [
Figure imgf000061_0006
In order to speed up the sorting, that is, to decrease the amount of comparisons of real values , one can put the
Figure imgf000061_0018
indexes ik corresponding to the negative at the beginning
Figure imgf000061_0019
of the vector, and those corresponding to the positive at
Figure imgf000061_0016
the end of the vector i, before sorting. This may be done by means of the vector or its binary analogue
Figure imgf000061_0017
Figure imgf000061_0015
2.3 Preparations for even interpretation:
Denote the locations of the zero-valued entries in
Figure imgf000061_0020
Figure imgf000061_0011
if there are only two zero-valued entries, and neither of these zero-valued entries is the 6th element of
Figure imgf000061_0010
such that If then denote the other index where
Figure imgf000061_0008
Figure imgf000061_0009
Figure imgf000061_0022
if it is unique. Denote the index of the minimum
Figure imgf000061_0012
Figure imgf000061_0021
value in the set of absolute values
Figure imgf000061_0001
then, as in the step 2.2, separate the negative and positive entries of
Figure imgf000062_0027
. Sort again into ascending order
Figure imgf000062_0002
and denote k
Figure imgf000062_0028
the number of negative entries in
Figure imgf000062_0003
2.4 Odd interpretation if
Figure imgf000062_0004
When
Figure imgf000062_0005
all the vectors
Figure imgf000062_0026
are computed similarly, but those corresponding to the odd shells I1 11, 15 are then the even ones and vice versa.
2.4.0 Denote
Figure imgf000062_0009
Denote
Figure imgf000062_0025
the vector corresponding to the shell of the weight
Figure imgf000062_0008
Evaluate and call it J1. Notice from the
Figure imgf000062_0006
equation (10) that its complement is
Figure imgf000062_0007
2.4.1 Determine the vectors b* for each shell: Initialize then set
Figure imgf000062_0010
Figure imgf000062_0011
Initialize
Figure imgf000062_0014
then set
Figure imgf000062_0012
Initializeέ then set and
Figure imgf000062_0013
Figure imgf000062_0015
Figure imgf000062_0016
Initialize
Figure imgf000062_0001
(the binary complement vector) Initialize
Figure imgf000062_0017
, then set
Figure imgf000062_0018
Initialize then set
Figure imgf000062_0020
and
Figure imgf000062_0019
Figure imgf000062_0021
2.4.2
Because changing one bit in vector
Figure imgf000062_0023
changes the value
Figure imgf000062_0024
by , the values J can be evaluated efficiently by adding
Figure imgf000062_0022
or subtracting the values from the sum J1 and its complement as described below.
Figure imgf000063_0001
Finally, update , if necessary.
Figure imgf000063_0005
2.5 Even interpretation:
2.5.1 Loop for Odd/Even shells Loop for
Figure imgf000063_0018
2.5.1.0 The 24th bit is * * )
Figure imgf000063_0004
2.5.1.1 Set
Figure imgf000063_0003
2.5.1.2 If
Figure imgf000063_0014
2.5.1.2.1 Middle shells
If is odd, change the bit
Figure imgf000063_0002
Figure imgf000063_0006
Evaluate
Figure imgf000063_0015
and update
Figure imgf000063_0019
if necessary. 2.5.1.3 Else If and not all
Figure imgf000063_0016
Figure imgf000063_0017
2.5.1.3.1 Small or Middle shells. Set
Figure imgf000063_0007
Compute the current shell:
Figure imgf000063_0008
If is odd, change the bit
Figure imgf000063_0010
Figure imgf000063_0009
Evaluate J and update φ , if necessary.
Figure imgf000063_0011
Figure imgf000063_0012
2.5.1.3.2 Middle or Large shells. Set
Figure imgf000063_0013
Compute the current shell:
Figure imgf000064_0004
If is odd, change the bit
Figure imgf000064_0005
Figure imgf000064_0031
Evaluate
Figure imgf000064_0001
and update if necessary.
Figure imgf000064_0006
2.5.1.4 Else If and not all \
Figure imgf000064_0007
Figure imgf000064_0008
Figure imgf000064_0009
Small shell. Set
Figure imgf000064_0010
If
Figure imgf000064_0002
.
Evaluate and update if necessary.
Figure imgf000064_0011
Figure imgf000064_0012
2.5.1.4.2 Middle shell.
If change the bit
Figure imgf000064_0014
Figure imgf000064_0013
If is odd, change the bit
Figure imgf000064_0016
Figure imgf000064_0015
Evaluate J and update Φ if necessary.
Figure imgf000064_0017
Figure imgf000064_0019
2.5.1.4.3 Large shell. Set
Figure imgf000064_0018
If is odd, change the bit
Figure imgf000064_0020
Figure imgf000064_0021
Evaluate
Figure imgf000064_0030
and update if necessary.
Figure imgf000064_0023
end of the loop 2.5.1
2.5.2 Else (the special case
Figure imgf000064_0022
2.5.2.1 Small shells: Set
Figure imgf000064_0032
and
Figure imgf000064_0033
Set
Figure imgf000064_0024
and
Figure imgf000064_0025
Set
Figure imgf000064_0026
and
Figure imgf000064_0027
Update if necessary.
2.5.2.2 Large shells: Set and
Figure imgf000064_0028
Figure imgf000064_0029
Figure imgf000064_0003
Update if necessary.
Figure imgf000064_0034
In the sequel, a further exemplary embodiment of a method of the present invention will be explained.
In the initialization step one has to compute the values
Figure imgf000065_0002
for each
Figure imgf000065_0004
and
Figure imgf000065_0003
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
Figure imgf000065_0005
Figure imgf000065_0006
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*
Figure imgf000065_0007
the difference of one bit corresponds to an addition of
Figure imgf000065_0008
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
Figure imgf000065_0009
used here does not involve taking the absolute values of the sums.
An alternative way to compute
Figure imgf000065_0010
and
Figure imgf000065_0011
efficiently is to first count the following sums and differences for each j
Figure imgf000065_0001
After this, all the dot products can be computed as
Figure imgf000066_0009
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
Figure imgf000066_0003
can be evaluated efficiently by counting first the value J
Figure imgf000066_0002
and then adding the values to it, as described in the algorithm above. A
Figure imgf000066_0004
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
Figure imgf000066_0001
Figure imgf000066_0008
vector of signs and compute the values corresponding
Figure imgf000066_0007
to the various shells by adding the values
Figure imgf000066_0005
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
Figure imgf000066_0006
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
Figure imgf000067_0001
Figure imgf000067_0002
of the largest and the second largest values of the set Again, the last element of the vector is
Figure imgf000067_0006
Figure imgf000067_0015
excluded. We denote also
Figure imgf000067_0013
and the indexes of the
Figure imgf000067_0014
smallest and the second smallest values of the set
Figure imgf000067_0012
The following algorithm presents a process for finding the optimal sums
Figure imgf000067_0003
for the shells of the weights .
Figure imgf000067_0019
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
Figure imgf000067_0020
(or and the pair That is, if we take
Figure imgf000067_0011
Figure imgf000067_0004
particular vectors and they can be mapped to
Figure imgf000067_0021
Figure imgf000067_0022
a codeword g Because the complement vector of the
Figure imgf000067_0005
particular vector
Figure imgf000067_0017
is also a binary vector, we can map it to another codeword Furthermore, is the complement
Figure imgf000067_0016
Figure imgf000067_0018
vector of g :
Figure imgf000067_0007
If the Hamming weight of the vector g is d , then by definition of the Hamming weight . The sums
Figure imgf000067_0008
Figure imgf000067_0010
have also following property:
Figure imgf000067_0009
. Therefore
Figure imgf000068_0001
which also holds for the pairs of the norms
Figure imgf000068_0011
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,
Figure imgf000068_0005
Figure imgf000068_0007
it provides a binary vector
Figure imgf000068_0006
that is the complement of the correct
Figure imgf000068_0004
The description of the algorithm of this exemplary method is provided below:
0. Input:
Given at input a real vector
Figure imgf000068_0003
we first expand the input vector by appending an entry
Figure imgf000068_0002
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
Figure imgf000068_0009
initialize the current maxima variable
Figure imgf000068_0008
Denote h the
Figure imgf000068_0010
hexacodeword and b the binary vector corresponding to the current maximum. 2. Shell of the norm
Figure imgf000069_0005
2.1 Even interpretation :
Loop for all those
Figure imgf000069_0006
, in which there are two zero-valued elements and (altogether 30 codewords)
Figure imgf000069_0004
Initialize
Figure imgf000069_0003
Set
Figure imgf000069_0002
If h6 set otherwise set
Figure imgf000069_0011
Figure imgf000069_0007
If is odd, change the bit
Figure imgf000069_0010
Figure imgf000069_0008
Evaluate
Figure imgf000069_0009
and update and if necessary.
Figure imgf000069_0012
Figure imgf000069_0013
Special case
Figure imgf000069_0014
Initialize
Figure imgf000069_0015
Set and
Figure imgf000069_0016
Figure imgf000069_0017
Evaluate and update and if necessary.
Figure imgf000069_0018
Figure imgf000069_0019
Figure imgf000069_0020
2.2 Odd interpretation: Loop for all
Figure imgf000069_0021
Initialize
Figure imgf000069_0022
If t otherwise set
Figure imgf000069_0001
Evaluate
Figure imgf000069_0023
and update
Figure imgf000069_0024
and if necessary.
Figure imgf000069_0025
3. Shell of the norm
Figure imgf000069_0026
3.1 Even interpretation:
Loop for all those in which there are two zero-valued
Figure imgf000069_0027
elements (altogether 45 codewords) Initialize
Figure imgf000069_0030
If h set otherwise set .
Figure imgf000069_0028
Figure imgf000069_0031
Figure imgf000069_0029
Set
Figure imgf000070_0001
If is odd, change the bit
Figure imgf000070_0003
Figure imgf000070_0002
Evaluate J
Figure imgf000070_0004
and update
Figure imgf000070_0005
and
Figure imgf000070_0006
if necessary. Special case
Figure imgf000070_0007
Initialize
Figure imgf000070_0008
*
Set and
Figure imgf000070_0009
Figure imgf000070_0010
Evaluate and update φ and
Figure imgf000070_0012
if necessary.
Figure imgf000070_0039
Figure imgf000070_0011
3.2 Oαd interpretation: Loop for all
Figure imgf000070_0013
Initialize
Figure imgf000070_0014
If
Figure imgf000070_0017
set
Figure imgf000070_0018
otherwise set b
Figure imgf000070_0015
Evaluate and update φ and if necessary.
Figure imgf000070_0016
Figure imgf000070_0019
Figure imgf000070_0020
4. Shell of the norm
Figure imgf000070_0021
4.1 Even interpretation:
Loop for all
Figure imgf000070_0022
, except for A O (altogether 63 codewords )
Figure imgf000070_0023
Initialize
Figure imgf000070_0024
If
Figure imgf000070_0025
set
Figure imgf000070_0026
otherwise set
Figure imgf000070_0040
If
Figure imgf000070_0027
and
Figure imgf000070_0028
Set
Figure imgf000070_0029
If and then
Figure imgf000070_0030
Figure imgf000070_0031
If change the bit
Figure imgf000070_0033
Figure imgf000070_0032
If is odd, change the bit
Figure imgf000070_0034
Figure imgf000070_0035
Evaluate and update and if necessary.
Figure imgf000070_0036
Figure imgf000070_0037
Figure imgf000070_0038
4.2 Odd interpretation Loop for all
Figure imgf000071_0003
I f
Figure imgf000071_0002
Initialize
Figure imgf000071_0004
Set b
Figure imgf000071_0005
Else
Figure imgf000071_0006
Initiali ze
Figure imgf000071_0007
Figure imgf000071_0001
Evaluate
Figure imgf000071_0008
and update
Figure imgf000071_0009
and
Figure imgf000071_0010
if necessary.
5. Output
The output of this algorithm of this exemplary method is
Figure imgf000071_0013
which is the optimal value of (10) for one of the shells, and also the vectors and corresponding to this optimal
Figure imgf000071_0011
Figure imgf000071_0012
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

WHAT IS CLAIMED IS:
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 μ
Figure imgf000078_0003
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
Figure imgf000078_0002
mapping vector in such away that the sum
Figure imgf000078_0001
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
Figure imgf000078_0004
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
Figure imgf000079_0004
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
Figure imgf000079_0002
minimum sum
Figure imgf000079_0001
10. The method according to claim 9, wherein determining a starting binary mapping vector comprises placing a zero at i-th position of the starting binary mapping vector in case
Figure imgf000079_0003
is negative, otherwise placing a one at i-th position.
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
Figure imgf000083_0001
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
Figure imgf000084_0003
mapping vector in such a way that the sum will be as large as possible and the
Figure imgf000084_0002
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
Figure imgf000084_0005
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
Figure imgf000084_0004
providing the minimum sum
Figure imgf000084_0001
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.
PCT/EP2009/050660 2009-01-21 2009-01-21 Neighbor search in codes WO2010083882A1 (en)

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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
CN101610088B (en) System and method for encoding data based on a compression technique with security features
US9847791B2 (en) System and method for compressing data using asymmetric numeral systems with probability distributions
EP2274833B1 (en) Vector quantisation method
US7872598B2 (en) Accelerated decompression
EP2295947A1 (en) Coding, decoding, coding-decoding method, coding-decoding system and relevant device
WO2003054860A1 (en) Method and system for information signal coding using combinatorial and huffman codes
EP1798861A1 (en) LDPC encoding through decoding algorithm
JP5584203B2 (en) How to process numeric data
EP2023341B1 (en) Vector coding/decoding method and apparatus and stream media player
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
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
KR20110033154A (en) Method for counting vectors in regular point networks
van Zanten Index system and separability of constant weight Gray codes
Vasilache et al. Robust indexing of lattices and permutation codes over binary symmetric channels
US7791511B1 (en) Constant weight coding of signals based on conjugate dissections
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
Huang et al. VQ Coding in Data Hiding Using Correlated Neighboring Blocks in Security Performance
CN116018758A (en) Apparatus for encoding and decoding integer sequences, methods for encoding and decoding integer sequences and computer programs for implementing these methods
Woo et al. Fast codeword search for vector quantization using a multi-stage approach

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