WO2010078964A1 - Cyclic leader vectors for search of binary cyclic code - Google Patents

Cyclic leader vectors for search of binary cyclic code Download PDF

Info

Publication number
WO2010078964A1
WO2010078964A1 PCT/EP2009/050202 EP2009050202W WO2010078964A1 WO 2010078964 A1 WO2010078964 A1 WO 2010078964A1 EP 2009050202 W EP2009050202 W EP 2009050202W WO 2010078964 A1 WO2010078964 A1 WO 2010078964A1
Authority
WO
WIPO (PCT)
Prior art keywords
cyclic
vector
shell
leader
codewords
Prior art date
Application number
PCT/EP2009/050202
Other languages
French (fr)
Inventor
Adriana Vasilache
Ioan Tabus
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/050202 priority Critical patent/WO2010078964A1/en
Publication of WO2010078964A1 publication Critical patent/WO2010078964A1/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

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 of the codebook, C 0 is smaller than that of the input space, allowing the representation of the input data on fewer bits.
  • 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. Storing of a complete codebook of a code may require a huge amount of storage capacity.
  • a method comprising selecting a shell of a binary cyclic code, wherein each shell is associated with a set of binary codewords having the same Hamming weight, selecting at least one cyclic leader vector of the selected shell, wherein the codewords of each shell of the code can be described by a set of cyclic leader vectors and by cyclic shifting each cyclic leader vector, and searching for a codeword in a set of codewords by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords.
  • a first apparatus comprising a processor configured to select a shell of a binary cyclic code, wherein each shell is associated with a set of binary codewords having the same Hamming weight; to select at least one cyclic leader vector of rhe selected shell, wherein the codewords of each shell of the code can be described by a set of cyclic leader vectors and by cyclic shifting each cyclic leader vector; and to search for a codeword in a set of codewords by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords.
  • a second apparatus comprising means for selecting a shell of a binary cyclic code, wherein each shell is associated with a set of binary codewords having the same Hamming weight; means for selecting at least one cyclic leader vector of the selected shell, wherein the codewords of each shell of the code can be described by a set of cyclic leader vectors and by cyclic shifting each cyclic leader vector; and means for searching for a codeword in a set of codewords by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords.
  • 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 select a shell of a binary cyclic code, wherein each shell is associated with a set of binary codewords having the same Hamming weight; to select at least one cyclic leader vector of the selected shell, wherein the codewords of each shell of the code can be described by a set of cyclic leader vectors and by cyclic shifting each cyclic leader vector; and to search for a codeword in a set of codewords by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords.
  • This invention comprises selecting a shell of a binary cyclic code, wherein each shell is associated with a set of binary codewords having the same Hamming weight.
  • the Hamming weight may be defined as a number of non-zero entries in a vector, for example, as the number of ones in a binary code vector comprising elements with values one and zero.
  • N-I other codewords from the same shell can be obtained through cyclic shifts.
  • N-I other codewords can be obtained through cyclic shifting, wherein the cyclical shift value maybe in the range from 1 to N-I.
  • the codeword C 0 may be transferred to the new codeword
  • M/N codewords of the M codewords may be used for generating the entire shell.
  • the vectors of these M/N codewords may represent cyclic leader vectors, and the set of codewords for the entire shell may be obtained through all the cyclic shifts for each cyclic leader vector.
  • each of defined M/N cyclic leader vector may be replaced with a different codevector, wherein the different codevector is obtained through cyclic shifting the corresponding cyclic leader vector which is to be replaced.
  • each shell of the binary code may be defined by a set of cyclic leader vectors, wherein such set of cyclic leader vectors may be considered as generating each a cyclic leader class, and, further, the codebook of the entire binary code may be represented based on the set of cyclic leader vectors for each shell of the binary code.
  • the codebook may be represented by the set of cyclic leader classes.
  • the binary cyclic code can be described by a set of cyclic leader vectors for each shell and by cyclic shifting each cyclic leader vector.
  • the search may not be restricted to the one selected shell, but the search may also comprise performing a search for at least one further shell.
  • the binary cyclic code may be a Golay code, or any cyclic BCH code, or a Reed-Solomon or any other binary code fulfilling the above-mentioned definition of a cyclic code.
  • At least one cyclic leader vector of the selected shell may be selected.
  • the search for a codeword in a set of codewords is carried out by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords .
  • the set of codewords can be represented by the at least one selected cyclic leader vector and by the codewords obtained through cyclic shifts of each of the at least one selected cyclic leader vectors.
  • the search may be performed for a decoding, an encoding or a quantization process, wherein an input vector should be decoded, encoded or quantized, respectively.
  • the search may be performed for an input vector comprising values, e.g. real valued values, which have to be replaced by an approximation in a codeword of the code, thus, the search may perform a kind of neighbor search for the nearest neighbor in the set of codewords.
  • reduced computational complexity of vector quantization may be achieved - both in terms of storage space requirement (of the codebook) and the actual computational load during the codebook search.
  • the values of the input vector are positive real valued and the original signs are separately encoded.
  • each value c ; of a codeword is from the set of values C 1 e ⁇ 0,1 ⁇
  • the search algorithm may be modified accordingly.
  • an input 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.
  • the received vector is compared with the set of codewords in order to find a neighbor codeword.
  • a quality metric between an input vector and codeword may be applied in order to search for a nearest or a near codeword with respect to the input vector.
  • this quality metric may depend on a scalar product between an input vector v and a binary vector c of a codeword of the binary cyclic code, wherein the quality metric may be denoted as follows:
  • This metric increases when the sum (0) increases.
  • searching for the highest quality metric provided by equation (0) may be used for optimizing the neighbor search.
  • This metric is inferred from the Euclidean distance between input vector v and binary vector c_ and it is valid because all the codewords from one shell have the same weight.
  • the quality metric may be modified by subtracting a further value d n (c) from the sum in equation (0) in the following way:
  • any other well-suited quality metric may be used for performing a neighbor search between a given input vector and codewords of the set of codewords.
  • the present invention may be used for finding a nearest neighbor for an input vector using a binary codebook defined by the at least one selected shell, and the set of cyclic leader vectors for each of this at least one selected shell, and depending on the number of cyclic shifts for each of the cyclic leader vectors .
  • the number of selected cyclic leader vectors may be adjusted in the range from 1 to the maximum number of cyclic leader vectors of the selected shell.
  • the cyclic shifting comprises adjusting the number of one of the at least one cyclic shifts of one of the at least one selected at least one cyclic leader vector in the range from 1 to a maximum number of cyclic shifts based on the length of a codevector of the codebook.
  • the size of the set of codewords for the selected shell may be adjusted based on the number of selected cyclic leader vectors and on the number of the cyclic shift operations performed for each of the selected cyclic leader vectors. For instance, in case the search is to be performed in the entire set of codewords of the selected shell, each cyclic leader vector associated with the shell is selected, implying that the maximum number of selected cyclic leader vectors is chosen, and the number of cyclic shift operations is set to N-I cyclic shift operations of one-element for each of the cyclic leader vectors, so that each cyclic leader vector is shifted through all corresponding cyclic codewords.
  • the search considers all determined cyclic shifts for each of the selected at least one cyclic leader vectors.
  • this can be performed by using an outer loop and an inner loop, as described below.
  • the term loop should not be understood in a limiting way, a loop may comprise a series of operations, wherein this series of operations may correspond to an unrolled loop.
  • an outer loop over all the selected at least one cyclic leader vector is performed, and an inner loop configured to carry out the at least one cyclic shift with respect to the actual cyclic leader vector defined by the outer loop is performed.
  • one cyclic leader vector is selected from the selected at least one cyclic leader vector. Then, the number and extent of cyclic shifts for the selected one cyclic leader vector may be determined.
  • the extent of a cyclic shift may be one element, implying cyclically shifting each element of a cyclic leader vector by one position, or the extent may be n elements - with n>l - implying that each element of a cyclic leader vector are cyclically shifted by n positions.
  • a counter i for the inner loop may be reset, and the search may be performed based on the codeword corresponding to the i-th cyclic shift of the selected one cyclic leader vector.
  • the cyclic leader vector itself (defined by the outer loop) may represent the codeword which is used for performing the search.
  • the counter i is incremented.
  • the search may be performed based on the codeword corresponding to the i-th cyclic shift of the selected on cyclic leader vector.
  • the inner loops may exit, when i reaches a preset number of cyclic shift operations.
  • each shift may represent a one-element cyclic shift, but it also may represent an m-element cyclic shift with m>l.
  • the extent of the cyclic shift may be determined to be the same for each of the shift operations (for each value of i) , or the extent of the i-th cyclic shift may be determined to vary (based on value of i) .
  • the determined number and extent of cyclic shifts may be different from one cyclic code vector to another.
  • the search of a codeword comprises: determining a quality metric between an input vector and each codeword of the set of codewords, and selecting the codeword providing the best quality metric.
  • this determined quality metric may be checked whether this determined quality metric is better than a stored best quality metric.
  • this best quality metric may be associated with a subset of codewords associated with a selected one cyclic leader vector, or it may be associated with the selected shell, or it may be associated with the entire codebook of the code. Accordingly, before the search in the subset of codewords, or in the selected shell, or in the entire codebook is started, respectively, the best quality metric may be reset. For instance, if the search is performed for the entire codebook, a quality metric may be checked for the nearest neighbors for each shell .
  • the best quality metric may be updated with the new quality metric including storing a representative for the actual codeword, e.g. by means of storing information about the actual cyclic leader vector and about the cyclic shift.
  • the quality metric is based on a scalar product between the input vector and the binary vector of the codeword.
  • elements of a shift vector are assigned to elements of the input vector before the inner loop is entered; wherein the inner loop comprises: determining the quality metric based on the shift vector and the cyclic leader vector defined by the outer loop; then checking whether a further cyclic shift is to be performed; and if so, performing a cyclic shift with respect to elements of the shift vector and jumping back to the beginning of the inner loop, otherwise exiting the inner loop.
  • the elements of the input vector V [V 05 V 151115 V N-1 ] may be copied to shift vector v' .
  • the cyclic leader vector defined by the outer loop may be represented by l_ .
  • the quality metric may be determined by calculating the scalar product between both vectors v' and l_ .
  • this best quality metric may be associated with a subset of codewords associated with the selected one cyclic leader vector, or it may be associated with the selected shell, or it may be associated with the entire codebook of the code. Accordingly, before the search in the subset of codewords, or in the selected shell, or in the entire codebook is started, the best quality metric is reset.
  • the best quality metric may be updated by the determined metric. Furthermore, this may include storing a representative for the actual codeword resulting in the determined quality metric, e.g. by means of storing information about the actual cyclic leader vector and about the cyclic shift.
  • the routine proceeds with performing the cyclic shift with respect to elements of vector v' , wherein the elements in vector v' may be cyclic shifted by one position. But for instance, the cyclic shift may be also performed by shifting n-positions, wherein n>l holds. Then, the inner loop begins again.
  • elements of a shift vector are assigned to elements of the cyclic leader vector defined by the outer loop before the inner loop is entered; wherein the inner loop comprises: determining the quality metric based on the shift vector and the input vector; then checking whether a further cyclic shift is to be performed; and if so, performing a cyclic shift with respect to elements of the shift vector and jumping back to beginning of the inner loop, otherwise exiting the inner loop.
  • the elements of the cyclic leader vector may be copied to shift vector c' .
  • the quality metric may be determined with respect to vector c' and the input vector y. E.g., this may be performed by calculating the scalar product between both vectors.
  • a cyclic shift is to be performed, it is proceeded with performing the cyclic shift with respect to elements of vector c' , wherein the elements in vector c' may be cyclic shifted by one position, or, for instance, the cyclic shift may also be performed by shifting m-positions, wherein m>l holds .
  • d pointer representatives are initialized before the inner loop is entered, d representing the number of ones in the cyclic leader defined by the outer loop, so that the d pointer representatives references to elements in the input vector by indicating the positions of elements of the cyclic leader vector having the value one; wherein the inner loop comprises: determining the quality metric by calculating the sum of the elements in the input vector which are referenced by the d pointer representatives, then checking whether a further cyclic shift is to be performed; and if so, incrementing the indicating positions of the d pointer representatives and jumping back to the beginning of the inner loop, otherwise exiting the inner loop.
  • Determining the quality metric may be performed by calculating the sum of the elements in the input vector v which are referenced by the d pointer representatives. Of course, any other well suited quality metric may be applied.
  • the stored best quality metric may be updated as explained above.
  • this exemplary embodiment proceeds with incrementing the indicating positions of the d pointer representatives. For instance, this incrementing may be performed by adding the value "1" to the d indicating positions, or by adding integer value m to the d indicating positions, m>l, in order to perform a cyclic shift of m-positions . Furthermore, after incrementing the d indicating positions, a modulo N operation may be performed to the indicating positions, wherein N represents the N-dimensional space of the code, in order to ensure the cyclic shift. Or, as an alternative, the elements v o ...v N _, input vector may be attached to the input vector as N further elements v N ...v 2Ty _,.
  • the selected shell represents a first shell
  • the method comprising exploiting the search in a set of codewords of a second shell, the second shell representing a complementary shell with respect to the first shell, wherein in the complementary shell for each codeword of the other shell there exists a complementary codeword, wherein the set of codewords of the second shell is represented by complementary codewords of the set of codewords of the first shell.
  • each value of a codevector of the binary cyclic code may be from a set of values ⁇ a,b ⁇ , such that in a complementary codeword each value a is replaced with value b and each value b is replaced with value a compared to the codeword of the first shell .
  • value b may have value "1" and value a may have value "0" or value "-1".
  • this codeword in the second shell may be obtained by replacing the ones and zeros in the binary vector of a codeword of the first shell with zeros and ones, respectively, in order to determine the quality metric for the complementary case between this codeword and the input vector.
  • the complementary codeword in the second shell may also be used for performing the search.
  • the quality metric for the complementary case may be obtained by subtracting a quality metric obtained with respect to the first shell (e.g. as mentioned above) from the sum over each element of the input
  • the quality metric for the complementary case may be equal to minus the quality metric for the first shell, and it can be expressed
  • the search and the quality metric determined for the first shell can be exploited to perform a low-complexity search in the second shell.
  • the method is repeated for at least one further shell of the binary cyclic code.
  • the ones of the cyclic leader vectors of a set of cyclic leader vectors of one shell may be arranged so that the ones in the codewords of these cyclic leader vectors are approximately evenly covering the N-dimensional space of the code, N depending on the length of the codewords of the code.
  • a code providing a different coverage of the N-dimensional based may be designed, for example to match the input signal characteristics .
  • this may enhance the result of the search if not all the cyclic shifts are considered in the search.
  • the term approximately may also include the meaning exact.
  • the binary cyclic code represents a Golay code.
  • 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. 2 depicts a schematic illustration of a second exemplary embodiment of a method according to the present invention
  • Fig. 3a depicts exemplary vectors with respect to the third exemplary embodiment of a method according to the present invention
  • Fig. 3b depicts exemplary vectors with respect to the fourth exemplary embodiment of a method according to the present invention
  • Fig. 4a depicts a schematic illustration of a third exemplary embodiment of a method according to the present invention.
  • Fig. 4b depicts a schematic illustration of a fourth exemplary embodiment of a method according to the present invention.
  • Fig. 5 depicts a schematic illustration of a fifth exemplary embodiment of a method according to the present invention.
  • Fig. 6a depicts a schematic illustration of a sixth exemplary embodiment of a method according to the present invention.
  • Fig. ⁇ b depicts exemplary pointer representatives with respect to the sixth exemplary embodiment of a method according to the present invention
  • Fig. 7 depicts a schematic illustration of an exemplary embodiment of a readable medium according to the present invention .
  • Fig. Ia depicts a schematic flowchart of a first exemplary embodiment of a method according to the present invention.
  • This method comprises selecting a shell of a binary cyclic code (as indicated by reference sign 110) , wherein each shell is associated with a set of binary codewords having the same Hamming weight.
  • the Hamming weight is defined by the number of ones in a binary code vector comprising elements with values one and zero.
  • the cyclic shifting may be performed in the other direction.
  • M/N codewords of the M codewords may be used for generating the entire shell.
  • the vectors of these M/N codewords may represent cyclic leader vectors, and the set of codewords for the entire shell may be obtained through all the cyclic shifts for each cyclic leader vector.
  • each of the defined M/N cyclic leader vector may be replaced with a different codevector, wherein the different codevector is obtained through cyclic shifting the corresponding cyclic leader vector which is to be replaced.
  • each shell of the binary code may be defined as a set of cyclic leader vectors, and, further, the codebook of the entire binary code may be represented based on the set of cyclic leader vectors for each shell of the binary code.
  • the binary cyclic code can be described by a set of cyclic leader vectors and by cyclic shifting each cyclic leader vector.
  • the binary cyclic code may be a Golay code, or any cyclic BCH code, or a Reed-Solomon or any other binary code fulfilling the above-mentioned definition of a cyclic code .
  • the search for a codeword in a set of codewords is carried out by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords.
  • the set of codewords is represented by the at least one selected cyclic leader vector and by the codewords obtained through cyclic shifts of each of the at least one selected cyclic leader vectors.
  • the complete set of codewords does not have to be stored, because it can be constructed by means of the cyclic leader vectors and the corresponding cyclic shifts, which results in reduced storage space requirement.
  • the size of the set of codewords for the selected shell may be adjusted based on the number of selected cyclic leader vectors and on the number of the cyclic shift operations performed for each of the selected cyclic leader vectors. For instance, in case the search is to be performed in the entire set of codewords of the selected shell, each cyclic leader vector associated with the shell is selected, implying that the maximum number of selected cyclic leader vectors is chosen, and the number of cyclic shift operations is set to N-I cyclic shift operations of one-element for each of the cyclic leader vectors, so that each cyclic leader vector is shifted through all corresponding cyclic codewords.
  • the search may be performed for a decoding, an encoding or a quantization process, wherein an input vector should be decoded, encoded or quantized, respectively.
  • 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 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 apparatus 170 represents 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.
  • an input 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.
  • the received vector is compared with the set of codewords in order to find a neighboring codeword.
  • 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 280 configured search for the nearest vector of code with respect to a distorted input vector which is received at input 181.
  • a quality metric between an input vector and codeword may be applied in order to search for a nearest or a near codeword with respect to the input vector.
  • this quality metric may depend on a scalar product between an input vector v and a binary vector c of a codeword of the binary cyclic code, wherein the quality metric may be denoted as follows :
  • the quality metric may be modified by subtracting a further value d H (c) from the sum in equation (i) in the following way:
  • the further value d H (c) represents a constant value for each shell.
  • any other well-suited quality metric may be used for performing a neighbor search between a given input vector and codewords of the set of codewords.
  • the present invention may be used for finding a nearest neighbor for an input vector using a binary codebook defined by the at least one selected shell, and the set of cyclic leader vectors for each of this at least one selected shell, and depending on the number of cyclic shifts for each of the cyclic leader vectors.
  • Fig. 2 depicts a schematic flowchart of a second exemplary embodiment of a method according to rhe present invention, which is based on the first exemplary embodiment depicted in Fig. Ia.
  • the second exemplary embodiment comprises performing an outer loop over all the selected at least one cyclic leader vector, as indicated by arrow 215, and it comprises performing an inner loop (indicated by reference sign 245) configured to carry out the at least one cyclic shift with respect to the actual cyclic leader vector defined by the outer loop.
  • the method may be used for the search for a codeword in a set of codewords for the selected shell as indicated by reference sign 130 of the first exemplary method in Fig. Ia.
  • the exemplary flowchart of Fig. 2 may be inserted between reference signs 125 and 135 in Fig. Ia.
  • one cyclic leader vector is selected from the selected at least one cyclic leader vector, as indicated by reference sign 210. Then, the number and extent of cyclic shifts for the selected one cyclic leader vector is set (as indicated by reference sign 220) . This setting of the number and extent of cyclic shifts must not necessarily be performed at this position of the exemplary flowchart depicted in Fig. 2, it can also be set before the method is carried out or at another suited moment. Thus, box 220 is optional.
  • a counter i for the inner loop is reset, as indicated by reference sign 230, and the search is performed based on the codeword corresponding to the i-th cyclic shift of the selected one cyclic leader vector.
  • the cyclic leader vector itself represents the codeword which is used for performing the search.
  • each shift may represent a one-element cyclic shift, but it also may represent an n-element cyclic shift with n>l, possibly with varying value of n depending on the value of the counter for the inner loop i.
  • the quality metric between a given vector and this codeword may be determined, and furthermore, this quality metric may be compared to a stored quality metric representing the best quality metric determined so far with respect to the selected shell or, alternatively, with respect to the entire codebook of the binary code.
  • the best quality metric may be updated with the new quality metric including storing a representative for the actual codeword resulting in the determined quality metric, e.g. by means of storing information about the actual cyclic leader vector and about the cyclic shift.
  • this comparison of the determined quality metric with the stored best quality metric may be performed during each step 240.
  • the search performed in box 240 may comprise evaluate the quality metric for the codeword corresponding to the i-th cyclic shift of the selected one cyclic leader vector.
  • the counter i is incremented (e.g. by value 1), as indicated by reference sign 250, and it is checked whether another cyclic shift is to be performed depending on the counter i and the number of cyclic shifts, as indicated by reference sign 260. If there is another cyclic shift, the method returns to perform the search based on the codeword corresponding to the next i-th cyclic shift of the selected one cyclic leader vector by returning to the inner loop again, as depicted by arrow 245.
  • the search for a codeword in the selected shell indicated by reference sign 130 in Fig. Ia is performed by repeating the chain between reference signs 235 und 265 for each of the selected one cyclic leader vector.
  • Fig. 4a depicts a schematic flowchart of a third exemplary embodiment of a method according to the present invention, which is based on the second exemplary embodiment depicted in Fig. 2.
  • the third exemplary method may be used for performing the search on the codeword corresponding to the i-th cyclic shift of the selected one cyclic leader vector as indicated by reference sign 240 of the second exemplary method in Fig. 2, implying that the third exemplary embodiment may be inserted between reference signs 235 and 265 depicted in Fig. 2.
  • the elements of the input vector may be copied to shift vector v' .
  • the selected one cyclic leader vector is represented by l_ .
  • the quality metric is determined with respect to vector v' and the selected one cyclic leader vector (denoted by reference sign 440) . E.g., this is performed by calculating the scalar product between the vectors v' and l_ .
  • this best quality metric may be associated with a subset of codewords associated with the selected one cyclic leader vector, or it may be associated with the selected shell, or it may be associated with the entire codebook of the code. Accordingly, before the search in the subset of codewords, or in the selected shell, or in the entire codebook is started, respectively, the best quality metric is reset (not depicted in the Figs . ) .
  • the method proceeds at 442 with updating the best quality metric by the determined metric. Furthermore, this may include storing a representative for the actual codeword resulting in the determined quality metric, e.g. by means of storing information about the actual cyclic leader vector and about the cyclic shift (e.g. by storing the number i) . Then the method jumps for incrementing i, as indicated by reference sign 250 and as explained with respect to the second exemplary embodiment.
  • the method proceeds at 250 by incrementing i .
  • the method proceeds with performing the cyclic shift with respect to elements of vector v' , as indicated by reference sign 450 in Fig. 4a.
  • the cyclic shift may be also performed by shifting n-positions, wherein n>l holds. Then, the quality metric is determined with respect to vector v' 331 and the method proceeds with box 441 as explained above. Thus, as indicated by reference sign 310 in Fig. 3a, the cyclic shift is performed on the vector v' until the first loop is stopped at by decision 260 in Fig. 4a.
  • Fig. 4b depicts a schematic flowchart of a fourth exemplary embodiment of a method according to the present invention, which is based on the second exemplary embodiment depicted in Fig. 2.
  • the fourth exemplary method may be used for performing the search on the codeword corresponding to the i-th cyclic shift of the selected one cyclic leader vector as indicated by reference sign 240 of the second exemplary method in Fig. 2.
  • the fourth exemplary embodiment may be inserted between reference signs 235 and 265 depicted in Fig. 2.
  • the method comprises assigning elements of a shift vector c' to elements of the selected one cyclic leader vector
  • I [I 05 I 1 ,...,I N-1 ] , as indicated by reference sign 340 in Fig. 3b (and denoted by reference sign 410' ) .
  • the elements of the cyclic leader vector may be copied to shift vector c' .
  • the quality metric is determined with respect to vector c/ and the input vector v (denoted by reference sign 440' ) . E.g., this is performed by calculating the scalar product between the vectors c' and v .
  • Updating of the best quality metric may be performed in the same way as in the third exemplary embodiment depicted in Fig. 4b.
  • a cyclic shift is to be performed, the method proceeds with performing the cyclic shift with respect to elements of vector c' , as indicated by reference sign 450' in Fig. 4b.
  • the cyclic shift may also be performed by shifting n-positions, wherein n>l holds.
  • the quality metric is determined with respect to vector v' 341 and the method proceeds with box 441 as explained above.
  • the cyclic shift is performed on the vector v' until the first loop is stopped at by decision 260 in Fig. 4b.
  • both the cyclic shift according to the fourth exemplary embodiment and the cyclic shift according to the third exemplary embodiment have the same effect with respect to the quality metric depending on the codeword corresponding to the i-th cyclic shift of the selected one cyclic leader vector and on the given input vector.
  • the elements of the input vector are shifted in a first direction (e.g. right direction, see vectors v' )
  • the elements of the cyclic leader vector are shifted in a second direction being opposite to the first direction (e.g. left direction, see vectors c' ) .
  • the scalar product of 1 and v' in the third exemplary embodiment corresponds to the scalar product of v and c' in the fourth embodiment for each cyclic shift i.
  • Fig. 5 depicts a schematic flowchart of a fifth exemplary embodiment of a method according to the present invention, which is based on the second exemplary embodiment depicted in Fig. 2.
  • the selected shell represents a first shell
  • the method comprises exploiting the search in a set of codewords of a second shell, the second shell representing a complementary shell with respect to the first shell, wherein in the complementary shell for each codeword of the other shell there exists a complementary codeword such that the zeros are replaced with ones and the ones are replaced with zeros, wherein the set of codewords of the second shell is represented by complementary codewords of the set of codewords of the first shell.
  • Exploiting the search in a set of codewords of the second shell is performed by the fifth exemplary embodiment depicted in Fig. 5, wherein this fifth exemplary embodiment may be inserted between reference signs 446 and 448 depicted in Fig. 4a or Fig 4b.
  • the search is performed based on the codeword obtained by performing to the i-th cyclic shift of the selected one cyclic leader vector (see reference sign 240 in Fig. 2) in view of the input vector.
  • each value of a codevector of the binary cyclic code may be from a set of values ⁇ a,b ⁇ , such that in a complementary codeword each value a is replaced with value b and each value b is replaced with value a compared to the codeword of the first shell.
  • value b may have value "1" and value a may have value "0" or value "-1".
  • ⁇ his codeword in the second shell may be obtained by replacing the zeros and ones of in the binary vector of the codeword of the first shell with ones and zeros, respectively, in order to determine the quality metric for the complementary case between this codeword and the input vector.
  • the quality metric for the complementary case may be obtained by subtracting the quality metric obtained in step 440 or 440 f
  • the quality metric for the complementary case may be equal to minus the quality metric for the first shell, and it can be expressed
  • this best complementary quality metric may be associated with a subset of complementary codewords associated with the selected one cyclic leader vector, or it may be associated with the second shell. In case it may be associated with the entire codebook of the code, the steps 520 and 530 may be directly replaced by steps 441 and 442. Accordingly, before the search in the complementary subset of codewords, or in the second shell is started, respectively, the best complementary quality metric is reset (not depicted in the Figs. ) .
  • the method proceeds at 530 with updating the best complementary quality metric by the determined metric. Furthermore, this may include storing a representative for the actual codeword resulting in the determined quality metric, e.g. by means of storing information about the actual cyclic leader vector and about the cyclic shift (e.g. by storing the number i) and/or the second shell. Then the method jumps to 448 in order to proceed with one of the third or fourth exemplary embodiments.
  • the method proceeds at 448 with one of the third or fourth exemplary embodiments.
  • this code when the code represents a Golay Code of dimension 23, this code has shells of weight equal to 0, 7, 8, 11, 12, 15, 16, and 23.
  • the shells having weight 0 and 23 have only one code word corresponding to a vector with all elements having a value zero and a vector with all elements having a value one, respectively, and they may be considered trivial.
  • the shells 7, 8, 11, 12, 15 and 16 have 253, 506, 1288, 1288, 506, and 253 codewords, respectively, and the pairs of shell 7-16, 8-15, and 11-12 are complementary in the above-described sense, implying that for each codeword in the first shell there exist a codeword in the second shell such that the zeros are replaced with ones and the ones are replaced with zeros.
  • Fig. 6a depicts a schematic flowchart of a sixth exemplary embodiment of a method according to the present invention, which is based on the second exemplary embodiment depicted in Fig. 2.
  • the sixth exemplary method may be used for performing the search on the codeword corresponding to the i-th cyclic shift of the selected one cyclic leader vector as indicated by reference sign 240 of the second exemplary method in Fig. 2.
  • the sixth exemplary embodiment may be inserted between reference signs 235 and 265 depicted in Fig. 2.
  • d pointer representatives are initialized before the inner loop is entered.
  • the value d represents the number of ones in the cyclic leader defined by the outer loop, wherein initializing causes that the d pointer representatives references to elements in the input vector by indicating the positions of elements of the cyclic leader vector having the value one.
  • the first pointer representative p 0 references to the element in the 0-th position of the input vector v
  • the second pointer representative p references to the element in the 5-th position of the input vector y, and so on for the remaining pointer representatives.
  • the indicating positions 650 of the pointer representatives indicate the positions of elements in the input vector v in accordance with the positions of the ones of the cyclic leader vector.
  • the inner loop comprises determining the quality metric by calculating the sum of the elements in the input vector v which are referenced by the d pointer representatives (as indicated by reference sign 640 in Fig. 6a) .
  • any other well suited quality metric may be applied.
  • the stored best quality metric may be updated in accordance with reference signs 441 and 442, as explained with respect to the third and fourth exemplary embodiments.
  • the search may be exploited to the complementary shell by inserting fifth exemplary embodiment depicted in Fig. 5 between reference signs 446 and 448 shown in Fig. 6a.
  • the sixth exemplary embodiment proceeds with incrementing the indicating positions of the d pointer representatives. For instance, this incrementing may be performed by adding the value "1" to the d indicating positions, or by adding integer value m to the d indicating positions, m>l, in order to perform a cyclic shift of m-positions . Furthermore, after incrementing the d indicating positions, a modulo N operation may be performed to the indicating positions, wherein N represents the N-dimensional space of the code, in order to ensure the cyclic shift. Or, as an alternative, the elements V 0 ...V N-1 input vector may be attached to the input vector as N further elements v N ...V 2N-1 .
  • the codewords of shell 7 may be ⁇ escribed by the following integer array, ⁇ epicted in the C language notation:
  • Each row of the printed array id7 [ ] shows the positions of the ones of one cyclic leader vector being associated with the shell 7, wherein the other positions of the cyclic leader vectors are filled with zeros.
  • Similar integer arrays may be stored for shell 8 and 11, respectively, so that shells 7, 8 and 11 may be constructed by means of the stored cyclic leader vectors, and wherein the complementary shells 16, 15 and 12 can be constructed as described above.
  • codewords of shell 8 may be described by the following exemplary integer array:
  • codewords of shell 11 may be described by the following exemplary integer array:
  • integer arrays defining the positions of the ones of cyclic leader vectors may be used in order to initialize the pointer representatives of the sixth exemplary embodiment,, as indicated by reference sign 610 in Fig. 6a.
  • Fig. 7 is a schematic illustration of an embodiment of a readable medium 700 according to the fourth aspect of the present invention.
  • the readable medium 700 is a computer-readable medium.
  • a program 701 according to the fifth aspect of the present invention is stored thereon.
  • the program 701 comprises program code 702.
  • the instructions of the program code 702 cause a processor to select a shell of a binary cyclic code, wherein each shell is associated with a set of binary codewords having the same Hamming weight; to select at least one cyclic leader vector of the selected shell, wherein the codewords of each shell of the code can be described by a set of cyclic leader vectors and by cyclic shifting each cyclic leader vector; and to search for a codeword in a set of codewords by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords.
  • the logical blocks in the schematic block diagrams as well as the flowchart and algorithm steps presented in the above description may at least partially be implemented in electronic hardware and/or computer software, wherein it depends on the functionality of the logical block, flowchart step and algorithm step and on design constraints imposed on the respective devices and/or apparatuses to which degree a logical block, a flowchart step or algorithm step is implemented in hardware or software.
  • the presented logical blocks, flowchart steps and algorithm steps may for instance be implemented in one or more digital signal processors, application specific integrated circuits, field programmable gate arrays or other programmable devices .
  • Said computer software may be stored in a variety of storage media of electric, magnetic, electro-magnetic or optic type and may be read and executed by a processor, such as for instance a microprocessor.
  • a processor such as for instance a microprocessor.
  • said processor and said storage medium may be coupled to interchange information, or the storage medium may be included in the processor.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)

Abstract

It is disclosed to select a shell of a binary cyclic code, wherein each shell is associated with a set of binary codewords having the same Hamming weight; to select at least one cyclic leader vector of the selected shell, wherein the codewords of each shell of the code can be described by a set of cyclic leader vectors and by cyclic shifting each cyclic leader vector; and to search for a codeword in a set of codewords by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords.

Description

Cyclic leader vectors for search of binary cyclic code
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 of the codebook, C0, 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 using 1 = 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 = 1/k bits per sample, where k is the data 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. Storing of a complete codebook of a code may require a huge amount of storage capacity.
SUMMARY OF SOME EMBODIMENTS OF THE INVENTION
According to a first aspect of the present invention, a method is described, comprising selecting a shell of a binary cyclic code, wherein each shell is associated with a set of binary codewords having the same Hamming weight, selecting at least one cyclic leader vector of the selected shell, wherein the codewords of each shell of the code can be described by a set of cyclic leader vectors and by cyclic shifting each cyclic leader vector, and searching for a codeword in a set of codewords by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords.
According to a second aspect of the present invention, a first apparatus is described, comprising a processor configured to select a shell of a binary cyclic code, wherein each shell is associated with a set of binary codewords having the same Hamming weight; to select at least one cyclic leader vector of rhe selected shell, wherein the codewords of each shell of the code can be described by a set of cyclic leader vectors and by cyclic shifting each cyclic leader vector; and to search for a codeword in a set of codewords by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords.
According to a third aspect of the present invention, a second apparatus is described, comprising means for selecting a shell of a binary cyclic code, wherein each shell is associated with a set of binary codewords having the same Hamming weight; means for selecting at least one cyclic leader vector of the selected shell, wherein the codewords of each shell of the code can be described by a set of cyclic leader vectors and by cyclic shifting each cyclic leader vector; and means for searching for a codeword in a set of codewords by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords.
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 select a shell of a binary cyclic code, wherein each shell is associated with a set of binary codewords having the same Hamming weight; to select at least one cyclic leader vector of the selected shell, wherein the codewords of each shell of the code can be described by a set of cyclic leader vectors and by cyclic shifting each cyclic leader vector; and to search for a codeword in a set of codewords by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords.
This invention comprises selecting a shell of a binary cyclic code, wherein each shell is associated with a set of binary codewords having the same Hamming weight. The Hamming weight may be defined as a number of non-zero entries in a vector, for example, as the number of ones in a binary code vector comprising elements with values one and zero.
By the definition of a cyclic binary code, for a given codeword an N-dimensional cyclic binary code, N-I other codewords from the same shell can be obtained through cyclic shifts. For instance, from a given first codevector C0 =[co,c1,c2,c3,...,cN_3,cN_2,cN_1] , N-I other codewords can be obtained through cyclic shifting, wherein the cyclical shift value maybe in the range from 1 to N-I. For instance, assuming an exemplary cyclical shift value of 3, implying shifting 3 positions with respect to the vector elements, the codeword C0 may be transferred to the new codeword
C3 =[c3,c4,...,cN j,C0,C1,c,] , wherein both the codewords C0 and C3 have the same Hamming weight. Of course, the cyclic shifting may be performed in the other direction.
Thus, for instance, for each shell comprising M cyclic codewords of dimension N, M/N codewords of the M codewords may be used for generating the entire shell. The vectors of these M/N codewords may represent cyclic leader vectors, and the set of codewords for the entire shell may be obtained through all the cyclic shifts for each cyclic leader vector. Furthermore, each of defined M/N cyclic leader vector may be replaced with a different codevector, wherein the different codevector is obtained through cyclic shifting the corresponding cyclic leader vector which is to be replaced.
Accordingly, each shell of the binary code may be defined by a set of cyclic leader vectors, wherein such set of cyclic leader vectors may be considered as generating each a cyclic leader class, and, further, the codebook of the entire binary code may be represented based on the set of cyclic leader vectors for each shell of the binary code. In other words, the codebook may be represented by the set of cyclic leader classes. Thus, the binary cyclic code can be described by a set of cyclic leader vectors for each shell and by cyclic shifting each cyclic leader vector. Thus, the search may not be restricted to the one selected shell, but the search may also comprise performing a search for at least one further shell.
For instance, the binary cyclic code may be a Golay code, or any cyclic BCH code, or a Reed-Solomon or any other binary code fulfilling the above-mentioned definition of a cyclic code.
After a shell of the binary code is selected, at least one cyclic leader vector of the selected shell may be selected.
Afterwards, the search for a codeword in a set of codewords is carried out by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords .
Accordingly, the set of codewords can be represented by the at least one selected cyclic leader vector and by the codewords obtained through cyclic shifts of each of the at least one selected cyclic leader vectors.
Thus, not the complete set of codewords has to be stored, because it can be constructed by means of the cyclic leader vectors and the corresponding cyclic shifts, which results in reduced storage space requirement.
For instance, the search may be performed for a decoding, an encoding or a quantization process, wherein an input vector should be decoded, encoded or quantized, respectively. E.g., assuming the quantization process or another encoding process, the search may be performed for an input vector comprising values, e.g. real valued values, which have to be replaced by an approximation in a codeword of the code, thus, the search may perform a kind of neighbor search for the nearest neighbor in the set of codewords. Thus, as an example, reduced computational complexity of vector quantization may be achieved - both in terms of storage space requirement (of the codebook) and the actual computational load during the codebook search. For instance, the values of the input vector are positive real valued and the original signs are separately encoded.
Assuming that each value c; of a codeword is from the set of values C1 e {0,1}, and if the binary code is used for encoding real values then the binary code may be transformed to {-1,1} values through f(ci) = 2ci-l. In this case the search algorithm may be modified accordingly.
E.g., assuming a decoding process, an input 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. Thus, the received vector is compared with the set of codewords in order to find a neighbor codeword.
For instance, a quality metric between an input vector and codeword may be applied in order to search for a nearest or a near codeword with respect to the input vector. As an example, this quality metric may depend on a scalar product between an input vector v and a binary vector c of a codeword of the binary cyclic code, wherein the quality metric may be denoted as follows:
Figure imgf000010_0001
The quality of this metric increases when the sum (0) increases. Thus, searching for the highest quality metric provided by equation (0) may be used for optimizing the neighbor search. This metric is inferred from the Euclidean distance between input vector v and binary vector c_ and it is valid because all the codewords from one shell have the same weight.
For instance, in case the search is performed on codewords from shells having different Hamming weights, the quality metric may be modified by subtracting a further value dn(c) from the sum in equation (0) in the following way:
N-I
∑v.C1-dH(c),
/=0
wherein the further value dH(c) is called the Hamming weight of the vector c, indicating the number of ones in vector c_ , so that the shell of weight d* in the codebook G of the binary code is the set G(d*) = {ceG\dff(c) = d*} of codevectors having Hamming weight d* . Accordingly, the further value dtJ(c) represents a constant value for each shell.
Of course, any other well-suited quality metric may be used for performing a neighbor search between a given input vector and codewords of the set of codewords. Thus, for instance, the present invention may be used for finding a nearest neighbor for an input vector using a binary codebook defined by the at least one selected shell, and the set of cyclic leader vectors for each of this at least one selected shell, and depending on the number of cyclic shifts for each of the cyclic leader vectors .
According to an exemplary embodiment, the number of selected cyclic leader vectors may be adjusted in the range from 1 to the maximum number of cyclic leader vectors of the selected shell.
According to an exemplary embodiment, the cyclic shifting comprises adjusting the number of one of the at least one cyclic shifts of one of the at least one selected at least one cyclic leader vector in the range from 1 to a maximum number of cyclic shifts based on the length of a codevector of the codebook.
Thus, the size of the set of codewords for the selected shell may be adjusted based on the number of selected cyclic leader vectors and on the number of the cyclic shift operations performed for each of the selected cyclic leader vectors. For instance, in case the search is to be performed in the entire set of codewords of the selected shell, each cyclic leader vector associated with the shell is selected, implying that the maximum number of selected cyclic leader vectors is chosen, and the number of cyclic shift operations is set to N-I cyclic shift operations of one-element for each of the cyclic leader vectors, so that each cyclic leader vector is shifted through all corresponding cyclic codewords. According to an exemplary embodiment, the search considers all determined cyclic shifts for each of the selected at least one cyclic leader vectors. As an example, this can be performed by using an outer loop and an inner loop, as described below. The term loop should not be understood in a limiting way, a loop may comprise a series of operations, wherein this series of operations may correspond to an unrolled loop.
Accordingly, by means of selecting the number of selected cyclic leader vectors and the number of the cyclic shift operations performed for each of the selected cyclic leader vectors, a tradeoff between search complexity and search quality can be achieved with respect to the search in the selected shell.
According to an exemplary embodiment, an outer loop over all the selected at least one cyclic leader vector is performed, and an inner loop configured to carry out the at least one cyclic shift with respect to the actual cyclic leader vector defined by the outer loop is performed.
For instance, at first, one cyclic leader vector is selected from the selected at least one cyclic leader vector. Then, the number and extent of cyclic shifts for the selected one cyclic leader vector may be determined. The extent of a cyclic shift may be one element, implying cyclically shifting each element of a cyclic leader vector by one position, or the extent may be n elements - with n>l - implying that each element of a cyclic leader vector are cyclically shifted by n positions. Then, as an example, a counter i for the inner loop may be reset, and the search may be performed based on the codeword corresponding to the i-th cyclic shift of the selected one cyclic leader vector. Thus, when the inner loop runs through the first time, the cyclic leader vector itself (defined by the outer loop) may represent the codeword which is used for performing the search. At the end of any inner loop, the counter i is incremented. Thus, for any other inner loop except for the first one, the search may be performed based on the codeword corresponding to the i-th cyclic shift of the selected on cyclic leader vector. The inner loops may exit, when i reaches a preset number of cyclic shift operations.
For instance, each shift may represent a one-element cyclic shift, but it also may represent an m-element cyclic shift with m>l. Furthermore, the extent of the cyclic shift may be determined to be the same for each of the shift operations (for each value of i) , or the extent of the i-th cyclic shift may be determined to vary (based on value of i) . Yet further, the determined number and extent of cyclic shifts may be different from one cyclic code vector to another.
When all cyclic shifts have been performed with respect to the selected one cyclic leader vector, it may be checked whether there is a another cyclic leader vector in the set of selected at least one cyclic leader vectors. In case there is a further cyclic leader vector, the outer loop starts again by selecting this further cyclic leader vector, and enters the inner loop for this new selected cyclic leader vector. According to an exemplary embodiment, the search of a codeword comprises: determining a quality metric between an input vector and each codeword of the set of codewords, and selecting the codeword providing the best quality metric.
For instance, for each determined quality metric it may be checked whether this determined quality metric is better than a stored best quality metric. For instance, this best quality metric may be associated with a subset of codewords associated with a selected one cyclic leader vector, or it may be associated with the selected shell, or it may be associated with the entire codebook of the code. Accordingly, before the search in the subset of codewords, or in the selected shell, or in the entire codebook is started, respectively, the best quality metric may be reset. For instance, if the search is performed for the entire codebook, a quality metric may be checked for the nearest neighbors for each shell .
In case the a new determined quality metric is better than a formerly determined best quality metric, the best quality metric may be updated with the new quality metric including storing a representative for the actual codeword, e.g. by means of storing information about the actual cyclic leader vector and about the cyclic shift. Thus, after the inner and outer loop is finished, the codeword providing the best quality metric with respect to the searched set of codewords in the selected shell can be determined.
According to an exemplary embodiment, the quality metric is based on a scalar product between the input vector and the binary vector of the codeword. According to an exemplary embodiment, elements of a shift vector are assigned to elements of the input vector before the inner loop is entered; wherein the inner loop comprises: determining the quality metric based on the shift vector and the cyclic leader vector defined by the outer loop; then checking whether a further cyclic shift is to be performed; and if so, performing a cyclic shift with respect to elements of the shift vector and jumping back to the beginning of the inner loop, otherwise exiting the inner loop.
For instance, the elements of the input vector V = [V05V151115VN-1] may be copied to shift vector v' . The cyclic leader vector defined by the outer loop may be represented by l_ .
E.g., the quality metric may be determined by calculating the scalar product between both vectors v' and l_ .
Afterwards, it may be checked whether the determined quality metric is better than a stored best quality metric. For instance, this best quality metric may be associated with a subset of codewords associated with the selected one cyclic leader vector, or it may be associated with the selected shell, or it may be associated with the entire codebook of the code. Accordingly, before the search in the subset of codewords, or in the selected shell, or in the entire codebook is started, the best quality metric is reset.
In case the determined quality metric is better than the stored best quality metric, then the best quality metric may be updated by the determined metric. Furthermore, this may include storing a representative for the actual codeword resulting in the determined quality metric, e.g. by means of storing information about the actual cyclic leader vector and about the cyclic shift.
In case a further cyclic shift is to be performed, the routine proceeds with performing the cyclic shift with respect to elements of vector v' , wherein the elements in vector v' may be cyclic shifted by one position. But for instance, the cyclic shift may be also performed by shifting n-positions, wherein n>l holds. Then, the inner loop begins again.
According to an exemplary embodiment,, elements of a shift vector are assigned to elements of the cyclic leader vector defined by the outer loop before the inner loop is entered; wherein the inner loop comprises: determining the quality metric based on the shift vector and the input vector; then checking whether a further cyclic shift is to be performed; and if so, performing a cyclic shift with respect to elements of the shift vector and jumping back to beginning of the inner loop, otherwise exiting the inner loop.
For instance, the elements of the cyclic leader vector may be copied to shift vector c' .
Then the quality metric may be determined with respect to vector c' and the input vector y. E.g., this may be performed by calculating the scalar product between both vectors.
For instance, updating of a best quality metric may be performed as mentioned above. In case a cyclic shift is to be performed, it is proceeded with performing the cyclic shift with respect to elements of vector c' , wherein the elements in vector c' may be cyclic shifted by one position, or, for instance, the cyclic shift may also be performed by shifting m-positions, wherein m>l holds .
According to an exemplary embodiment, d pointer representatives are initialized before the inner loop is entered, d representing the number of ones in the cyclic leader defined by the outer loop, so that the d pointer representatives references to elements in the input vector by indicating the positions of elements of the cyclic leader vector having the value one; wherein the inner loop comprises: determining the quality metric by calculating the sum of the elements in the input vector which are referenced by the d pointer representatives, then checking whether a further cyclic shift is to be performed; and if so, incrementing the indicating positions of the d pointer representatives and jumping back to the beginning of the inner loop, otherwise exiting the inner loop.
Determining the quality metric may be performed by calculating the sum of the elements in the input vector v which are referenced by the d pointer representatives. Of course, any other well suited quality metric may be applied.
Then, for instance, the stored best quality metric may be updated as explained above.
In case a cyclic shift is to be performed, this exemplary embodiment proceeds with incrementing the indicating positions of the d pointer representatives. For instance, this incrementing may be performed by adding the value "1" to the d indicating positions, or by adding integer value m to the d indicating positions, m>l, in order to perform a cyclic shift of m-positions . Furthermore, after incrementing the d indicating positions, a modulo N operation may be performed to the indicating positions, wherein N represents the N-dimensional space of the code, in order to ensure the cyclic shift. Or, as an alternative, the elements vo...vN_, input vector may be attached to the input vector as N further elements vN...v2Ty_,.
According to an exemplary embodiment, the selected shell represents a first shell, the method comprising exploiting the search in a set of codewords of a second shell, the second shell representing a complementary shell with respect to the first shell, wherein in the complementary shell for each codeword of the other shell there exists a complementary codeword, wherein the set of codewords of the second shell is represented by complementary codewords of the set of codewords of the first shell.
Accordingly, there exists a codeword in the second shell which is complementary to a codeword of the first shell. For instance, each value of a codevector of the binary cyclic code may be from a set of values {a,b} , such that in a complementary codeword each value a is replaced with value b and each value b is replaced with value a compared to the codeword of the first shell . For instance, value b may have value "1" and value a may have value "0" or value "-1". For instance, assuming a=0 and b=l, this codeword in the second shell may be obtained by replacing the ones and zeros in the binary vector of a codeword of the first shell with zeros and ones, respectively, in order to determine the quality metric for the complementary case between this codeword and the input vector. Thus, for each of the codewords used for performing the search in the first shell, the complementary codeword in the second shell may also be used for performing the search. Furthermore, in case the quality metric is represented by equation (0) , the quality metric for the complementary case may be obtained by subtracting a quality metric obtained with respect to the first shell (e.g. as mentioned above) from the sum over each element of the input
JV-I vector ^v1.. ;=o
Furthermore, for instance, assuming a=-l and b=l, and in case the quality metric is represented by equation (0) , the quality metric for the complementary case may be equal to minus the quality metric for the first shell, and it can be expressed
Figure imgf000019_0001
Accordingly, the search and the quality metric determined for the first shell can be exploited to perform a low-complexity search in the second shell.
According to an exemplary embodiment, the method is repeated for at least one further shell of the binary cyclic code.
According to an exemplary embodiment, the ones of the cyclic leader vectors of a set of cyclic leader vectors of one shell may be arranged so that the ones in the codewords of these cyclic leader vectors are approximately evenly covering the N-dimensional space of the code, N depending on the length of the codewords of the code. Alternatively, a code providing a different coverage of the N-dimensional based may be designed, for example to match the input signal characteristics .
For instance, this may enhance the result of the search if not all the cyclic shifts are considered in the search. Further, as an example, the term approximately may also include the meaning exact.
According to an exemplary embodiment, the binary cyclic code represents a Golay code.
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. 2 depicts a schematic illustration of a second exemplary embodiment of a method according to the present invention;
Fig. 3a depicts exemplary vectors with respect to the third exemplary embodiment of a method according to the present invention;
Fig. 3b depicts exemplary vectors with respect to the fourth exemplary embodiment of a method according to the present invention;
Fig. 4a depicts a schematic illustration of a third exemplary embodiment of a method according to the present invention;
Fig. 4b depicts a schematic illustration of a fourth exemplary embodiment of a method according to the present invention;
Fig. 5 depicts a schematic illustration of a fifth exemplary embodiment of a method according to the present invention;
Fig. 6a depicts a schematic illustration of a sixth exemplary embodiment of a method according to the present invention;
Fig. βb depicts exemplary pointer representatives with respect to the sixth exemplary embodiment of a method according to the present invention; and Fig. 7 depicts a schematic illustration of an exemplary embodiment of a readable medium according to the present invention .
DETAILED DESCRIPTION OF SOME EXAMPLE EMBODIMENTS QF THE INVENTION
In the following detailed description, exemplary embodiments will be described.
Fig. Ia depicts a schematic flowchart of a first exemplary embodiment of a method according to the present invention.
This method comprises selecting a shell of a binary cyclic code (as indicated by reference sign 110) , wherein each shell is associated with a set of binary codewords having the same Hamming weight.
The Hamming weight is defined by the number of ones in a binary code vector comprising elements with values one and zero.
By the definition of a cyclic binary code, for a given codeword from one shell an N-dimensional cyclic binary code, N-I other codewords from the same shell can be obtained through cyclic shifts. For instance, from a given first codevector C0 =[c0,C15C25C3,...,cN_3,cN_2, cN_,] , N-I other codewords can be obtained through cyclic shifting, wherein the cyclical shift value maybe in the range from 1 to N-I. For instance, assuming an exemplary cyclical shift value of 3, implying shifting 3 bits, the codeword C0 may be transferred to the new codeword C3 =[C3,C4,...,CN_J,CO,CJ,C2] , wherein both the codewords C0 and C3 have the same Hamming weight. Of course, the cyclic shifting may be performed in the other direction.
Thus, for instance, for each shell comprising M cyclic codewords of dimension N, M/N codewords of the M codewords may be used for generating the entire shell. The vectors of these M/N codewords may represent cyclic leader vectors, and the set of codewords for the entire shell may be obtained through all the cyclic shifts for each cyclic leader vector. Furthermore, each of the defined M/N cyclic leader vector may be replaced with a different codevector, wherein the different codevector is obtained through cyclic shifting the corresponding cyclic leader vector which is to be replaced.
Accordingly, each shell of the binary code may be defined as a set of cyclic leader vectors, and, further, the codebook of the entire binary code may be represented based on the set of cyclic leader vectors for each shell of the binary code. Thus, the binary cyclic code can be described by a set of cyclic leader vectors and by cyclic shifting each cyclic leader vector.
For instance, the binary cyclic code may be a Golay code, or any cyclic BCH code, or a Reed-Solomon or any other binary code fulfilling the above-mentioned definition of a cyclic code .
Then, after a shell of the binary code is selected, at least one cyclic leader vector of the selected shell is selected, as indicated by reference sign 120 in Fig 1. Afterwards, the search for a codeword in a set of codewords is carried out by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords.
Accordingly, the set of codewords is represented by the at least one selected cyclic leader vector and by the codewords obtained through cyclic shifts of each of the at least one selected cyclic leader vectors.
Thus, the complete set of codewords does not have to be stored, because it can be constructed by means of the cyclic leader vectors and the corresponding cyclic shifts, which results in reduced storage space requirement.
Furthermore, the size of the set of codewords for the selected shell may be adjusted based on the number of selected cyclic leader vectors and on the number of the cyclic shift operations performed for each of the selected cyclic leader vectors. For instance, in case the search is to be performed in the entire set of codewords of the selected shell, each cyclic leader vector associated with the shell is selected, implying that the maximum number of selected cyclic leader vectors is chosen, and the number of cyclic shift operations is set to N-I cyclic shift operations of one-element for each of the cyclic leader vectors, so that each cyclic leader vector is shifted through all corresponding cyclic codewords.
Thus, by means of selecting the number of selected cyclic leader vectors and the number of the cyclic shift operations performed for each of the selected cyclic leader vectors, a tradeoff between search complexity and search quality can be achieved with respect to the search in the selected shell.
For instance, the search may be performed for a decoding, an encoding or a quantization process, wherein an input vector should be decoded, encoded or quantized, respectively.
E.g., assuming the quantization process or another encoding process, the search may be performed for an input vector comprising values, e.g. real valued values, which have to be replaced by an approximation in a codeword of the code. 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 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.
E.g., assuming a decoding process, an input 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. Thus, the received vector is compared with the set of codewords in order to find a neighboring codeword. 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 280 configured search for the nearest vector of code with respect to a distorted input vector which is received at input 181.
For instance, a quality metric between an input vector and codeword may be applied in order to search for a nearest or a near codeword with respect to the input vector. As an example, this quality metric may depend on a scalar product between an input vector v and a binary vector c of a codeword of the binary cyclic code, wherein the quality metric may be denoted as follows :
N-I
!=0
The quality of this metric increases when the sum (1) increases. Thus, searching for the highest quality metric provided by equation (1) may be used for optimizing the neighbor search.
For instance, in case the search is performed on codewords from shells having different Hamming weights, the quality metric may be modified by subtracting a further value dH(c) from the sum in equation (i) in the following way:
N-I
^v1C1 -dH(c),
;=0
wherein the further value dH(c) is called the Hamming weight of the vector c, indicating the number of ones in vector c_, so that the shell of weight d* in the codebook G of τ:he binary code is the set G(d*) = {c&G\dH(c) = d"} of codevectors having Hamming weight d* . Accordingly, the further value dH(c) represents a constant value for each shell. Of course, any other well-suited quality metric may be used for performing a neighbor search between a given input vector and codewords of the set of codewords.
Thus, for instance, the present invention may be used for finding a nearest neighbor for an input vector using a binary codebook defined by the at least one selected shell, and the set of cyclic leader vectors for each of this at least one selected shell, and depending on the number of cyclic shifts for each of the cyclic leader vectors.
The explanations and advantages presented with respect to the first exemplary embodiment also hold for the following exemplary embodiments.
Fig. 2 depicts a schematic flowchart of a second exemplary embodiment of a method according to rhe present invention, which is based on the first exemplary embodiment depicted in Fig. Ia.
The second exemplary embodiment comprises performing an outer loop over all the selected at least one cyclic leader vector, as indicated by arrow 215, and it comprises performing an inner loop (indicated by reference sign 245) configured to carry out the at least one cyclic shift with respect to the actual cyclic leader vector defined by the outer loop.
The method may be used for the search for a codeword in a set of codewords for the selected shell as indicated by reference sign 130 of the first exemplary method in Fig. Ia. Thus, the exemplary flowchart of Fig. 2 may be inserted between reference signs 125 and 135 in Fig. Ia.
At first, one cyclic leader vector is selected from the selected at least one cyclic leader vector, as indicated by reference sign 210. Then, the number and extent of cyclic shifts for the selected one cyclic leader vector is set (as indicated by reference sign 220) . This setting of the number and extent of cyclic shifts must not necessarily be performed at this position of the exemplary flowchart depicted in Fig. 2, it can also be set before the method is carried out or at another suited moment. Thus, box 220 is optional.
Then, a counter i for the inner loop is reset, as indicated by reference sign 230, and the search is performed based on the codeword corresponding to the i-th cyclic shift of the selected one cyclic leader vector. Thus, when the inner loop runs through the first time, the cyclic leader vector itself represents the codeword which is used for performing the search. For instance, each shift may represent a one-element cyclic shift, but it also may represent an n-element cyclic shift with n>l, possibly with varying value of n depending on the value of the counter for the inner loop i.
For instance, the quality metric between a given vector and this codeword may be determined, and furthermore, this quality metric may be compared to a stored quality metric representing the best quality metric determined so far with respect to the selected shell or, alternatively, with respect to the entire codebook of the binary code. In case the new quality metric is better than the formerly determined best quality metric, the best quality metric may be updated with the new quality metric including storing a representative for the actual codeword resulting in the determined quality metric, e.g. by means of storing information about the actual cyclic leader vector and about the cyclic shift. Thus, after the inner and outer loops are finished, the codeword providing the best quality metric with respect to the searched set of codewords in the selected shell can be determined.
Hence, this comparison of the determined quality metric with the stored best quality metric may be performed during each step 240. For instance, the search performed in box 240 may comprise evaluate the quality metric for the codeword corresponding to the i-th cyclic shift of the selected one cyclic leader vector.
Afterwards, the counter i is incremented (e.g. by value 1), as indicated by reference sign 250, and it is checked whether another cyclic shift is to be performed depending on the counter i and the number of cyclic shifts, as indicated by reference sign 260. If there is another cyclic shift, the method returns to perform the search based on the codeword corresponding to the next i-th cyclic shift of the selected one cyclic leader vector by returning to the inner loop again, as depicted by arrow 245. Thus, the search for a codeword in the selected shell indicated by reference sign 130 in Fig. Ia is performed by repeating the chain between reference signs 235 und 265 for each of the selected one cyclic leader vector.
If all cyclic shifts have been performed with respect to the selected one cyclic leader vector, it is checked whether there is a another cyclic leader vector in the set of selected at least one cyclic leader vectors, as indicated by reference sign 270. In case there is a further cyclic leader vector, the outer loop is entered again by selecting this further cyclic leader vector, as indicated by arrow 215 leading to block 210.
The explanations and advantages presented with respect to the second exemplary embodiment also hold for the following exemplary embodiments .
Fig. 4a depicts a schematic flowchart of a third exemplary embodiment of a method according to the present invention, which is based on the second exemplary embodiment depicted in Fig. 2.
This third exemplary embodiment will be described in conjunction with the exemplary vectors depicted in Fig. 3a.
Based the second exemplary method, the third exemplary method may be used for performing the search on the codeword corresponding to the i-th cyclic shift of the selected one cyclic leader vector as indicated by reference sign 240 of the second exemplary method in Fig. 2, implying that the third exemplary embodiment may be inserted between reference signs 235 and 265 depicted in Fig. 2.
The method comprises assigning elements of a shift vector v' to elements of the input vector v = [vo,vls...,vN_,] , as indicated by reference sign 330 in Fig. 3a (and denoted by reference sign 410) . For instance, the elements of the input vector may be copied to shift vector v' . Regarding Fig. 3a, the selected one cyclic leader vector is represented by l_ . Then the quality metric is determined with respect to vector v' and the selected one cyclic leader vector (denoted by reference sign 440) . E.g., this is performed by calculating the scalar product between the vectors v' and l_ .
Afterwards, it is checked whether the determined quality metric is better than a stored best quality metric, as indicated by reference sign 441. For instance, this best quality metric may be associated with a subset of codewords associated with the selected one cyclic leader vector, or it may be associated with the selected shell, or it may be associated with the entire codebook of the code. Accordingly, before the search in the subset of codewords, or in the selected shell, or in the entire codebook is started, respectively, the best quality metric is reset (not depicted in the Figs . ) .
In case the determined quality metric is better than the stored best quality metric, the method proceeds at 442 with updating the best quality metric by the determined metric. Furthermore, this may include storing a representative for the actual codeword resulting in the determined quality metric, e.g. by means of storing information about the actual cyclic leader vector and about the cyclic shift (e.g. by storing the number i) . Then the method jumps for incrementing i, as indicated by reference sign 250 and as explained with respect to the second exemplary embodiment.
In case the determined quality metric is not better than the stored best quality metric, the method proceeds at 250 by incrementing i . In case a cyclic shift is to be performed, the method proceeds with performing the cyclic shift with respect to elements of vector v' , as indicated by reference sign 450 in Fig. 4a. Fig. 3a depicts such an exemplary shift, e.g. denoted as 1st shift 311 at i=l, wherein the elements in vector v' 331 are cyclic shifted by one position compared to vector vf 330f or denoted as 2nd shift 312 at i=2, wherein the elements in vector v' 332 are cyclic shifted by one position compared to vector v' 331. For instance, the cyclic shift may be also performed by shifting n-positions, wherein n>l holds. Then, the quality metric is determined with respect to vector v' 331 and the method proceeds with box 441 as explained above. Thus, as indicated by reference sign 310 in Fig. 3a, the cyclic shift is performed on the vector v' until the first loop is stopped at by decision 260 in Fig. 4a.
Fig. 4b depicts a schematic flowchart of a fourth exemplary embodiment of a method according to the present invention, which is based on the second exemplary embodiment depicted in Fig. 2.
This fourth exemplary embodiment will be described in conjunction with the exemplary vectors depicted in Fig. 3b.
Based on the second exemplary method, the fourth exemplary method may be used for performing the search on the codeword corresponding to the i-th cyclic shift of the selected one cyclic leader vector as indicated by reference sign 240 of the second exemplary method in Fig. 2. Thus, the fourth exemplary embodiment may be inserted between reference signs 235 and 265 depicted in Fig. 2.
The method comprises assigning elements of a shift vector c' to elements of the selected one cyclic leader vector
I = [I05I1,...,IN-1] , as indicated by reference sign 340 in Fig. 3b (and denoted by reference sign 410' ) . For instance, the elements of the cyclic leader vector may be copied to shift vector c' .
Then the quality metric is determined with respect to vector c/ and the input vector v (denoted by reference sign 440' ) . E.g., this is performed by calculating the scalar product between the vectors c' and v .
Updating of the best quality metric may be performed in the same way as in the third exemplary embodiment depicted in Fig. 4b.
In case a cyclic shift is to be performed, the method proceeds with performing the cyclic shift with respect to elements of vector c' , as indicated by reference sign 450' in Fig. 4b. Fig. 3b depicts such an exemplary shift, e.g. denoted as 1st shift 321 at i=l, wherein the elements in vector c' 341 are cyclic shifted by one position compared to vector c' 340, or denoted as 2nd shift 322 at i=2, wherein the elements in vector v' 342 are cyclic shifted by one position compared to vector v' 341. For instance, the cyclic shift may also be performed by shifting n-positions, wherein n>l holds. Then, the quality metric is determined with respect to vector v' 341 and the method proceeds with box 441 as explained above. Thus, as indicated by reference sign 320 in Fig. 3b, the cyclic shift is performed on the vector v' until the first loop is stopped at by decision 260 in Fig. 4b.
Please note that both the cyclic shift according to the fourth exemplary embodiment and the cyclic shift according to the third exemplary embodiment have the same effect with respect to the quality metric depending on the codeword corresponding to the i-th cyclic shift of the selected one cyclic leader vector and on the given input vector. In the third exemplary embodiment, as shown in Fig. 3a, the elements of the input vector are shifted in a first direction (e.g. right direction, see vectors v' ) , and in the fourth exemplary embodiment, as shown in Fig. 3b, the elements of the cyclic leader vector are shifted in a second direction being opposite to the first direction (e.g. left direction, see vectors c' ) . Thus, the scalar product of 1 and v' in the third exemplary embodiment corresponds to the scalar product of v and c' in the fourth embodiment for each cyclic shift i.
Fig. 5 depicts a schematic flowchart of a fifth exemplary embodiment of a method according to the present invention, which is based on the second exemplary embodiment depicted in Fig. 2.
In the following, the selected shell represents a first shell, wherein the method comprises exploiting the search in a set of codewords of a second shell, the second shell representing a complementary shell with respect to the first shell, wherein in the complementary shell for each codeword of the other shell there exists a complementary codeword such that the zeros are replaced with ones and the ones are replaced with zeros, wherein the set of codewords of the second shell is represented by complementary codewords of the set of codewords of the first shell.
Exploiting the search in a set of codewords of the second shell is performed by the fifth exemplary embodiment depicted in Fig. 5, wherein this fifth exemplary embodiment may be inserted between reference signs 446 and 448 depicted in Fig. 4a or Fig 4b. As mentioned above, in step 440 or in step 440f of the third or fourth exemplary embodiment, respectively, the search is performed based on the codeword obtained by performing to the i-th cyclic shift of the selected one cyclic leader vector (see reference sign 240 in Fig. 2) in view of the input vector.
Accordingly, there exists a codeword in the second shell which is complementary to this codeword of the first shell, representing the complementary case denoted in box 510 in Fig 5. For instance, each value of a codevector of the binary cyclic code may be from a set of values {a,b} , such that in a complementary codeword each value a is replaced with value b and each value b is replaced with value a compared to the codeword of the first shell. For instance, value b may have value "1" and value a may have value "0" or value "-1".
For instance, assuming a=0 and b=l, ~his codeword in the second shell may be obtained by replacing the zeros and ones of in the binary vector of the codeword of the first shell with ones and zeros, respectively, in order to determine the quality metric for the complementary case between this codeword and the input vector. Furthermore, in case the quality metric is represented by equation (1), the quality metric for the complementary case may be obtained by subtracting the quality metric obtained in step 440 or 440f
N-I from the sum over each element of the input vector ^v..
Furthermore, for instance, assuming a=-l and b=l, and in case the quality metric is represented by equation (1) , the quality metric for the complementary case may be equal to minus the quality metric for the first shell, and it can be expressed
Figure imgf000036_0001
Afterwards, it is checked whether the determined quality metric is better than a stored best complementary quality metric, as indicated by reference sign 520. For instance, this best complementary quality metric may be associated with a subset of complementary codewords associated with the selected one cyclic leader vector, or it may be associated with the second shell. In case it may be associated with the entire codebook of the code, the steps 520 and 530 may be directly replaced by steps 441 and 442. Accordingly, before the search in the complementary subset of codewords, or in the second shell is started, respectively, the best complementary quality metric is reset (not depicted in the Figs. ) .
In case the determined quality metric is better than the stored best complementary quality metric, the method proceeds at 530 with updating the best complementary quality metric by the determined metric. Furthermore, this may include storing a representative for the actual codeword resulting in the determined quality metric, e.g. by means of storing information about the actual cyclic leader vector and about the cyclic shift (e.g. by storing the number i) and/or the second shell. Then the method jumps to 448 in order to proceed with one of the third or fourth exemplary embodiments.
In case the determined quality metric is not better than the stored best complementary quality metric, the method proceeds at 448 with one of the third or fourth exemplary embodiments.
Accordingly, the search can be exploited to the second shell very easily.
For instance, when the code represents a Golay Code of dimension 23, this code has shells of weight equal to 0, 7, 8, 11, 12, 15, 16, and 23. The shells having weight 0 and 23 have only one code word corresponding to a vector with all elements having a value zero and a vector with all elements having a value one, respectively, and they may be considered trivial. The shells 7, 8, 11, 12, 15 and 16 have 253, 506, 1288, 1288, 506, and 253 codewords, respectively, and the pairs of shell 7-16, 8-15, and 11-12 are complementary in the above-described sense, implying that for each codeword in the first shell there exist a codeword in the second shell such that the zeros are replaced with ones and the ones are replaced with zeros. Thus, for instance, in order to exploit the search to all six non-trivial shell 7, 8, 11, 12, 15, 16, in box 110 of Fig. Ia at first the shell 7, then the shell 8 and then the shell 11 may be selected by performing the fifth exemplary method in order to exploit the search in the complementary shells 16, 15 and 12 simultaneously. Fig. 6a depicts a schematic flowchart of a sixth exemplary embodiment of a method according to the present invention, which is based on the second exemplary embodiment depicted in Fig. 2.
This sixth exemplary embodiment will be described in conjunction with the exemplary pointer representatives depicted in Fig. 6b.
Based on the second exemplary method? the sixth exemplary method may be used for performing the search on the codeword corresponding to the i-th cyclic shift of the selected one cyclic leader vector as indicated by reference sign 240 of the second exemplary method in Fig. 2. Thus, the sixth exemplary embodiment may be inserted between reference signs 235 and 265 depicted in Fig. 2.
As indicated by reference sign 610 in Fig 6a, d pointer representatives are initialized before the inner loop is entered. The value d represents the number of ones in the cyclic leader defined by the outer loop, wherein initializing causes that the d pointer representatives references to elements in the input vector by indicating the positions of elements of the cyclic leader vector having the value one.
For instance, this is exemplarily shown in Fig. 6b for a 23-dimensional code, wherein an exemplary cyclic leader vector of shell d=7 has ones at positions 0, 5, 6, 7, 13, 16, and 17. The first pointer representative p0 references to the element in the 0-th position of the input vector v, the second pointer representative p, references to the element in the 5-th position of the input vector y, and so on for the remaining pointer representatives. Thus, after initialization based on the position of the ones of the cyclic leader vector, the indicating positions 650 of the pointer representatives indicate the positions of elements in the input vector v in accordance with the positions of the ones of the cyclic leader vector.
Then the inner loop comprises determining the quality metric by calculating the sum of the elements in the input vector v which are referenced by the d pointer representatives (as indicated by reference sign 640 in Fig. 6a) . With respect to the example in Fig. 6b this implies calculating V0 +v5 +v6 +v7 +V13 +v16 +v17 , which represents the quality metric of equation (1) . Of course, any other well suited quality metric may be applied.
Then, the stored best quality metric may be updated in accordance with reference signs 441 and 442, as explained with respect to the third and fourth exemplary embodiments.
Furthermore, as an example, the search may be exploited to the complementary shell by inserting fifth exemplary embodiment depicted in Fig. 5 between reference signs 446 and 448 shown in Fig. 6a.
In case a cyclic shift is to be performed, the sixth exemplary embodiment proceeds with incrementing the indicating positions of the d pointer representatives. For instance, this incrementing may be performed by adding the value "1" to the d indicating positions, or by adding integer value m to the d indicating positions, m>l, in order to perform a cyclic shift of m-positions . Furthermore, after incrementing the d indicating positions, a modulo N operation may be performed to the indicating positions, wherein N represents the N-dimensional space of the code, in order to ensure the cyclic shift. Or, as an alternative, the elements V0...VN-1 input vector may be attached to the input vector as N further elements vN...V2N-1.
Reference sign 651 depicts the incremented indicating positions after the first cyclic shift (i=l) in Fig. 6b, and reference sign 652 depicts the incremented indicating positions after the second cyclic shift (i=2) .
For instance, under the exemplary assumption of applying the Golay code, the codewords of shell 7 may be αescribed by the following integer array, αepicted in the C language notation:
int id7[] = { 0, 5, 6, 7, 13, 16, 17,
0, 4, 8, 11, 13, 14, 17, 0, 3, 9, 10, 11, 12, 14,
0, 2, 7, 8, 10, 14, 16,
0, 2, 6, 9, 13, 14, 18, 5,
0, 2, 4, 5, 6, 10, 11,
0, 2, 3, I1 11, 13, 15, 0, 1, 6, 11, 14, 15, 16,
0, 1, 4, 6, 9, 12, 17,
0, 1, 4, 5, 7, 8, 15,
0, 1, 3, 6, 8, 10, 13, };
Each row of the printed array id7 [ ] shows the positions of the ones of one cyclic leader vector being associated with the shell 7, wherein the other positions of the cyclic leader vectors are filled with zeros.
Similar integer arrays may be stored for shell 8 and 11, respectively,, so that shells 7, 8 and 11 may be constructed by means of the stored cyclic leader vectors, and wherein the complementary shells 16, 15 and 12 can be constructed as described above.
For instance, the codewords of shell 8 may be described by the following exemplary integer array:
int id8[] = {0, 4, 6, 9, 11, 14, 19, 21,
3, 5, 6, 12, 15, 18, 20, 21, 0, 2, 7, 8, 12, 15, 20, 21,
3, 4, 6, 9, 15, 17, 21, 22,
1, 2, 5, 9, 13, 14, 20, 22,
0, 4, 6, 11, 16, 17, 20, 22,
1, 4, 8, 11, 14, 15, 18, 19, 2, 3, 10, 12, 14, 16, 17, 19,
3, 5, 6, 8, 12, 13, 16, 19,
1, 2, 4, 7, 8, 16, 18, 21,
7, 10, 11, 13, 15, 18, 19, 22,
7, 8, 10, 11, 16, 20, 21, 22, 1, 6, 8, 9, 10, 17, 20, 22,
0, 6, 7, 8, 13, 14, 15, 19,
0, 4, 9, 13, 16, 17, 18, 21,
1, 2, 3, 6, 7, 13, 14, 16,
0, I1 11, 13, 17, 19, 20, 21, 3, 9, 12, 13, 14, 16, 18, 20,
0, 9, 10, 14, 15, 16, 18, 19,
0, 2, 3, 4, 5, 15, 20, 22, 1 , 2 , 5 , 9 , 10 , 11 , 12 , 17 , 0 , 1 , 2 , 3 , 4 , I 1 10 , 12 } ;
Furthermore, for instance, the codewords of shell 11 may be described by the following exemplary integer array:
int idlin = { 4, 7, 9, 11, 12, 14, 17, 19, 20, 22, 23,
1, 5, 7, 8, 10, 13, 14, 17, 19, 21, 23,
4, 5, 7, 10, 11, 13, 15, 17, 18, 21, 23, 6, 7, 9, 11, 13, 15, 16, 18, 19, 21, 23,
5, 6, 8, 9, 12, 16, 17, 19, 20, 22, 23, 4, 5, 8, 11, 12, 14, 16, 17, 20, 21, 22, 4, 10, 12, 13, 15, 16, 18, 19, 21, 22, 23,
2, 5, 6, 7, 11, 12, 13, 18, 20, 21, 23, 3, 5, 6, 8, 10, 11, 12, 18, 19, 20, 23,
2, 4, 6, 8, 9, 10, 13, 16, 17, 20, 23,
1, 7, 9, 10, 11, 14, 16, 19, 20, 21, 23,
4, 6, 7, 9, 10, 11, 14, 16, 17, 18, 23,
4, 7, 8, 10, 14, 15, 17, 18, 19, 22, 23, 5, 6, 9, 10, 11, 14, 15, 18, 20, 21, 23,
4, 5, 8, 9, 13, 14, 15, 18, 19, 21, 23,
1, 6, 7, 8, 11, 12, 13, 15, 17, 21, 23,
1, 3, 6, 9, 10, 14, 15, 17, 18, 22, 23,
2, 5, 7, 8, 9, 11, 14, 16, 19, 20, 22, 5, 6, 8, 9, 10, 12, 15, 16, 18, 19, 21,
3, 7, 10, 11, 14, 15, 16, 18, 21, 22, 23, 1, 6, 8, 10, 11, 13, 14, 15, 17, 19, 22,
1, 3, 5, 7, 9, 12, 13, 18, 20, 21, 22,
2, 6, 10, 11, 12, 14, 16, 18, 19, 21, 23, I1 4, 5, 6, 8, 14, 15, 16, 18, 20, 21,
3, 5, 8, 10, 12, 13, 14, 16, 17, 20, 23, 8, 9, 10, 12, 13, 16, 17, 18, 20, 21, 22, 1, 5, 7, 11, 12, 13, 15, 16, 18, 22, 23,
6, 7, 11, 13, 14, 15, 17, 18, 20, 22, 23,
1, 5, 6, 9, 11, 12, 13, 15, 16, 17, 19,
2, 4, 5, 6, 7, 13, 15, 18, 19, 22, 23,
1, 6, 7, 8, 10, 11, 12, 13, 18, 20, 22,
2, 6, 9, 10, 11, 12, 17, 18, 20, 22, 23,
3, 6, 9, 12, 13, 15, 16, 19, 20, 21, 22, 2, 3, 8, 11, 12, 14, 15, 16, 17, 21, 23,
2, 3, 6, 8, 9, 10, 11, 15, 16, 18, 23,
3, 5, 7, 11, 12, 13, 14, 17, 21, 22, 23, 3, 7, 9, 10, 11, 15, 17, 18, 19, 20, 23,
2, 3, 6, 7, 10, 14, 16, 19, 20, 21, 22, 1, 2, 3, 6, 8, 9, 17, 18, 19, 20, 23,
3, 4, 5, 8, 9, 10, 11, 13, 15, 20, 23, 1, 2, 5, 10, 12, 13, 14, 15, 17, 19, 20, 3, 4, 5, 6, 8, 9, 14, 16, 19, 21, 22,
1, 4, 6, 7, 8, 9, 11, 12, 15, 16, 18,
1, 2, 4, 7, 11, 16, 17, 19, 20, 21, 22,
1, 3, 5, 6, 7, 8, 9, 17, 21, 22, 23,
3, 4, 9, 10, 11, 12, 13, 18, 19, 20, 22,
1, 2, 3, 7, 11, 12, 14, 16, 19, 22, 23,
2, 3, 4, 8, 9, 11, 12, 13, 14, 15, 18, 2, 3, 8, 9, 13, 14, 18, 19, 20, 21, 22, 2, 3, 4, 5, 12, 14, 15, 16, 17, 18, 20, 2, 6, 7, 8, 9, 10, 12, 15, 16, 20, 22,
1, 2, 4, 5, 6, 9, 14, 15, 21, 22, 23,
2, 4, 8, 10, 12, 13, 14, 15, 16, 17, 22, 1, 3, 4, 7, 8, 15, 16, 17, 18, 19, 20, 1, 3, 5, 8, 9, 10, 11, 12, 13, 16, 18,, 4, 5, 6, 7, 8, 9, 10, 11, 13, 17} ; Thus, such integer arrays defining the positions of the ones of cyclic leader vectors may be used in order to initialize the pointer representatives of the sixth exemplary embodiment,, as indicated by reference sign 610 in Fig. 6a.
Fig. 7 is a schematic illustration of an embodiment of a readable medium 700 according to the fourth aspect of the present invention.
In this example the readable medium 700 is a computer-readable medium. A program 701 according to the fifth aspect of the present invention is stored thereon. The program 701 comprises program code 702. When executed by a processor, the instructions of the program code 702 cause a processor to select a shell of a binary cyclic code, wherein each shell is associated with a set of binary codewords having the same Hamming weight; to select at least one cyclic leader vector of the selected shell, wherein the codewords of each shell of the code can be described by a set of cyclic leader vectors and by cyclic shifting each cyclic leader vector; and to search for a codeword in a set of codewords by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords.
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 exclusively, but can be applied to any other well-suited binary cyclic codes. Furthermore, the word "step" used in this description should not be understood in a limiting way, but 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;
A method, comprising: selecting a shell of a binary cyclic code, wherein each shell is associated with a set of binary codewords having the same Hamming weight; selecting at least one cyclic leader vector of the selected shell, wherein the codewords of each shell of the code can be described by a set of cyclic leader vectors and by cyclic shifting each cyclic leader vector; and searching for a codeword in a set of codewords by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords.
The method according to claim 1, comprising adjusting the number of selected cyclic leader vectors in the range from 1 to the maximum number of cyclic leader vectors of the selected shell.
The method according to one of the preceding claims, comprising adjusting the number of one of the at least one cyclic shifts of one of the at least one selected at least one cyclic leader vector in the range from 1 to a maximum cyclic shift number based on the length of a codevector of the codebook.
4. The method according to one of the preceding claims, comprising performing an outer loop over all the selected at least one cyclic leader vector, and performing an inner loop configured to carry out the at least one cyclic shift with respect to the actual cyclic leader vector defined by the outer loop.
5. The method according to one of claims 1-3, wherein the searching of a codeword comprises: determining a quality metric between an input vector and each codeword of the set of codewords; and - selecting the codeword providing the best quality metric .
6. The method according to claim 5, wherein the quality metric i s based on a scalar product between the input vector and the binary vector of the codeword.
7. The method according to claim 5 or 6, comprising performing an outer loop over all the selected at least one cyclic leader vector, and performing an inner loop configured to carry out the at least one cyclic shift with respect to the actual cyclic leader vector defined by the outer loop.
8. The method according to claim 7, comprising assigning elements of a shift vector to elements of the input vector before the inner loop is entered; wherein the inner loop comprises: determining the quality metric based on the shift vector and the cyclic leader vector defined by the outer loop; then checking whether a further cyclic shift is to be performed; and if so, performing a cyclic shift with respect to elements of the shift vector and jumping back to the beginning of the inner loop, otherwise exiting the inner loop.
9. The method according to claim I1 comprising assigning elements of a shift vector to elements of the cyclic leader vector defined by the outer loop before the inner loop is entered; wherein the inner loop comprises: determining the quality metric based on the shift vector and the input vector; then checking whether a further cyclic shift is to be performed; and if so, performing a cyclic shift with respect to elements of the shift vector and jumping back to beginning of the inner loop, otherwise exiting the inner loop.
10. The method according to claim 7, comprising initializing d pointer representatives before the inner loop is entered, d representing the number of ones in the cyclic leader defined by the outer loop, so that the d pointer representatives references to elements in the input vector by indicating the positions of elements of the cyclic leader vector having the value one; wherein the inner loop comprises: determining the quality metric by calculating the sum of the elements in the input vector which are referenced by the d pointer representatives, then checking whether a further cyclic shift is to be performed; and if so, incrementing the indicating positions of the d pointer representatives and jumping back to the beginning of the inner loop, otherwise exiting the inner loop.
11. The method according to one of the preceding claims, wherein the selected shell represents a first shell, the method comprising exploiting the search in a set of codewords of a second shell, the second shell representing a complementary shell with respect to the first shell, wherein in the complementary shell for each codeword of the other shell there exists a complementary codeword, wherein the set of codewords of the second shell is represented by complementary codewords of the set of codewords of the first shell.
12. The method according to one of the preceding claims, comprising repeating the method for at least one further shell of the binary cyclic code.
13. The method according to one of the preceding claims, wherein the ones of the cyclic leader vectors of a set of cyclic leader vectors of one shell are arranged so that the one in the codewords of these cyclic leader vectors are approximately evenly covering the N-dimensional space of the code, N depending on the length of the codewords of the code.
14. The method according to one of the preceding claims, wherein the binary cyclic code represents a Golay code.
15. A program, comprising: - program code for performing the method according to one of the claims 1-14, when the program is executed on a processor .
16. An apparatus, comprising a processor configured to select a shell of a binary cyclic code, wherein each shell is associated with a set of binary codewords having the same Hamming weight; to select at least one cyclic leader vector of the selected shell, wherein the codewords of each shell of the code can be described by a set of cyclic leader vectors and by cyclic shifting each cyclic leader vector; and to search for a codeword in a set of codewords by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords.
17. The apparatus according to claim 16, wherein the search of a codeword comprises: determining a quality metric between an input vector and each codeword of the set of codewords; and selecting the codeword providing the best quality metric .
18. The apparatus according to claim 17, wherein the quality metric is based on a scalar product between the input vector and the binary vector of the codeword.
19. The apparatus according to claim 17 or 18, wherein the processor is configured to perform an outer loop over all the selected at least one cyclic leader vector, and to perform an inner loop configured to carry out the at least one cyclic shift with respect to the actual cyclic leader vector defined by the outer loop.
20. The apparatus according to claim 19, wherein the processor is configured to assign elements of a shift vector to elements of the input vector before the inner loop is entered; wherein the inner loop comprises: determining the quality metric based on the shift vector and the cyclic leader vector defined by the outer loop; then checking whether a further cyclic shift is to be performed; and if so, performing a cyclic shift with respect to elements of the shift vector and jumping back to the beginning of the inner loop, otherwise exiting the inner loop.
21. The apparatus according to claim 19, wherein the processor is configured to initialize d pointer representatives before the inner loop is entered, d representing the number of ones in the cyclic leader defined by the outer loop, so that the d pointer representatives references to elements in the input vector by indicating the positions of elements of the cyclic leader vector having the value one; wherein the inner loop comprises: determining the quality metric by calculating the sum of the elements in the input vector which are referenced by the d pointer representatives, then checking whether a further cyclic shift is to be performed; and if so, incrementing the indicating positions of the d pointer representatives and jumping back to the beginning of the inner loop, otherwise exiting the inner loop.
22. An apparatus, comprising: means for selecting a shell of a binary cyclic code, wherein each shell is associated with a set of binary codewords having the same Hamming weight; means for selecting at least one cyclic leader vector of the selected shell, wherein the codewords of each shell of the code can be described by a set of cyclic leader vectors and by cyclic shifting each cyclic leader vector; and means for searching for a codeword in a set of codewords by performing at least one cyclic shift with respect to at least one of the selected at least one cyclic leader vector in order to define the set of codewords.
PCT/EP2009/050202 2009-01-09 2009-01-09 Cyclic leader vectors for search of binary cyclic code WO2010078964A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/EP2009/050202 WO2010078964A1 (en) 2009-01-09 2009-01-09 Cyclic leader vectors for search of binary cyclic code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2009/050202 WO2010078964A1 (en) 2009-01-09 2009-01-09 Cyclic leader vectors for search of binary cyclic code

Publications (1)

Publication Number Publication Date
WO2010078964A1 true WO2010078964A1 (en) 2010-07-15

Family

ID=40562912

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2009/050202 WO2010078964A1 (en) 2009-01-09 2009-01-09 Cyclic leader vectors for search of binary cyclic code

Country Status (1)

Country Link
WO (1) WO2010078964A1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003103151A1 (en) * 2002-05-31 2003-12-11 Voiceage Corporation Method and system for multi-rate lattice vector quantization of a signal

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003103151A1 (en) * 2002-05-31 2003-12-11 Voiceage Corporation Method and system for multi-rate lattice vector quantization of a signal

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
DIANAT R ET AL: "New vector quantization-based techniques for reducing the effect of channel noise in image transmission", SIGNAL PROCESSING, ELSEVIER SCIENCE PUBLISHERS B.V. AMSTERDAM, NL, vol. 84, no. 11, 1 November 2004 (2004-11-01), pages 2153 - 2163, XP004591305, ISSN: 0165-1684 *
LAMBLIN C ET AL: "ALGORITHME DE QUANTIFICATION VECTORIELLE SPHERIQUE A PARTIR DU RESEAU DE GOSSET D'ORDRE 8. ÖSPHERICAL VECTOR QUANTIZATION ALGORITHM BASED ON AN EIGHT DIMENSIONAL GOSSET LATTICE", ANNALES DES TELECOMMUNICATIONS, LES MOULINEAUX, FR, vol. 43, no. 3/04, 1 March 1988 (1988-03-01), pages 172 - 186, XP000572495 *
P. RAULT, C. GUILLEMOT: "Indexing Algorithms for Zn, An, Dn, and Dn++ Lattice Vector Quantizers", IEEE TRANS. ON MULTIMEDIA, vol. 3, no. 4, December 2001 (2001-12-01), pages 395 - 404, XP002525426 *
PIERRE LOYER ET AL: "Lattice Codebook Enumeration for Generalized Gaussian Source", IEEE TRANSACTIONS ON INFORMATION THEORY, IEEE, US, vol. 49, no. 2, 1 February 2003 (2003-02-01), XP011074685, ISSN: 0018-9448 *
VASILACHE A ET AL: "Multiple-scale leader-lattice VQ with application to LSF quantization", SIGNAL PROCESSING, ELSEVIER SCIENCE PUBLISHERS B.V. AMSTERDAM, NL, vol. 82, no. 4, 1 April 2002 (2002-04-01), pages 563 - 586, XP004349779, ISSN: 0165-1684 *

Similar Documents

Publication Publication Date Title
US7106228B2 (en) Method and system for multi-rate lattice vector quantization of a signal
US9484951B2 (en) Encoder that optimizes bit allocation for information sub-parts
US7978101B2 (en) Encoder and decoder using arithmetic stage to compress code space that is not fully utilized
EP2274833B1 (en) Vector quantisation method
EP2207167B1 (en) Multistage quantizing method
TWI587640B (en) Method and apparatus for pyramid vector quantization indexing and de-indexing of audio/video sample vectors
US20170301359A1 (en) Pyramid vector quantizer shape search
KR20200058329A (en) 2-D code error correction decoding
WO2010078964A1 (en) Cyclic leader vectors for search of binary cyclic code
US20080154998A1 (en) Method and apparatus for dividing information bit string
US9318115B2 (en) Efficient coding of binary strings for low bit rate entropy audio coding
EP3140911B1 (en) Communication system with coding mechanism and method of operation thereof
KR101868252B1 (en) Audio signal encoder
US10580416B2 (en) Bit error detector for an audio signal decoder
CN113452377A (en) Compression and decompression of weights
WO2010083882A1 (en) Neighbor search in codes
JP2009031519A (en) Vector quantization encoding device, vector quantization decoding device and methods of them, and program and recording medium for the devices
Sanikomm Hardware Implementation of a Novel Image Compression Algorithm

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: 09778926

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: 09778926

Country of ref document: EP

Kind code of ref document: A1