METHODS AND APPARATUS FOR INFORMATION TRANSMISSION
20250055595 ยท 2025-02-13
Inventors
- Chulong LIANG (Shenzhen, CN)
- Jin Xu (Shenzhen, CN)
- Wei Zhao (Shenzhen, CN)
- Liguang Li (Shenzhen, CN)
- Guanghui Yu (Shenzhen, CN)
- Jian KANG (Shenzhen, CN)
- Qiang FU (Shenzhen, CN)
Cpc classification
H04L27/34
ELECTRICITY
H04L27/02
ELECTRICITY
H04L27/18
ELECTRICITY
International classification
Abstract
Methods, apparatus, and systems that relate to Polarization-Adjusted Convolutional (PAC) coding with variable lengths are disclosed. In one example aspect, a method for digital communication includes determining, by a first node, an output bit sequence having E bits based on an input bit sequence having K bits. The output bit sequence is determined based on a transform that is applied prior to applying a Polar transform having a size of N. The transform is based on at least one index set that is a subset of a set of bit indices. The set of bit indices comprises all non-negative integers that are less than N and wherein K<N and K<E. The method also includes transmitting, by the first node, a signal including the output bit sequence to a second node.
Claims
1. A method for digital communication, comprising: determining, by a first node, an output bit sequence having E bits based on an input bit sequence having K bits, wherein the output bit sequence is determined based on an intermediate bit sequence and further based on a transform that is applied prior to applying a Polar transform having a size of N, wherein the transform is based on at least one index set that is a subset of a set of bit indices, wherein the set of bit indices comprises all non-negative integers that are less than N and wherein K<N and K<E; and transmitting, by the first node, a signal including the output bit sequence to a second node.
2. The method of claim 1, wherein the at least one index set comprises all non-negative integers that are equal to or smaller than Q.sub.max, wherein Q.sub.max is an element that has a largest value in a first index set Q having K elements, Q being a subset of the set of bit indices that comprises all non-negative integers that are less than N, and wherein
3. The method of claim 1, wherein the at least one index set is same as an ordered rate matching index set R=<R(0), R(1), . . . , R(N.sub.r2), R(N.sub.r1)>, wherein N.sub.r=min(E, N).
4. The method of claim 1, wherein the at least one index set comprises all non-negative integers that are equal to or smaller than R.sub.max, wherein R.sub.max is an element that has a largest value in an ordered rate matching index set R with
5. The method of claim 1, wherein an j-th bit of the intermediate bit sequence is determined by a convolution bit sequence or a convolution polynomial in response to an index j being in the at least one index set, wherein the convolution bit sequence comprises a generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m], or a recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m]; or wherein the convolution polynomial comprises a generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m-1.Math.D.sub.m-1+g.sub.m.Math.D.sup.m, or a recursive feedback polynomial q(D)=q.sub.0+q.sub.1.Math.D+ . . . +q.sub.m-1.Math.D.sub.m-1+q.sub.m.Math.D.sup.m.
6. A method for digital communication, comprising: receiving, by a second node, a signal including an output bit sequence having E bits from a first node, wherein the output bit sequence is determined based on an intermediate bit sequence; and determining, by the second node, an input bit sequence having K bits by decoding the output bit sequence included in the signal, wherein the input bit sequence is determined based on a transform that is applied after applying an inverse Polar transform having a size of N, wherein the transform is based on at least one index set that is a subset of a set of bit indices, wherein the set of bit indices comprises all non-negative integers that are less than N and wherein K<N and K<E.
7. The method of claim 6, wherein the at least one index set comprises all non-negative integers that are equal to or smaller than Q.sub.max, wherein Q.sub.max is an element that has a largest value in a first index set Q having K elements, Q being a subset of the set of bit indices that comprises all non-negative integers that are less than N, and wherein
8. The method of claim 6, wherein the at least one index set is same as an ordered rate matching index set R=<R(0), R(1), . . . , R(N.sub.r2), R(N.sub.r1)>, wherein N.sub.r=min(E, N).
9. The method of claim 6, wherein the at least one index set comprises all non-negative integers that are equal to or smaller than R.sub.max, wherein R.sub.max is an element that has a largest value in an ordered rate matching index set R with
10. The method of claim 6, wherein an j-th bit of the intermediate bit sequence is determined by a convolution bit sequence or a convolution polynomial in response to an index j being in the at least one index set, wherein the convolution bit sequence comprises a generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m], or a recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m]; or wherein the convolution polynomial comprises a generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m-1.Math.D.sub.m-1+g.sub.m.Math.D.sup.m, or a recursive feedback polynomial q(D)=q.sub.0+q.sub.1.Math.D+ . . . +q.sub.m-1.Math.D.sub.m-1+q.sub.m.Math.D.sup.m.
11. A communication apparatus, comprising at least a processor configured to cause the communication apparatus to: determine an output bit sequence having E bits based on an input bit sequence having K bits, wherein the output bit sequence is determined based on an intermediate bit sequence and further based on a transform that is applied prior to applying a Polar transform having a size of N, wherein the transform is based on at least one index set that is a subset of a set of bit indices, wherein the set of bit indices comprises all non-negative integers that are less than N and wherein K<N and K<E; and transmit a signal including the output bit sequence to a second node.
12. The communication apparatus of claim 11, wherein the at least one index set comprises all non-negative integers that are equal to or smaller than Q.sub.max, wherein Q.sub.max is an element that has a largest value in a first index set Q having K elements, Q being a subset of the set of bit indices that comprises all non-negative integers that are less than N, and wherein
13. The communication apparatus of claim 11, wherein the at least one index set is same as an ordered rate matching index set R=<R(0), R(1), . . . , R(N.sub.r2), R(N.sub.r1)>, wherein N.sub.r=min(E, N).
14. The communication apparatus of claim 11, wherein the at least one index set comprises all non-negative integers that are equal to or smaller than R.sub.max, wherein R.sub.max is an element that has a largest value in an ordered rate matching index set R with
15. The communication apparatus of claim 11, wherein an j-th bit of the intermediate bit sequence is determined by a convolution bit sequence or a convolution polynomial in response to an index j being in the at least one index set, wherein the convolution bit sequence comprises a generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m], or a recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m]; or wherein the convolution polynomial comprises a generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m-1.Math.D.sub.m-1+g.sub.m.Math.D.sup.m, or a recursive feedback polynomial q(D)=q.sub.0+q.sub.1.Math.D+ . . . +q.sub.m-1.Math.D.sub.m-1+q.sub.m.Math.D.sup.m.
16. A communication apparatus, comprising at least a processor configured to cause the communication apparatus to: receive a signal including an output bit sequence having E bits from a first node, wherein the output bit sequence is determined based on an intermediate bit sequence; and determine an input bit sequence having K bits by decoding the output bit sequence included in the signal, wherein the input bit sequence is determined based on a transform that is applied after applying an inverse Polar transform having a size of N, wherein the transform is based on at least one index set that is a subset of a set of bit indices, wherein the set of bit indices comprises all non-negative integers that are less than N and wherein K<N and K<E.
17. The communication apparatus of claim 16, wherein the at least one index set comprises all non-negative integers that are equal to or smaller than Q.sub.max, wherein Q.sub.max is an element that has a largest value in a first index set Q having K elements, Q being a subset of the set of bit indices that comprises all non-negative integers that are less than N, and wherein
18. The communication apparatus of claim 16, wherein the at least one index set is same as an ordered rate matching index set R=<R(0), R(1), . . . , R(N.sub.r2), R(N.sub.r1)>, wherein N.sub.r=min(E, N).
19. The communication apparatus of claim 16, wherein the at least one index set comprises all non-negative integers that are equal to or smaller than R.sub.max, wherein R.sub.max is an element that has a largest value in an ordered rate matching index set R with
20. The communication apparatus of claim 16, wherein an j-th bit of the intermediate bit sequence is determined by a convolution bit sequence or a convolution polynomial in response to an index j being in the at least one index set, wherein the convolution bit sequence comprises a generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m], or a recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m]; or wherein the convolution polynomial comprises a generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m-1.Math.D.sub.m-1+g.sub.m.Math.D.sup.m, or a recursive feedback polynomial q(D)=q.sub.0+q.sub.1.Math.D+ . . . +q.sub.m-1.Math.D.sub.m-1+q.sub.m.Math.D.sup.m.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
DETAILED DESCRIPTION
[0035] In the Fifth generation (5G) mobile communications standard of the Third Generation Partnership Project (3GPP), low-density parity-check (LDPC) codes are used for data transmission. However, LDPC codes does not perform as well as polar codes in short payload size (also referred to a transport block size, TBS). Also, LDPC codes have high error floors (e.g., at a block error rate, BLER, of 0.0001). To fulfill the future ultra-reliable low latency communication (URLLC), there is a need for more powerful channel coding.
[0036] Polarization-Adjusted Convolutional (PAC) codes can achieve finite-length bounds in moderate decoding complexity. As a result, PAC codes have code lengths of N as polar codes, where N=2.sup.n and n is a positive integer. However, the size of a payload, or a transport block (TB), in different wireless channel environments does not always have a code length of N=2.sup.n in time and frequency resources allocated by a base station (BS). Rate matching schemes are thus needed for applying PAC codes in wireless communications to efficiently transmit the payload. This patent document discloses techniques that can be implemented in various embodiments to enable variable lengths of PAC coding so as to adapt to the different payload sizes in wireless communications to improve efficiency.
[0037] Section headings below are used in the present document only to improve readability and do not limit scope of the disclosed embodiments and techniques in each section to only that section. Certain features are described using the example of 5G wireless protocol. However, applicability of the disclosed techniques is not limited to only 5G wireless systems.
Notations
[0038] GF(2) denotes the Galois field of size 2 with two elements 0 and 1.
[0039] br(i) denotes the bit-reversal function.
[0040] floor(x) denotes the largest integer not greater than x.
min(x, y) denotes the minimum value between x and y,
[0041] mod(x, y) denotes the remainder of x divided by y. For example, mod(5, 3)=2 and mod(3, 5)=3.
[0042] X.sub.i,j denotes the element in the i-th row and j-th column of a matrix X, where an boldface capital letter is used to represent a matrix.
[0043] [x.sub.0, x.sub.1, . . . , x.sub.Y-1] denotes a sequence (or a vector) of length Y containing elements x.sub.0, x.sub.1, . . . , x.sub.Y-1.
[0044] {x.sub.0, x.sub.1, . . . , x.sub.Y-1} denotes a set with Y distinct elements x.sub.0, x.sub.1, . . . , x.sub.Y-1, for any ij, x.sub.ix.sub.j.
[0045] <x.sub.0, x.sub.1, . . . , x.sub.Y-1> denotes an ordered set with Y distinct elements x.sub.0, x.sub.1, . . . , x.sub.Y-1, for any ij, x.sub.ix.sub.j. Let X=<x.sub.0, x.sub.1, . . . , x.sub.Y-1>, X(i) denotes the i-th element x.sub.i in the ordered set X.
[0046] For a set X, |X| denotes the set size (the number of elements in the set X).
[0047] Z.sub.N={0, 1, . . . , N2, N1} denotes the integer set containing all non-negative integers smaller than N.
[0048] A matrix with Yr rows and Yc columns is called a Yr-by-Yc matrix.
[0049] An upper triangular matrix X with Yr rows and Yc is such that an element X.sub.i,j in the i-th row and j-th column of the matrix X is 0 for any j<i with i being non-negative integers smaller than Yr and j being non-negative integers smaller than Yc, where Yr and Yc are positive integers.
[0050] Indices for sequences, vectors, or matrices are starting from zero.
[0051] Additional notations are listed in Table 1 below.
TABLE-US-00001 TABLE 1 Example Notations Notations Meanings [b.sub.n1, b.sub.n2, . . . , b.sub.1, b.sub.0] n-bit binary expansion of an integer i B.sup.(N) a bit-reversal permutation matrix with N rows and N columns c = [c.sub.0, c.sub.1, . . . , c.sub.K1] an input bit sequence; a precoding input bit sequence; C a convolution transform matrix of N rows and N columns d = [d.sub.0, d.sub.1, . . . , d.sub.N1] a polar transform output bit sequence; a rate matching input bit sequence; a bit selection input bit sequence; an interleaving input bit sequence; d = [d.sub.0, d.sub.1, . . . , d.sub.N1] an interleaving output bit sequence; a bit selection input bit sequence; D a dummy variable representing delay in a digital circuit e = [e.sub.0, e.sub.1, . . . , e.sub.E1] an output bit sequence; a bit selection output bit sequence; E the length of an output bit sequence f a rate profiling frozen bit sequence F a rate profiling matrix with K rows and N columns g(D) a generator polynomial g(D) = g.sub.0 + g.sub.1 .Math. D + . . . + g.sub.m .Math. D.sup.m over GF(2) g = [g.sub.0, g.sub.1, . . . , g.sub.m] a generator bit sequence defining a generator polynomial g(D) G.sup.(N) a polar transform matrix with N rows and N columns h a precoding frozen bit sequence i, j, k index for an element in a sequence, a vector, a set or a matrix J = [J.sub.0, J.sub.1, . . . , J.sub.N1] an interleaver pattern K the length of an input bit sequence L L largest index in a set m the memory length of a convolution transform; the polynomial degree of a generator polynomial g(D); the polynomial degree of a recursive feedback polynomial q(D). n N = 2.sup.n, order of a polar matrix N the size of a polar matrix N.sub.r an ordered rate matching index set size P.sub.I a precoding input index set P.sub.O a precoding output index set P.sup.(N) a core matrix of a polar matrix = [.sub.0, .sub.1, . . . , .sub.31] a sub-block interleaver pattern q = [q.sub.0, q.sub.1, . . . , q.sub.m] a recursive feedback bit sequence over GF(2) q(D) a recursive feedback polynomial q(D) = q.sub.0 + q.sub.1 .Math. D + . . . + q.sub.m .Math. D.sup.m over GF(2) Q a data bit index set, a subset of the set Z.sub.N Q.sub.max an element that has a largest value in a data bit index set Q R = <R(0), R(1), . . . , an ordered rate matching index set R(N.sub.r 1)> R.sub.max an element that has a largest value in a ordered rate matching index set R s a summation bit t = [t.sub.0, t.sub.1, . . . , t.sub.m1, t.sub.m] a state bit sequence T a pre-transform matrix with N rows and N columns u = [u.sub.0, u.sub.1, . . . , u.sub.N1] a polar transform input sequence; a convolution transform output bit sequence; a pre-transform output bit sequence; a precoding output bit sequence; v = [v.sub.0, v.sub.1, . . . , v.sub.N1] a rate-profiling output bit sequence; a convolution transform input bit sequence; a pre-transform input bit sequence; W a precoding matrix with K rows and N columns x any sequence or vector X any set X any matrix y any sequence or vector Y any sequence length or vector length Z.sub.N a set containing non-negative integers smaller than N, {0, 1, . . . , N 1}
[0052] In the 3GPP 5G standard, polar codes are used in control channel transmissions.
[0053] Operation 110: Adding frozen bits. The adding-frozen-bits operation 110 combines N-K zero bits with the input bit sequence c to form a polar transform input sequence u=[u.sub.0, u.sub.1, . . . , u.sub.N-2, u.sub.N-1] of length N according to the data bit index set Q. The polar transform input sequence u is determined by the input bit sequence c, the data bit index set Q, and the polar matrix size N as follows.
TABLE-US-00002 k = 0; For i = 0 to N1 If i Q u.sub.i = c.sub.k, k = k + 1; Else u.sub.i = 0; End if End for
[0054] Operation 120: Polar transform. The polar transform operation 120 converts a first length-N bit sequence into a second length-N bit sequence by multiplying the first length-N bit sequence and the polar matrix G.sup.(N) over GF(2). A polar transform output bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N-2, d.sub.N-1] of length N is determined by the polar transform input sequence u and the polar matrix G.sup.(N) as d=u.Math.G.sup.(N), where the vector-matrix multiplication is over GF(2).
[0055] Operation 130: Rate matching. The rate matching operation of polar coding in 5G includes two operations: sub-block interleaving and bit selection.
[0056] (1) Sub-block interleaving: An interleaving output bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N-2, d.sub.N-1] of length N is determined by a sub-block interleaver pattern of length 32, the polar transform output bit sequence d, and the polar matrix size N as follows.
TABLE-US-00003 For i = 0 to N1 j = floor(32i/N); J.sub.i = .sub.j(N/32) + mod(i, N/32); d.sub.i = d.sub.Ji; End for
[0057] Here, =[.sub.0, .sub.1, .sub.2, .sub.3, .sub.4, .sub.5, .sub.6, .sub.7, .sub.8, .sub.9, .sub.10, .sub.11, .sub.12, .sub.13, .sub.14, .sub.15, .sub.16, .sub.17, .sub.18, .sub.19, .sub.20, .sub.21, .sub.22, .sub.23, .sub.24, .sub.25, .sub.26, .sub.27, .sub.28, .sub.29, .sub.30, .sub.31]=[0, 1, 2, 4, 3, 5, 6, 7, 8, 16, 9, 17, 10, 18, 11, 19, 12, 20, 13, 21, 14, 22, 15, 23, 24, 25, 26, 28, 27, 29, 30, 31], and J=[J.sub.0, J.sub.1, . . . , J.sub.N-2, J.sub.N-1] is an interleaver pattern of length N determined by the sub-block interleaver pattern and the polar matrix size N. The interleaver pattern J is a permutation of the integer sequence [0, 1, 2, . . . , N2, N1].
[0058] (2) Bit selection: There are three types of bit selection named as repetition, puncturing and shortening. With the interleaving output bit sequence d, the length of the input bit sequence K, the length of the output bit sequence E, and the polar matrix size N, the output bit sequence e is determined as follows.
[0059] A. Repetition: For EN,
[0060] e.sub.k=d.sub.mod(k,N), k=0, 1, 2, . . . , E2, E1.
[0061] B. Puncturing: For E<N and K|E 7/16,
[0062] e.sub.k=d.sub.N-E+k, k=0, 1, 2, . . . , E2, E1.
[0063] C. Shortening: For E<N and K|E> 7/16,
[0064] e.sub.k=dk, k=0, 1, 2, . . . , E2, E1.
[0065] Rate matching can also be alternatively described as follows. Denote R=<R(0), R(1), . . . , R(N.sub.r2), R(N.sub.r1)> as an ordered rate matching index set of size N.sub.r=min(E, N), where the ordered rate matching index set R is a subset of the integer set Z.sub.N. Then, with the polar transform output bit sequence d, the ordered rate matching index set R, the length of the output bit sequence E, and the polar matrix size N, the output bit sequence e is determined as e.sub.k=d.sub.R(mod(k,N), k=0, 1, 2, . . . , E2, E1. Here, the ordered rate matching index set R=<J.sub.0, J.sub.1, . . . , J.sub.N-2, J.sub.N-1> for bit selection with repetition; the ordered rate matching index set R=<J.sub.N-E, J.sub.N-E+1, J.sub.N-E+2, . . . , J.sub.N-2, J.sub.N-1> for bit selection with puncturing; and the ordered rate matching index set R=<J.sub.0, J.sub.1, . . . , J.sub.E-2, J.sub.E-1> for bit selection with shortening. J=[J.sub.0, J.sub.1, . . . , J.sub.N-2, J.sub.N-1] is the interleaver pattern of length N determined in the sub-block interleaving operation.
PAC Coding
[0066] PAC codes is a class of pre-transformed polar codes. Specifically, PAC codes are polar codes using convolution transform.
[0067] Operation 210: Rate profiling. The rate profiling 210 shown in
TABLE-US-00004 k = 0; For i = 0 to N1 If i Q v.sub.i = c.sub.k, k = k + 1; Else v.sub.i = 0; End if End for
[0068] Operation 220: Convolution transform. The convolution transform 220 shown in
TABLE-US-00005 For i = 0 to N1 u.sub.i = 0; For k = 0 to m u.sub.i = mod(u.sub.i + g.sub.k.Math.v.sub.ik, 2); End for End for
where v.sub.i-k=0 if i<k.
[0069] Operation 230: Polar transform. The polar transform 230 as shown in
A Rate Profiling and a Convolution Transform Combines into a Precoding
[0070] The combination of a rate profiling and a convolution transform is a precoding for PAC codes, specifically a convolution precoding, where the precoding input bit sequence is the input bit sequence c=[c.sub.0, c.sub.1, . . . , c.sub.K-2, c.sub.K-1] of length K and the precoding output bit sequence is the convolution transform output bit sequence u=[u.sub.0, u.sub.1, . . . , u.sub.N-2, u.sub.N-1] of length N. Define a state bit sequence t=[t.sub.0, t.sub.1, t.sub.2, . . . , t.sub.m-1, t.sub.m] of length m+1. The precoding output bit sequence u is determined by the precoding input sequence c, the data bit index set Q of size K, the generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m-1, g.sub.m] of length-(m+1) corresponding to the generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m-1.Math.D.sub.m-1+g.sub.m.Math.D.sup.m over GF(2), and the polar matrix size N is as follows.
TABLE-US-00006 For j = 0 to m t.sub.j = 0; End for k = 0; For i = 0 to N1 If i Q t.sub.0 = c.sub.k, k = k + 1; Else t.sub.0 = 0; End if u.sub.i = g.sub.0.Math.t.sub.0; For j = 1 to m u.sub.i = mod(u.sub.i + g.sub.j.Math.t.sub.j, 2); End for For j = m to 1 t.sub.j = t.sub.j1; End for End for
Vector-Matrix Multiplication Description for Rate Profiling of PAC Coding
[0071] The rate profiling operation in PAC coding can be described as vector-matrix multiplication over GF(2). Specifically, the rate-profiling output bit sequence v is determined by the input bit sequence c as: v=c.Math.F, where F is a rate profiling matrix with K rows and N columns defined by the data bit index set Q of size K with the following properties. [0072] (1) The rate profiling matrix F contains all K rows in an N-by-N identity matrix with row indices belonging to the data bit index set Q; [0073] (2) F.sub.i,j=0 for any i and j with 0<j<i<N, where F.sub.i,j is the element in the i-th row and j-th column of the rate profiling matrix F.
[0074] For example, for K=4, N=8 and Q={3, 5, 6, 7}, the rate profiling matrix F is a matrix with 4 rows and 8 columns as follow.
Vector-Matrix Multiplication Description for the Convolution Transform of PAC Coding
[0075] Similar to rate profiling, the convolution transform in PAC coding can be described as vector-matrix multiplication over GF(2). Specifically, the convolution transform output bit sequence u of length N is determined by the convolution transform input bit sequence of length N (the rate profiling output bit sequence v of length N) as u=v.Math.C, where C is a convolution transform matrix of N rows and N columns defined by the generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m-1.Math.D.sub.m-1+g.sub.m.Math.D.sup.m (or equivalently the generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m-1, g.sub.m] of length-(m+1)) and the polar matrix size N. The convolution transform matrix C is a Toeplitz matrix defined as
for i=0, 1, 2, . . . , N1 and j=0, 1, 2, . . . , N1, where C.sub.i,j is the element in the i-th row and j-th column of the convolution transform matrix C. Written in matrix form, the convolution transform matrix C is as follow.
[0076] For example, for N=8 and a generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+g.sub.2.Math.D.sup.2+g.sub.3.Math.D.sup.3=1+D.sup.2+D.sup.3 with a generator bit sequence g=[g.sub.0, g.sub.1, g.sub.2, g.sub.3]=[1, 0, 1, 1] and a memory length m=3, the 8-by-8 convolution transform matrix C is as follows.
Vector-Matrix Multiplication Description for the Precoding of PAC Coding
[0077] With the rate profiling matrix F and the convolution transform matrix C, the precoding of PAC coding is u=c.Math.W=c.Math.F.Math.C, where u is a precoding output bit sequence of length N, the input bit sequence c is a precoding input bit sequence of length K, and the matrix multiplication and the vector-matrix multiplication is over GF(2). W=F.Math.C is the precoding matrix of PAC coding. The precoding matrix W is an upper triangular matrix with K rows and N columns such that an element W.sub.i,j in the i-th row and j-th column of the precoding matrix W is 0 for any j<i with i and j being non-negative integers smaller than N.
[0078] With the rate profiling matrix F and the convolution transform matrix C above, the precoding matrix W=F.Math.C of PAC coding is as follows.
[0079] Referring back to
[0080] Details about the above sets, sequences, matrices, and/or polynomials are further discussed below.
[0081] The data index set Q: The data index set Q is a subset of the first integer set Z.sub.N, wherein the number of elements in the data index set Q is equal to the length of the input bit sequence K (the data index set Q has K elements, or say, the data index set size is K). Elements in the data index set Q are non-negative integers smaller than the polar matrix size N. In a first specific example with N=8 and K=4, a data index set is Q={3, 5, 6, 7}. In a second specific example with N=32 and K=25, a data index set is Q={5, 9, 6, 17, 10, 18, 12, 20, 24, 7, 11, 19, 13, 14, 21, 26, 25, 22, 28, 15, 23, 31, 27, 29, 30}.
[0082] The rate profiling frozen bit sequence f: In some embodiments, the rate profiling frozen bit sequence f can be any bit sequence of length N-K. In a specific example with N=8 and K=3, a rate profiling frozen bit sequence is f=[1, 1, 0, 0, 1]. In another specific example with N=8 and K=3, a rate profiling frozen bit sequence is f=[0, 0, 0, 0, 0]. In a third specific example with N=32 and K=25, a rate profiling frozen bit sequence f is an all-zero bit sequence of length N-K=32-25=7. In some embodiments, the rate profiling frozen bit sequence f can be any bit sequence of length N. In a specific example with N=8, a rate profiling frozen bit sequence is f=[0, 0, 0, 1, 1, 1, 0, 1]. In another specific example with N=8, a rate profiling frozen bit sequence is f=[0, 0, 0, 0, 0, 0, 0, 0]. In a third specific example with N=32, a rate profiling frozen bit sequence f is an all-zero bit sequence of length N=32.
[0083] The rate profiling matrix F: The rate profiling matrix F is an upper triangular matrix with K rows and N columns having the following properties. [0084] (1) F.sub.i,j=0 for any integers i and j with 0j<i<K, wherein F.sub.i,j is the element in the i-th row and the j-th column of the rate profiling matrix F; [0085] (2) The rate profiling matrix F contains N-K all-zero columns; [0086] (3) The rate profiling matrix F contains K columns with only one non-zero element 1, wherein the K columns with only one non-zero element 1 comprises an identity matrix with K rows and K columns.
[0087] In a specific example with K=4 rows and N=8 columns, a rate profiling matrix F is as follows.
[0088] The 0.sup.th, 1.sup.st, 2.sup.nd and 4.sup.th columns are all-zero columns, and the 3.sup.rd, 5.sup.th, 6.sup.th and 7.sup.th columns has only one non-zero element 1 and comprises an identity matrix with K=4 rows and K=4 columns as
[0089] The generator bit sequence g: The generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m] can be any binary sequence of length m+1, wherein m is called the memory length. In a specific example with a memory length m=6, a generator bit sequence is g=[g.sub.0, g.sub.1, g.sub.2, g.sub.3, g.sub.4, g.sub.5, g.sub.6]=[1, 0, 1, 1, 0, 1, 1]. In another specific example with a memory length m=3, a generator bit sequence is g=[g.sub.0, g.sub.1, g.sub.2, g.sub.3]=[1, 1, 0, 1].
[0090] The generator polynomial g(D): The generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m-1.Math.D.sub.m-1+g.sub.m.Math.D.sup.m can be any binary polynomial over GF(2), wherein m is the generator polynomial degree. In a specific example with a memory length m=6, a generator polynomial is g(D)=g.sub.0+g.sub.1.Math.D+g.sub.2.Math.D.sup.2+g.sub.3.Math.D.sup.3+g.sub.4.Math.D++g.sub.5.Math.D.sup.5+g.sub.6.Math.D.sup.6=1+0. D+1.Math.D.sup.2+1.Math.D.sup.3+0.Math.D.sup.4+1.Math.D.sup.5+1.Math.D.sup.6=1+D.sup.2+D.sup.3+D.sup.5+D.sup.6. In another specific example with a memory length m=3, a generator polynomial is g(D)=g.sub.0+g.sub.1.Math.D+g.sub.2.Math.D.sup.2+g.sub.3.Math.D.sup.3=1+1.Math.D+0.Math.D.sup.2+1.Math.D.sup.3=1+D+D.sup.3.
[0091] The recursive feedback bit sequence q: The recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m] is a binary sequence of length m+1 with [q.sub.1, . . . , q.sub.m] being any binary sequence of length m and q.sub.0=1, wherein m is the memory length. In a specific example with a memory length m=3, a recursive feedback bit sequence is q=[q.sub.0, q.sub.1, q.sub.2, q.sub.3, q.sub.4, q.sub.5, q.sub.6]=[1, 0, 1, 0, 1, 1, 1]. In another specific example with a memory length m=3, a recursive feedback bit sequence is q=[q.sub.0, q.sub.1, q.sub.2, q.sub.3]=[1, 0, 1, 1].
[0092] The recursive feedback polynomial q(D): The recursive feedback polynomial q(D)=q.sub.0, +q.sub.1.Math.D+ . . . +q.sub.m-1.Math.D.sub.m-1+q.sub.m.Math.D.sup.m is a binary polynomial with the zero-degree coefficient q.sub.0 being 1 and other coefficients q.sub.1, . . . , q.sub.m being any binary values over GF(2), wherein m is the memory length. In a specific example with a memory length m=6, a recursive feedback polynomial is q(D)=q.sub.0+q.sub.1.Math.D+q.sub.2.Math.D.sup.2+q.sub.3.Math.D.sup.3+q.sub.4.Math.D.sup.4+q.sub.5.Math.D.sup.5+q.sub.6.Math.D.sup.6=1+0.Math.D+1.Math.D.sup.2+0.Math.D.sup.3+1.Math.D.sup.4+1.Math.D.sup.5+1.Math.D.sup.6=1+D.sup.2+D.sup.4+D.sup.5+D.sup.6. In another specific example with a memory length m=3, a recursive feedback polynomial is q(D)=q.sub.0+q.sub.1.Math.D+92.Math.D.sup.2+q.sub.3.Math.D.sup.3=1+0.Math.D+1.Math.D.sup.2+1.Math.D.sup.3=1+D.sup.2+D.sup.3.
[0093] The state bit sequence t: The state bit sequence t is for storing the convolution state.
[0094] The pre-transform matrix T: The pre-transform matrix T is a binary upper triangular matrix with N rows and N columns satisfying the following: T.sub.i,j=0 for any integers i and j with 0j<i<N, wherein T.sub.i,j is the element in the i-th row and the j-th column of the pre-transform matrix T.
[0095] Row properties of the pre-transform matrix T: In some embodiments, the pre-transform matrix T has NN.sub.r rows with all elements being zero, wherein N.sub.r is the size of the ordered rate matching index set. In some embodiments, for a row index i not belonging to the ordered rate matching index set R, all elements in the i-th row of the pre-transform matrix T are zero. In some embodiments, the pre-transform matrix T has N1Q.sub.max rows with all elements being zero, wherein Q.sub.max is an element that has a largest value in the data index set Q with
In some embodiments, the pre-transform matrix T has all elements in the last N1Q.sub.max rows being zero, wherein Q.sub.max is an element that has a largest value in the data index set Q with
In some embodiments, the pre-transform matrix T has all elements in the i-th rows being zero for i being larger than Q.sub.max, wherein Q.sub.max is an element that has a largest value in the data index set Q with
In some embodiments, the pre-transform matrix T has N1R.sub.max rows with all elements being zero, wherein R.sub.max is an element that has a largest value in the ordered rate matching index set R with
In some embodiments, the pre-transform matrix T has all elements in the last N1R.sub.max rows being zero, wherein R.sub.max is an element that has a largest value in the ordered rate matching index set R with
In some embodiments, the pre-transform matrix T has all elements in the i-th rows being zero for i being larger than R.sub.max, wherein R.sub.max is an element that has a largest value in the data index set R with
[0096] Column properties of the pre-transform matrix T: In some embodiments, the pre-transform matrix T has NN.sub.r columns with all elements being zero, wherein N.sub.r is the ordered rate matching index set size. In some embodiments, for a column index j not belonging to the ordered rate matching index set R, all elements in the j-th column of the pre-transform matrix T are zero. In some embodiments, the pre-transform matrix T has N1-Q.sub.max columns with all elements being zero, wherein Q.sub.max is an element that has a largest value in the data index set Q with
In some embodiments, the pre-transform matrix T has all elements in the last N1-Q.sub.max columns being zero, wherein Q.sub.max is an element that has a largest value in the data index set y with
In some embodiments, the pre-transform matrix T has all elements in the j-th column being zero for j being larger than Q.sub.max, wherein Q.sub.max is an element that has a largest value in the data index set Q with
In some embodiments, the pre-transform matrix T has N1R.sub.max columns with all elements being zero, wherein R.sub.max is an element that has a largest value in the ordered rate matching index set R with
In some embodiments, the pre-transform matrix T has all elements in the last N1R.sub.max columns being zero, wherein R.sub.max is an element that has a largest value in the ordered rate matching index set R with
In some embodiments, the pre-transform matrix T has all elements in the j-th column being zero for j being larger than R.sub.max, wherein R.sub.max is an element that has a largest value in the data index set R with
[0097] The precoding matrix W: The precoding matrix W is a binary upper triangular matrix with K rows and N columns having the following properties: W.sub.i,j=0 for any integers i and j with 0 j<i<K, where W.sub.i,j is the element in the i-th row and j-th column of the precoding matrix W.
[0098] In some embodiments, the precoding matrix W has at least NN.sub.r columns with all elements being zero, wherein N.sub.r is the set size of the ordered rate matching index set R. In some embodiments, for a column index j not belonging to the ordered rate matching index set R, all elements in the j-th column of the precoding matrix W are zero.
[0099] In some embodiments, the precoding matrix W has at least N1R.sub.max columns with all elements being zero, wherein R.sub.max is an element that has a largest value in the data index set R with
[0100] In some embodiments, for a column index j larger than R.sub.max, all elements in the j-th column of the precoding matrix W are zero, wherein R.sub.max is an element that has a largest in the data index set R with
[0101] The ordered rate matching index set R: The ordered rate matching index set R can be any subset of the first integer set Z.sub.N having N.sub.r elements, wherein N.sub.r=min(N, E) and elements in the ordered rate matching index set R are non-negative integers smaller than the polar matrix size N. A first specific example of the ordered rate matching index set R is of size N.sub.r=N and R contains all elements in the first integer set Z.sub.N, wherein R=<R(0), R(1), R(2), . . . , R(N.sub.r2), R(N.sub.r1)>=<0, 1, 2, . . . , N2, N1>. A second specific example of the ordered rate matching index set R is of size N.sub.r=E and R contains all non-negative integers smaller than E: R=<R(0), R(1), R(2), . . . , R(N.sub.r2), R(N.sub.r1)>=<0, 1, 2, . . . , E2, E1>. A third specific example of the ordered rate matching index set R is of size N.sub.r=E and R contains all integers smaller than N and larger than NE1: R=<R(0), R(1), R(2), . . . , R(N.sub.r2), R(N.sub.r1)>=<NE, NE+1, NE+2, . . . , N2, N1>. Let J=[J.sub.0, J.sub.1, . . . , J.sub.N-2, J.sub.N-1] be an interleaver pattern of length N determined by the sub-block interleaver pattern =[.sub.0, .sub.1, .sub.2, .sub.3, .sub.4, .sub.5, .sub.6, .sub.7, .sub.8, .sub.9, .sub.10, .sub.11, .sub.12, .sub.13, .sub.14, .sub.15, .sub.16, .sub.17, .sub.18, .sub.19, .sub.20, .sub.21, .sub.22, .sub.23, .sub.24, .sub.25, .sub.26, .sub.27, .sub.28, .sub.29, .sub.30, .sub.31]=[0, 1, 2, 4, 3, 5, 6, 7, 8, 16, 9, 17, 10, 18, 11, 19, 12, 20, 13, 21, 14, 22, 15, 23, 24, 25, 26, 28, 27, 29, 30, 31] and the polar matrix size N as follows. Here, J=[J.sub.0, J.sub.1, . . . , J.sub.N-2, J.sub.N-1] is an interleaver pattern that is a permutation of the integer sequence [0, 1, 2, . . . , N2, N1], wherein a specific example of J is defined as follows.
TABLE-US-00007 For i = 0 to N1 j = floor(32i/N); J.sub.i = .sub.j(N/32) + mod(i, N/32); d.sub.i = d.sub.Ji; End for
[0102] A fourth specific example of the ordered rate matching index set R is of size N.sub.r=N and R contains all elements in the first integer set Z.sub.N. R=<R(0), R(1), R(2), . . . , R(N.sub.r2), R(N.sub.r1)>=<J.sub.0, J.sub.1, . . . , J.sub.N-2, J.sub.N-1>; wherein, J.sub.i is the i-th element in the interleaver pattern J=[J.sub.0, J.sub.1, . . . , J.sub.N-2, J.sub.N-1]. A fifth specific example of the ordered rate matching index set R is of size N.sub.r=E and R contains all elements in the interleaver pattern J with indices smaller than E. R=<R(0), R(1), R(2), . . . , R(N.sub.r2), R(N.sub.r1)>=<J.sub.0, J.sub.1, . . . , J.sub.E-2, J.sub.E-1>, wherein, J; is the i-th element in the interleaver pattern J=[J.sub.0, J.sub.1, . . . , J.sub.N-2, J.sub.N-1]. A sixth specific example of the ordered rate matching index set R is of size N.sub.r=E and R contains all elements in the interleaver pattern J with indices larger than NE1 and smaller than N. R=<R(0), R(1), R(2), . . . , R(N.sub.r2), R(N.sub.r1)>=<J.sub.N-E, J.sub.N-E+1, J.sub.N-E+2, . . . , J.sub.N-2, J.sub.N-1>, wherein, J.sub.i is the i- th element in the interleaver pattern J=[J.sub.0, J.sub.1, . . . , J.sub.N-2, J.sub.N-1].
[0103] The precoding input set P.sub.I: The precoding input index set P.sub.I can be any subset of the first integer set Z.sub.N. The precoding input set P.sub.I can be used in a pre-transform operation of precoding to enable variable lengths so as to improve transmission efficiency of the payload.
[0104] A first specific example of the precoding input index set P.sub.I is P.sub.I equal to the first integer set Z.sub.N. A second specific example of the precoding input index set P.sub.I is that P.sub.I consists of all non-negative integers not greater than Q.sub.max, P.sub.I={0, 1, 2, . . . , Q.sub.max1, Q.sub.max} with Q.sub.max+1 elements, wherein Q.sub.max is an element that has the largest value in the data index set Q with
A third specific example of the precoding input index set P.sub.I is P.sub.I equal to the ordered rate matching index set R. A fourth specific example of the precoding input index set P.sub.I is that P.sub.I consists of all non-negative integers not greater than R.sub.max, P.sub.I={0, 1, 2, . . . , R.sub.max1, R.sub.max} with R.sub.max+1 elements, wherein R.sub.max is an element that has the largest value in the ordered rate matching index set R with
[0105] The precoding output set P.sub.O: The precoding output index set P.sub.O can be any subset of the first integer set Z.sub.N. The precoding output index set P.sub.O can be used in a pre-transform operation of precoding to enable variable lengths so as to improve transmission efficiency of the payload.
[0106] A first specific example of the precoding output index set P.sub.O is P.sub.O equal to the first integer set Z.sub.N. A second specific example of the precoding output index set P.sub.O is that P.sub.O consists of all non-negative integers not greater than Q.sub.max, P.sub.O={0, 1, 2, . . . , Q.sub.max1, Q.sub.max} with Q.sub.max+1 elements, wherein Q.sub.max is the element with largest value in the data index set Q with
A third specific example of the precoding output index set P.sub.O is P.sub.O equal to the ordered rate matching index set R. A fourth specific example of the precoding output index set P.sub.O is that P.sub.O consists all non-negative integers not greater than R.sub.max, P.sub.O={0, 1, 2, . . . , R.sub.max1, R.sub.max} with R.sub.max+1 elements, wherein R.sub.max is the element with largest value in the ordered rate matching index set R with
[0107] The precoding frozen bit sequence h: In some embodiments, the precoding frozen bit sequence h can be any bit sequence of length NN.sub.PO, wherein N.sub.PO is the size of the precoding output index set P.sub.O and N is the polar matrix size. A specific example with N=8 and N.sub.PO=5, the precoding frozen bit sequence is h=[1, 0, 1] of length NN.sub.PO=85=3. Another specific example with N=32 and N.sub.PO=5, the precoding frozen bit sequence h is an all-zero sequence of length NN.sub.PO=32-5=27.
[0108] In some embodiments, the precoding frozen bit sequence h can be any bit sequence of length N, wherein N is the polar matrix size. A specific example with N=8, the precoding frozen bit sequence is h=[0, 0, 0, 0, 0, 1, 0, 1] of length N=8. Another specific example with N=32, the precoding frozen bit sequence h is an all-zero sequence of length N=32.
[0109] The polar matrix G.sup.(N): The polar matrix G.sup.(N) with N rows and N columns is one of the following: (1) G.sup.(N)=(P.sup.(2)).sup..Math.n; (2) G.sup.(N)=B.sup.(N).Math.(P.sup.(2)).sup..Math.n; (3) G.sup.(N)=P(N); or (4) G.sup.(N)=B.sup.(N).Math.P.sup.(N), where the matrix operation is over GF(2),
is the n-th Kronecker power of the matrix P.sup.(2), and B.sup.(N) is a bit-reversal permutation matrix with N rows and N columns. 0 is an all-zero matrix with N/2 rows and N/2 columns. Let B.sub.i,j.sup.(N) be the element at the i-th row and j-th column of the bit-reversal permutation matrix B.sup.(N). Then, we have
for 0<i<N and 0<j<N, where br(i) is the bit-reversal function defined as br(i)=.sub.k=0.sup.n-1b.sub.k.Math.2.sup.n-1-k and [b.sub.n-1, b.sub.n-2, . . . , b.sub.1, b.sub.0] is the n-bit binary expansion of the integer i=.sub.k=0.sup.n-1b.sub.k.Math.2.sup.k. A sequence (or a vector) x of length N over GF(2) multiplying the polar matrix G.sup.(N) over GF(2) is called a polar transform on the sequence (vector) x. Denote y=x.Math.G.sup.(N), where the vector-matrix multiplication is performed over GF(2). Then, y is the polar transform of x.
[0110]
Properties of the Precoding Output Bit Sequence u
[0111] In some embodiments, the i-th bit u.sub.i in the precoding output sequence u is determined by a subset of elements in the precoding input bit sequence c with indices in the integer set {0, 1, 2, . . . , i1, i}, all non-negative integers not greater than i.
[0112] In some embodiments, the i-th bit u.sub.i in the precoding output sequence u is a linear combination over GF(2) of elements c.sub.0, c.sub.1, c.sub.2, . . . , c.sub.i-1, c.sub.i in the precoding input bit sequence c.
[0113] In some embodiments, the i-th output bit u.sub.i in the precoding output sequence u of length N is determined by a sub-sequence of the precoding input sequence c with indices in the set {0, 1, 2, . . . , NE(i)2, NE(i)1} and the rate profile frozen bit sequence f=[f.sub.0, f.sub.1, . . . , f.sub.N-K-1] of length N-K, wherein NE(i) is the size of the set {0, 1, 2, . . . , i}Q, wherein, the rate profile frozen bit sequence f can be any binary sequence of length N-K. In some embodiments, the rate profile frozen bit sequence f is the all-zero sequence of length N-K.
[0114] In some embodiments, for i not belonging to the precoding output index set P.sub.O, the i-th output bit u.sub.i in the precoding output sequence u of length N is set to a bit in a precoding frozen bit sequence h=[h.sub.0, h.sub.1, . . . , h.sub.N.sub.
[0115] In some embodiments, for i not belonging to the precoding output index set P.sub.O, the i-th output bit u.sub.i in the precoding output sequence u of length N is set to bit 0.
[0116] In some embodiments, the i-th bit u.sub.i in the precoding output sequence u is determined by both a subset of elements in the precoding input bit sequence c with indices in the integer set {0, 1, 2, . . . , i1, i} and a subset of elements in the precoding output bit sequence u with indices in the integer set {0, 1, 2, . . . , i2, i1}.
[0117] In some embodiments, the i-th bit u.sub.i in the precoding output sequence u is a linear combination over GF(2) of elements c.sub.0, c.sub.1, c.sub.2, . . . , c.sub.i-1, c.sub.i in the precoding input bit sequence c and elements u.sub.0, u.sub.1, u.sub.2, . . . , u.sub.i-2, u.sub.i-1 in the precoding output bit sequence u.
[0118] In some embodiments, a precoding output bit in the precoding output bit sequence u is determined by both (1) current precoding input bit and preceding precoding input bits in the precoding input bit sequence c; and (2) current precoding output bit and preceding precoding output bits in the precoding output bit sequence u.
Precoding Using the Precoding Matrix W
[0119] In some embodiments, the precoding input sequence c has a length K. The precoding output bit sequence u has a length N. The precoding output bit sequence u is determined by performing vector-matrix multiplication on the precoding input bit sequence c and the precoding matrix W with K rows and N columns as u=c.Math.W. The precoding input sequence c of length K is the input bit sequence of length K and the vector-matrix multiplication is performed over GF(2).
Precoding Using the Precoding Matrix W and the Precoding Frozen Bit Sequence h
[0120] In some embodiments, the precoding output bit sequence u of length N is determined by performing vector-matrix multiplication on the precoding input bit sequence c and the precoding matrix W with K rows and N columns and adding the precoding frozen bit sequence h of length N as u=c.Math.W+h. The precoding input sequence c of length K is the input bit sequence of length K. Both the vector-matrix multiplication and the vector-vector addition are performed over GF(2).
Precoding Using the Rate Profiling Matrix F and the Pre-Transform Matrix T
[0121] In some embodiments, the precoding output sequence u of length N is determined using both the rate profiling matrix F with K rows and N columns and the pre-transform matrix T with N rows and N columns by multiplying the precoding input sequence c with the rate profiling matrix F and the pre-transform matrix T as u=c.Math.F.Math.T. The precoding input sequence c is the input bit sequence c of length K, N is the polar matrix size, and the matrix multiplication and the vector-matrix multiplication are performed over GF(2).
[0122] In some embodiments, the precoding output sequence u of length N is determined using the rate profiling matrix F with K rows and N columns, the rate profiling frozen bit sequence f of length N, and the pre-transform matrix T with N rows and N columns by multiplying the precoding input sequence c with the rate profiling matrix F over GF(2), adding the rate profiling frozen bit sequence f of length N over GF(2), and multiplying the pre-transform matrix T over GF(2) as u=(c.Math.F+f).Math.T. The precoding input sequence e is the input bit sequence e of length K. N is the polar matrix size. The matrix multiplication, the vector-matrix multiplication and the vector-vector addition are performed over GF(2).
[0123] In some embodiments, the precoding output sequence u of length N is determined using the rate profiling matrix F with K rows and N columns, the pre-transform matrix T with N rows and N columns, and the precoding frozen bit sequence h of length N by multiplying the precoding input sequence c with the rate profiling matrix F over GF(2); multiplying the pre-transform matrix T over GF(2); and adding the precoding frozen bit sequence h of length N over GF(2) as u=c.Math.F.Math.T+h. The precoding input sequence c is the input bit sequence c of length K. N is the polar matrix size. The matrix multiplication, the vector-matrix multiplication and the vector-vector addition are performed over GF(2).
[0124] In some embodiments, the precoding output sequence u of length N is determined using both the rate profiling matrix F with K rows and N columns, the rate profiling frozen bit sequence f of length N, the pre-transform matrix T with N rows and N columns, and the precoding frozen bit sequence h of length N by multiplying the precoding input sequence c with the rate profiling matrix F over GF(2); adding the rate profiling frozen bit sequence f of length N over GF(2); multiplying the pre-transform matrix T over GF(2); and adding the precoding frozen bit sequence h of length N over GF(2) as u=(c.Math.F+f).Math.T+h. The precoding input sequence c is the input bit sequence c of length K. N is the polar matrix size. The matrix multiplication, the vector-matrix multiplication and the vector-vector addition are performed over GF(2).
Precoding Determined by Q, f, g or (D), P.sub.I, and P.sub.O, h, t
[0125] In some embodiments, the precoding determines the precoding output bit sequence u of length N using at least one of the following: the data index set Q, the rate profiling frozen bit sequence f, the generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m], the generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m-1.Math.D.sub.m-1+g.sub.m.Math.D.sup.m over GF(2), the precoding input index set P.sub.I, the precoding output index set P.sub.O, the precoding frozen bit sequence h, or the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m]. The rate profiling frozen bit sequence f is of length N-K, the precoding frozen bit sequence h is of length NN.sub.PO and N.sub.PO is the size of the precoding output index set P.sub.O.
[0126] Table 2 shows example Algorithms 1A-1L, which are example implementations for the precoding. In the example Algorithms 1A-1L, the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] is initialized to all zeros. If an index i belong to the data index set Q, the bit to in the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] is set to a bit in the precoding input bit sequence c. If an index i belongs to the precoding output index set P.sub.O, the i-th bit u.sub.i of the precoding output bit sequence u is determined by the generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m] and the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m], wherein, u.sub.i=mod(.sub.j=0.sup.mg.sub.j.Math.t.sub.j, 2). If an index i belongs to the precoding output index set P.sub.O, the i-th bit u.sub.i of the precoding output bit sequence u is determined by the generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m-1.Math.D.sub.m-1+g.sub.m.Math.D.sup.m over GF(2) (e.g., as shown in
TABLE-US-00008 TABLE 2 Example Algorithms 1A-1L Algorithm 1A Algorithm 1B Algorithm 1C For j = 0 to m For j = 0 to m For j = 0 to m t.sub.j = 0; t.sub.j = 0; t.sub.j = 0; End for End for End for k = 0; k = 0; k = 0; k = 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Q If i Q If i Q t.sub.0 = c.sub.k; t.sub.0 = c.sub.k; t.sub.0 = c.sub.k; k = k + 1; k = k + 1; k = k + 1; Else Else Else t.sub.0 = 0; t.sub.0 = 0; t.sub.0 = 0; End if End if End if If i P.sub.O If i P.sub.O If i P.sub.O u.sub.i = 0; u.sub.i = 0; u.sub.i = 0; For j = 0 to m For j = 0 to m For j = 0 to m u.sub.i = mod(u.sub.i + u.sub.i = mod(u.sub.i + u.sub.i = mod(u.sub.i + g.sub.j.Math.t.sub.j, 2); g.sub.j.Math.t.sub.j, 2); g.sub.j.Math.t.sub.j, 2); End for End for End for Else Else Else u.sub.i = 0; u.sub.i = t.sub.0; u.sub.i = h.sub.k; End if End if k = k + 1; End if If i P.sub.I If i P.sub.I If i P.sub.I For j = m to 1 For j = m to 1 For j = m to 1 t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; End for End for End for End if End if End if End for End for End for Algorithm 1D Algorithm 1E Algorithm 1F For j = 0 to m For j = 0 to m For j = 0 to m t.sub.j = 0; t.sub.j = 0; t.sub.j = 0; End for End for End for k = 0; k = 0; k = 0; k = 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Q If i Q If i Q t.sub.0 = c.sub.k; t.sub.0 = c.sub.k; t.sub.0 = c.sub.k; k = k + 1; k = k + 1; k = k + 1; Else Else Else t.sub.0 = f.sub.ik; t.sub.0 = f.sub.ik; t.sub.0 = f.sub.ik; End if End if End if If i P.sub.O If i P.sub.O If i P.sub.O u.sub.i = 0; u.sub.i = 0; u.sub.i = 0; For j = 0 to m For j = 0 to m For j = 0 to m u.sub.i = mod(u.sub.i + u.sub.i = mod(u.sub.i + u.sub.i = mod(u.sub.i + g.sub.j.Math.t.sub.j, 2); g.sub.j.Math.t.sub.j, 2); g.sub.j.Math.t.sub.j, 2); End for End for End for Else Else Else u.sub.i = 0; u.sub.i = 0; u.sub.i = h.sub.k; End if End if k = k + 1; End if If i P.sub.I If i P.sub.I If i P.sub.I For j = m to 1 For j = m to 1 For j = m to 1 t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; End for End for End for End if End if End if End for End for End for Algorithm 1G Algorithm 1H Algorithm 1I For j = 0 to m For j = 0 to m For j = 0 to m t.sub.j = 0; t.sub.j = 0; t.sub.j = 0; End for End for End for k = 0; k = 0; k = 0; k = 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Q If i Q If i Q t.sub.0 = c.sub.k, t.sub.0 = c.sub.k, t.sub.0 = c.sub.k, k = k + 1; k = k + 1; k = k + 1; Else Else Else t.sub.0 = 0; t.sub.0 = 0; t.sub.0 = 0; End if End if End if If i P.sub.O If i P.sub.O If i P.sub.O u.sub.i = 0; u.sub.i = 0; u.sub.i = 0; For j = 0 to m For j = 0 to m For j = 0 to m u.sub.i = mod(u.sub.i + u.sub.i = mod(u.sub.i + u.sub.i = mod(u.sub.i + g.sub.j.Math.t.sub.j, 2); g.sub.j.Math.t.sub.j, 2); g.sub.j.Math.t.sub.j, 2); End for End for End for Else Else Else u.sub.i = 0; u.sub.i = t.sub.0; u.sub.i = h.sub.k; End if End if k = k + 1; End if For j = m to 1 For j = m to 1 For j = m to 1 t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; End for End for End for End for End for End for Algorithm 1J Algorithm 1K Algorithm 1L For j = 0 to m For j = 0 to m For j = 0 to m t.sub.j = 0; t.sub.j = 0; t.sub.j = 0; End for End for End for k = 0; k = 0; k = 0; k = 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Q If i Q If i Q t.sub.0 = c.sub.k; t.sub.0 = c.sub.k; t.sub.0 = c.sub.k; k = k + 1; k = k + 1; k = k + 1; Else Else Else t.sub.0 = f.sub.ik; t.sub.0 = f.sub.ik; t.sub.0 = f.sub.ik; End if End if End if If i P.sub.O If i P.sub.O If i P.sub.O u.sub.i = 0; u.sub.i = 0; u.sub.i = 0; For j = 0 to m For j = 0 to m For j = 0 to m u.sub.i = mod(u.sub.i + u.sub.i = mod(u.sub.i + u.sub.i = mod(u.sub.i + g.sub.j.Math.t.sub.j, 2); g.sub.j.Math.t.sub.j, 2); g.sub.j.Math.t.sub.j, 2); End for End for End for Else Else Else u.sub.i = 0; u.sub.i = t.sub.0; u.sub.i = h.sub.k; End if End if k = k + 1; End if For j = m to 1 For j = m to 1 For j = m to 1 t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; End for End for End for End for End for End for
[0127] In some embodiments, if an index i does not belong to the data index set Q, the bit t.sub.0 in the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] is set to 0, e.g., as in Algorithms 1A, 1B, 1C, 1G, 1H, and 1I. In some examples, if an index i does not belong to the data index set Q, the bit to in the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] is set to a bit in the rate profiling frozen bit sequence f, e.g., as shown in Algorithms 1D, 1E, 1F, 1J, 1K, and 1L.
[0128] In some embodiments, if an index i does not belong to the precoding output index set P.sub.O, the i-th bit u.sub.i of the precoding output bit sequence u is set to 0, e.g., as shown in Algorithms 1A, 1D, 1G, and 1J.
[0129] In some embodiments, if an index i does not belong to the precoding output index set P.sub.O, the i-th bit u.sub.i of the precoding output bit sequence u is set to t.sub.0 in the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m], e.g., as shown in Algorithms 1B, 1E, 1H, and 1K.
[0130] In some examples, if an index i does not belong to the precoding output index set P.sub.O, the i-th bit u.sub.i of the precoding output bit sequence u is set to a bit in the precoding frozen bit sequence h, as shown in Algorithms 1C, 1F, 1I, and 1L. The precoding frozen bit sequence h is of length NN.sub.PO and N.sub.PO is the size of the precoding output index set P.sub.O.
[0131] In some examples, if an index i belongs to the precoding input index set P.sub.I, a right shift is performed on the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] as follows.
TABLE-US-00009 For j = m to 1 t.sub.j = t.sub.j1; End for
[0132] In some examples, for all indices i, a right shift is performed on the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] as follows.
TABLE-US-00010 For j = m to 1 t.sub.j = t.sub.j1; End for
[0133] The state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] of length m+1 is for storing the convolution state. g.sub.j can be either elements in the generator bit sequence g or coefficients in the generator polynomial g(D), e.g., as shown in
Precoding Determined by Q, f, g or q(D), P.sub.I, and P.sub.O, h, t
[0134] In some embodiments, the precoding determines the precoding output bit sequence u of length N using at least one of the following: the data index set Q, the rate profiling frozen bit sequence f, the recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m], the recursive feedback polynomial q(D)=q.sub.0+q.sub.1.Math.D+ . . . +q.sub.m.Math.D.sup.m over GF(2), the precoding input index set P.sub.I, the precoding output index set P.sub.O, the precoding frozen bit sequence h, or the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] of length m+1. The rate profiling frozen bit sequence f is of length N-K. The precoding frozen bit sequence h is of length NN.sub.PO and N.sub.PO is the size of the precoding output index set P.sub.O.
[0135] Table 3 shows example Algorithms 2A-2L, which are example implementations for the precoding. In the example Algorithms 2A-2L, the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] is initialized to all zeros. If an index i belong to the data index set Q, the bit to in the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] is set to a bit in the precoding input bit sequence c. If an index i belongs to the precoding output index set P.sub.O, the i-th bit u.sub.i of the precoding output bit sequence u is determined by the recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m] and the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m], wherein, u.sub.i=mod(.sub.j=0.sup.mg.sub.j.Math.t.sub.j, 2). If an index i belongs to the precoding output index set P.sub.O, the i-th bit u.sub.i of the precoding output bit sequence u is determined by the recursive feedback polynomial q(D)=q.sub.0+q.sub.1.Math.D+ . . . +q.sub.m-1.Math.D.sub.m-1+q.sub.m.Math.D.sup.m over GF(2) and the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m], wherein, u.sub.i=mod(.sub.j=0.sup.mg.sub.j.Math.t.sub.j, 2).
TABLE-US-00011 TABLE 3 Example Algorithms 2A-2L Algorithm 2A Algorithm 2B Algorithm 2C For j = 0 to m For j = 0 to m For j = 0 to m t.sub.j = 0; t.sub.j = 0; t.sub.j = 0; End for End for End for k = 0; k = 0; k = 0; k = 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Q If i Q If i Q t.sub.0 = ck; t.sub.0 = ck; t.sub.0 = ck; k = k + 1; k = k + 1; k = k + 1; Else Else Else t.sub.0 = 0; t.sub.0 = 0; t.sub.0 = 0; End if End if End if If i Po If i Po If i Po u.sub.i = 0; u.sub.i = 0; u.sub.i = 0; For j = 0 to m For j = 0 to m For j = 0 to m u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, 2); 2); 2); End for End for End for t.sub.0 = u.sub.i; t.sub.0 = u.sub.i; t.sub.0 = u.sub.i; Else Else Else u.sub.i = 0; u.sub.i = t.sub.0; u.sub.i = h.sub.k; End if End if k = k + 1; End if If i P.sub.I If i P.sub.I If i P.sub.I For j = m to 1 For j = m to 1 For j = m to 1 t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; End for End for End for End if End if End if End for End for End for Algorithm 2D Algorithm 2E Algorithm 2F For j = 0 to m For j = 0 to m For j = 0 to m t.sub.j = 0; t.sub.j = 0; t.sub.j = 0; End for End for End for k = 0; k = 0; k = 0; k = 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Q If i Q If i Q t.sub.0 = c.sub.k; t.sub.0 = c.sub.k; t.sub.0 = c.sub.k; k = k + 1; k = k + 1; k = k + 1; Else Else Else t.sub.0 = f.sub.1k; t.sub.0 = f.sub.1k; t.sub.0 = f.sub.1k; End if End if End if If i Po If i Po If i Po u.sub.i = 0; u.sub.i = 0; u.sub.i = 0; For j = 0 to m For j = 0 to m For j = 0 to m u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, 2); 2); 2); End for End for End for t.sub.0 = u.sub.i; t.sub.0 = u.sub.i; t.sub.0 = u.sub.i; Else Else Else u.sub.i = 0; u.sub.i = t.sub.0; u.sub.i = h.sub.k; End if End if k = k + 1; End if If i P.sub.I If i P.sub.I If i P.sub.I For j = m to 1 For j = m to 1 For j = m to 1 t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; End for End for End for End if End if End if End for End for End for Algorithm 2G Algorithm 2H Algorithm 2I For j = 0 to m For j = 0 to m For j = 0 to m t.sub.j = 0; t.sub.j = 0; t.sub.j = 0; End for End for End for k = 0; k = 0; k = 0; k = 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Q If i Q If i Q t.sub.0 = ck; t.sub.0 = ck; t.sub.0 = ck; k = k + 1; k = k + 1; k = k + 1; Else Else Else t.sub.0 = 0; t.sub.0 = 0; t.sub.0 = 0; End if End if End if If i Po If i Po If i Po u.sub.i = 0; u.sub.i = 0; u.sub.i = 0; For j = 0 to m For j = 0 to m For j = 0 to m u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, 2); 2); 2); End for End for End for t.sub.0 = u.sub.i; t.sub.0 = u.sub.i; t.sub.0 = u.sub.i; Else Else Else u.sub.i = 0; u.sub.i = t.sub.0; u.sub.i = h.sub.k; End if End if k = k + 1; End if For j = m to 1 For j = m to 1 For j = m to 1 t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; End for End for End for End for End for End for Algorithm 2J Algorithm 2K Algorithm 2L For j = 0 to m For j = 0 to m For j = 0 to m t.sub.j = 0; t.sub.j = 0; t.sub.j = 0; End for End for End for k = 0; k = 0; k = 0; k = 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Q If i Q If i Q t.sub.0 = ck; t.sub.0 = ck; t.sub.0 = ck; k = k + 1; k = k + 1; k = k + 1; Else Else Else t.sub.0 = f.sub.1k; t.sub.0 = f.sub.1k; t.sub.0 = f.sub.1k; End if End if End if If i Po If i Po If i Po u.sub.i = 0; u.sub.i = 0; u.sub.i = 0; For j = 0 to m For j = 0 to m For j = 0 to m u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, 2); 2); 2); End for End for End for t.sub.0 = u.sub.i; t.sub.0 = u.sub.i; t.sub.0 = u.sub.i; Else Else Else u.sub.i = 0; u.sub.i = t.sub.0; u.sub.i = h.sub.k; End if End if k = k + 1; End if For j = m to 1 For j = m to 1 For j = m to 1 t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; End for End for End for End for End for End for
[0136] In some embodiments, if an index i does not belong to the data index set Q, the bit to in the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] is set to 0. e.g., as in Algorithms 2A, 2B, 2C, 2G, 2H, and 2I.
[0137] In some embodiments, if an index i does not belong to the data index set Q, the bit to in the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] is set to a bit in the rate profiling frozen bit sequence f, e.g., as in Algorithms 2D, 2E, 2F, 2J, 2K, and 2L.
[0138] In some embodiments, if an index i does not belong to the precoding output index set P.sub.O, the i-th bit u.sub.i of the precoding output bit sequence u is set to 0, e.g., as in Algorithms 2A, 2D, 2G, and 2J.
[0139] In some embodiments, if an index i does not belong to the precoding output index set P.sub.O, the i-th bit u.sub.i of the precoding output bit sequence u is set to t.sub.0 in the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m], e.g., as in Algorithms 2B, 2E, 2H, and 2K.
[0140] In some embodiments, if an index i does not belong to the precoding output index set P.sub.O, the i-th bit u.sub.i of the precoding output bit sequence u is set to a bit in the precoding frozen bit sequence h, e.g., as in Algorithms 2C, 2F, 2I, and 2L. The precoding frozen bit sequence h is of length NN.sub.PO and N.sub.PO is the size of the precoding output index set P.sub.O.
[0141] In some examples, if an index i belongs to the precoding input index set P.sub.I, a right shift is performed on the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] as follows.
TABLE-US-00012 For j = m to 1 t.sub.j = t.sub.j1; End for
[0142] In some examples, for all indices i, a right shift is performed on the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] as follows.
TABLE-US-00013 For j = m to 1 t.sub.j = t.sub.j1; End for
[0143] t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] is a state bit sequence of length m+1 for storing the convolution state. q.sub.j can be either elements in the recursive feedback bit sequence q or coefficients in the recursive feedback polynomial q(D).
Precoding Determined by Q, f, g or g(D), q or q(D), P.sub.I, and P.sub.O, h, t
[0144] In some embodiments, the precoding determines the precoding output bit sequence u of length N using at least one of the following: the data index set Q, the rate profiling frozen bit sequence f, the generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m], the generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m.Math.D.sup.m over GF(2), the recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m], the recursive feedback polynomial q(D)=q.sub.0+q.sub.1.Math.D+ . . . +q.sub.m.Math.D.sup.m over GF(2), the precoding input index set P.sub.I, the precoding output index set P.sub.O, the precoding frozen bit sequence h, or the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m]. The rate profiling frozen bit sequence f is of length N-K. The precoding frozen bit sequence h is of length NN.sub.PO and N.sub.PO is the size of the precoding output index set P.sub.O.
[0145] Table 4 shows example Algorithms 3A-3L, which are example implementations for the precoding. In the example Algorithm 3A-3L, the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] is initialized to all zeros. If an index i belong to the data index set Q, the bit to in the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] is set to a bit in the precoding input bit sequence c. If an index i belongs to the precoding output index set P.sub.O, the i-th bit u.sub.i of the precoding output bit sequence u is determined by the generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m] (or the generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m.Math.D.sup.m over GF(2)), the recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m] (or the recursive feedback polynomial q(D)=q.sub.0+q.sub.1.Math.D+ . . . +q.sub.m.Math.D.sup.m over GF(2)), and the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m].
TABLE-US-00014 TABLE 4 Example Algorithms 3A-3L Algorithm 3A Algorithm 3B Algorithm 3C For j = 0 to m For j = 0 to m For j = 0 to m t.sub.j = 0; t.sub.j = 0; t.sub.j = 0; End for End for End for k = 0; k = 0; k = 0; k = 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Q If i Q If i Q t.sub.0 = ck; t.sub.0 = ck; t.sub.0 = ck; k = k + 1; k = k + 1; k = k + 1; Else Else Else t.sub.0 = 0; t.sub.0 = 0; t.sub.0 = 0; End if End if End if If i Po If i Po If i Po s = 0; s = 0; s = 0; For j = 0 to m For j = 0 to m For j = 0 to m s = mod(s + q.sub.j.Math.t.sub.j, s = mod(s + q.sub.j.Math.t.sub.j, s = mod(s + q.sub.j.Math.t.sub.j, 2); 2); 2); End for End for End for t.sub.0 = s; t.sub.0 = s; t.sub.0 = s; u.sub.i = 0; u.sub.i = 0; u.sub.i = 0; For j = 0 to m For j = 0 to m For j = 0 to m u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, 2); 2); 2); End for End for End for Else Else Else u.sub.i = 0; u.sub.i = t.sub.0; u.sub.i = h.sub.k; End if End if k = k + 1; End if If i P.sub.I If i P.sub.I If i P.sub.I For j = m to 1 For j = m to 1 For j = m to 1 t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; End for End for End for End if End if End if End for End for End for Algorithm 3D Algorithm 3E Algorithm 3F For j = 0 to m For j = 0 to m For j = 0 to m t.sub.j = 0; t.sub.j = 0; t.sub.j = 0; End for End for End for k = 0; k = 0; k = 0; k = 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Q If i Q If i Q t.sub.0 = ck; t.sub.0 = ck; t.sub.0 = ck; k = k + 1; k = k + 1; k = k + 1; Else Else Else t.sub.0 = f.sub.1k; t.sub.0 = f.sub.1k; t.sub.0 = f.sub.1k; End if End if End if If i Po If i Po If i Po s = 0; s = 0; s = 0; For j = 0 to m For j = 0 to m For j = 0 to m s = mod(s + q.sub.j.Math.t.sub.j, s = mod(s + q.sub.j.Math.t.sub.j, s = mod(s + q.sub.j.Math.t.sub.j, 2); 2); 2); End for End for End for t.sub.0 = s; t.sub.0 = s; t.sub.0 = s; u.sub.i = 0; u.sub.i = 0; u.sub.i = 0; For j = 0 to m For j = 0 to m For j = 0 to m u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, 2); 2); 2); End for End for End for Else Else Else u.sub.i = 0; u.sub.i = t.sub.0; u.sub.i = h.sub.k; End if End if k = k + 1; End if If i P.sub.I If i P.sub.I If i P.sub.I For j = m to 1 For j = m to 1 For j = m to 1 t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; End for End for End for End if End if End if End for End for End for Algorithm 3G Algorithm 3H Algorithm 3I For j = 0 to m For j = 0 to m For j = 0 to m t.sub.j = 0; t.sub.j = 0; t.sub.j = 0; End for End for End for k = 0; k = 0; k = 0; k = 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Q If i Q If i Q t.sub.0 = ck; t.sub.0 = ck; t.sub.0 = ck; k = k + 1; k = k + 1; k = k + 1; Else Else Else t.sub.0 = 0; t.sub.0 = 0; t.sub.0 = 0; End if End if End if If i Po If i Po If i Po s = 0; s = 0; s = 0; For j = 0 to m For j = 0 to m For j = 0 to m s = mod(s + q.sub.j.Math.t.sub.j, s = mod(s + q.sub.j.Math.t.sub.j, s = mod(s + q.sub.j.Math.t.sub.j, 2); 2); 2); End for End for End for t.sub.0 = s; t.sub.0 = s; t.sub.0 = s; u.sub.i = 0; u.sub.i = 0; u.sub.i = 0; For j = 0 to m For j = 0 to m For j = 0 to m u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, 2); 2); 2); End for End for End for Else Else Else u.sub.i = 0; u.sub.i = t.sub.0; u.sub.i = h.sub.k; End if End if k = k + 1; End if For j = m to 1 For j = m to 1 For j = m to 1 t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; End for End for End for End for End for End for Algorithm 3J Algorithm 3K Algorithm 3L For j = 0 to m For j = 0 tom For j = 0 to m t.sub.j = 0; t.sub.j = 0; t.sub.j = 0; End for End for End for k = 0; k = 0; k = 0; k = 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Q If i Q If i Q t.sub.0 = ck; t.sub.0 = ck; t.sub.0 = ck; k = k + 1; k = k + 1; k = k + 1; Else Else Else t.sub.0 = f.sub.1k; t.sub.0 = f.sub.1k; t.sub.0 = f.sub.1k; End if End if End if If i Po If i Po If i Po s = 0; s = 0; s = 0; For j = 0 to m For j = 0 to m For j = 0 to m s = mod(s + q.sub.j.Math.t.sub.j, s = mod(s + q.sub.j.Math.t.sub.j, s = mod(s + q.sub.j.Math.t.sub.j, 2); 2); 2); End for End for End for t.sub.0 = s; t.sub.0 = s; t.sub.0 = s; u.sub.i = 0; u.sub.i = 0; u.sub.i = 0; For j = 0 to m For j = 0 to m For j = 0 to m u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, 2); 2); 2); End for End for End for Else Else Else u.sub.i = 0; u.sub.i = t.sub.0; u.sub.i = h.sub.k; End if End if k = k + 1; End if For j = m to 1 For j = m to 1 For j = m to 1 t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; End for End for End for End for End for End for
[0146] In some embodiments, if an index i does not belong to the data index set Q, the bit to in the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] is set to 0, e.g., as in Algorithm 3A, 3B, 3C, 3G, 3H, and 3I. In some embodiments, if an index i does not belong to the data index set Q, the bit to in the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] is set to a bit in the rate profiling frozen bit sequence f, e.g., as in Algorithm 3D, 3E, 3F, 3J, 3K, and 3L. In some embodiments, if an index i does not belong to the precoding output index set P.sub.O, the i-th bit u.sub.i of the precoding output bit sequence u is set to 0, e.g., as in Algorithm 3A, 3D, 3G, and 3J. In some embodiments, if an index i does not belong to the precoding output index set P.sub.O, the i-th bit u.sub.i of the precoding output bit sequence u is set to t.sub.0 in the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m], e.g., as in Algorithm 3B, 3E, 3H, and 3K.
[0147] In some embodiments, if an index i does not belong to the precoding output index set P.sub.O, the i-th bit u.sub.i of the precoding output bit sequence u is set to a bit in the precoding frozen bit sequence h, e.g., as in Algorithm 3C, 3F, 3I, and 3L. The precoding frozen bit sequence h is of length NN.sub.PO and N.sub.PO is the size of the precoding output index set P.sub.O. In some embodiments, if an index i belongs to the precoding input index set P.sub.I, a right shift is performed on the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] as follows, e.g., as in Algorithm 3A, 3B, 3C, 3D, 3E, and 3F.
TABLE-US-00015 For j = m to 1 t.sub.j = t.sub.j1; End for
[0148] In some examples, for all indices i, a right shift is performed on the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] as follows, e.g., as in Algorithm 3G, 3H, 3I, 3J, 3K, and 3L.
TABLE-US-00016 For j = m to 1 t.sub.j = t.sub.j1; End for
[0149] t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] is a state bit sequence of length m+1 for storing the convolution state. g.sub.j can be either elements in the generator bit sequence g or coefficients in the generator polynomial g(D). q.sub.j can be either elements in the recursive feedback bit sequence q or coefficients in the recursive feedback polynomial q(D).
[0150] In some embodiments, the precoding comprises a rate profiling and a pre-transform. The rate profiling comprises obtaining, by the first node, a rate profiling input bit sequence, and determining, by the first node, a rate profiling output bit sequence v=[v.sub.0, v.sub.1, . . . , v.sub.N-1]. The pre-transform comprises obtaining, by the first node, a pre-transform input bit sequence, and determining, by the first node, a pre-transform output bit sequence.
[0151]
[0152] The rate profiling: The rate profiling comprises obtaining, by the first node, a rate profiling input bit sequence, and determining, by the first node, a rate profiling output bit sequence v=[v.sub.0, v.sub.1, . . . , v.sub.N-1]. As shown in
[0153] The pre-transform: The pre-transform comprises obtaining, by the first node, a pre-transform input bit sequence, and determining, by the first node, a pre-transform output bit sequence u=[u.sub.0, u.sub.1, . . . , u.sub.N-1]. As shown in
[0154] Parameters for the rate profiling: The rate profiling determines the rate profiling output bit sequence v corresponding to the rate profiling input bit sequence c by the first node using at least one of the following: the data index set Q), the rate profiling matrix F with K rows and N columns, or the rate profiling frozen bit sequence f.
[0155] In some embodiments, the rate profiling output bit sequence vis the multiplexing of the rate profiling input bit sequence c and the rate profiling frozen bit sequence f. The rate profiling frozen bit sequence f is of length N-K, and N is the polar matrix size and K is the rate profiling input bit sequence length. A first specific example with N=8 and K=3 is a rate profiling input bit sequence c=[c.sub.0, c.sub.1, c.sub.2] and a rate profiling frozen bit sequence f=[f.sub.0, f.sub.1, f.sub.2, f.sub.3, f.sub.4], then a rate profiling output bit sequence v=[v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4, v.sub.5, v.sub.6, v.sub.7]=[f.sub.0, f.sub.1, f.sub.2, f.sub.3, f.sub.4, c.sub.0, c.sub.1, c.sub.2]. A second specific example with N=16 and K=4 is a rate profiling input bit sequence c=[c.sub.0, c.sub.1, c.sub.2, c.sub.3] and a rate profiling frozen bit sequence f=[f.sub.0, f.sub.1, f.sub.2, f.sub.3, f.sub.4, f.sub.5, f.sub.6, f.sub.7, f.sub.8, f.sub.0, f.sub.10, f.sub.11], then a rate profiling output bit sequence v=[v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4, v.sub.5, v.sub.6, v.sub.7, v.sub.8, v.sub.9, v.sub.10, v.sub.1, v.sub.12, v.sub.13, v.sub.14, v.sub.15]=[f.sub.0, f.sub.1, f.sub.2, f.sub.3, f.sub.4, f.sub.5, f.sub.6, f.sub.7, f.sub.8, f.sub.9, f.sub.10, c.sub.0, f.sub.11, c.sub.1, c.sub.2, c.sub.3]. A third specific example is given in Algorithm 4A of Table 5.
[0156] In some embodiments, for an index i belonging to the data index set Q, the bit v.sub.i in the rate profiling output bit sequence v is a bit in the rate profiling input bit sequence c. A first specific example with N=8, K=3 and a data index set Q={5, 6, 7}, a rate profiling input bit sequence c=[c.sub.0, c.sub.1, c.sub.2], the bits v.sub.5, v.sub.6, v.sub.7 with indices belonging to the data index set Q={5, 6, 7} in a rate profiling output bit sequence v=[v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4, v.sub.5, v.sub.6, v.sub.7] is set as v.sub.5=c.sub.0, v.sub.6=c.sub.1, and v.sub.7=c.sub.2. A second specific example with N=16, K=4 and a data index set Q={11, 13, 14, 15}, a rate profiling input bit sequence c=[c.sub.0, c.sub.1, c.sub.2, c.sub.3], the bits v.sub.11, v.sub.13, v.sub.14, v.sub.15 with indices belonging to the data index set Q={11, 13, 14, 15} in a rate profiling output bit sequence v=[v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4, v.sub.5, v.sub.6, v.sub.7, v.sub.8, v.sub.9, v.sub.10, v.sub.11, v.sub.12, v.sub.13, v.sub.14, v.sub.15] is set as v.sub.11=c.sub.0, v.sub.13=c.sub.1, v.sub.14=c.sub.2, and v.sub.15=c.sub.3. A third specific example is given in Algorithm 4A of Table 5. A fourth specific example is given in Algorithm 4B of Table 5.
[0157] In some embodiments, for a index i not belonging to the data index set Q, the bit v.sub.i in the rate profiling output bit sequence v is a bit in the rate profiling frozen bit sequence f. A first specific example with N=8, K=3 and Q={5, 6, 7}, a rate profiling frozen bit sequence f=[f.sub.0, f.sub.1, f.sub.2, f.sub.3, f.sub.4], the bits v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4 with indices not belonging to the data index set Q={5, 6, 7} in a rate profiling output bit sequence v=[v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4, v.sub.5, v.sub.6, v.sub.7] is set as v.sub.0=f.sub.0, v.sub.1=f.sub.1, v.sub.2=f.sub.2, v.sub.3=f.sub.3, and v.sub.4=f.sub.4. A second specific example with N=16, K=4 and Q={11, 13, 14, 15}, a rate profiling frozen bit sequence f=[f.sub.0, f.sub.1, f.sub.2, f.sub.3, f.sub.4, f.sub.5, f.sub.6, f.sub.7, f.sub.8, f.sub.0, f.sub.10, f.sub.11], the bits v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4, v.sub.5, v.sub.6, v.sub.7, v.sub.8, v.sub.9, v.sub.10, v.sub.12 with indices not belonging to the data index set Q={11, 13, 14, 15} in a rate profiling output bit sequence v=[v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4, v.sub.5, v.sub.6, v.sub.7, v.sub.8, v.sub.9, v.sub.10, v.sub.11, v.sub.12, v.sub.13, v.sub.14, v.sub.15] is set as v.sub.0=f.sub.0, v.sub.1=f.sub.1, v.sub.2=f.sub.2, v.sub.3=f.sub.3, v.sub.4=f.sub.4, v.sub.5=f.sub.5, v.sub.6=f.sub.6, v.sub.1=f.sub.7, v.sub.8=f.sub.8, v.sub.9=f.sub.0, v.sub.10=f.sub.10, and v.sub.12=f.sub.1. A third specific example is given in Algorithm 4A of Table 5.
[0158] In some embodiments, the rate profiling output bit sequence vis the multiplexing of the rate profiling input bit sequence c and an all-zero sequence of length N-K, wherein N is the polar matrix size and K is the rate profiling input bit sequence length. A first specific example with N=8 and K=3 is a rate profiling input bit sequence c=[c.sub.0, c.sub.1, c.sub.2] and an all-zero sequence of length NK=83=5, then a rate profiling output bit sequence v=[v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4, v.sub.5, v.sub.6, v.sub.7]=[0, 0, 0, 0, 0, c.sub.0, c.sub.1, c.sub.2]. A second specific example with N=16 and K=4 is a rate profiling input bit sequence c=[c.sub.0, c.sub.1, c.sub.2, c.sub.3] and an all-zero sequence of length N-K=164=12, then a rate profiling output bit sequence v=[v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4, v.sub.5, v.sub.6, v.sub.7, v.sub.8, v.sub.9, v.sub.10, v.sub.11, v.sub.12, v.sub.13, v.sub.14, v.sub.15]=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, c.sub.0, 0, c.sub.1, c.sub.2, c.sub.3]. A third specific example is given in Algorithm 4B of Table 5.
[0159] In some embodiments, for an index i not belonging to the data index set Q, the bit v.sub.i in the rate profiling output bit sequence v is equal to 0. A first specific example with N=8, K=3 and Q={5, 6, 7}, the bits v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4 with indices not belonging to the data index set Q={5, 6, 7} in a rate profiling output bit sequence v=[v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4, v.sub.5, v.sub.6, v.sub.7] is set as v.sub.0=0, v.sub.1=0, v.sub.2=0, v.sub.3=0, and v.sub.4=0. A second specific example with N=16, K=4 and Q={11, 13, 14, 15}, the bits v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4, v.sub.5, v.sub.6, v.sub.7, v.sub.8, v.sub.9, v.sub.10, v.sub.12 with indices not belonging to the data index set Q={11, 13, 14, 15} in a rate profiling output bit sequence v=[v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4, v.sub.5, v.sub.6, v.sub.7, v.sub.8, v.sub.9, v.sub.10, v.sub.11, v.sub.12, v.sub.13, v.sub.14, v.sub.15] is set as v.sub.0=0, v.sub.1=0, v.sub.2=0, v.sub.3=0, v.sub.4=0, v.sub.5=0, v.sub.6=0, v.sub.7=0, v.sub.8=0, v.sub.9=0, v.sub.10=0, and v.sub.12=0. A third specific example is given in Algorithm 4B of Table 5.
TABLE-US-00017 TABLE 5 Example Algorithms 4A-4B Algorithm 4A Algorithm 4B k = 0; k = 0; For i = 0 to N1 For i = 0 to N1 If i Q If i Q v.sub.i = c.sub.k; v.sub.i = c.sub.k; k = k + 1; k = k + 1; Else Else v.sub.i = f.sub.1k; v.sub.i = 0; End if End if End for End for
[0160] In some embodiments, the rate profiling output sequence v of length N is the multiplication of the rate profiling input bit sequence c and the rate profiling matrix F with K rows and N columns as v=c.Math.F. The rate profiling input bit sequence is the input sequence c of length K, the vector-matrix multiplication is over GF(2). In a specific example with K=4 rows and N=8 columns, a rate profiling matrix
a rate profiling input bit sequence c=[c.sub.0, c.sub.1, c.sub.2, c.sub.3], then a profiling output sequence v=c.Math.F=[0, 0, 0, c.sub.0, 0, c.sub.1, c.sub.2, c.sub.3].
[0161] In some embodiments, the rate profiling output sequence v of length N is determined by adding the rate profiling frozen bit sequence f and the multiplication of the rate profiling input bit sequence c and the rate profiling matrix F with K rows and N columns as v=c.Math.F+f. The rate profiling input bit sequence is the input sequence c of length K, the vector-matrix multiplication is over GF(2), the vector-vector addition is over GF(2), the rate profiling frozen bit sequence f is of length N. In a specific example with K=4 rows and N=8 columns, a rate profiling matrix
a rate profiling input bit sequence c=[c.sub.0, c.sub.1, c.sub.2, c.sub.3], a rate profiling frozen bit sequence f=[f.sub.0, f.sub.1, f.sub.2, f.sub.3, f.sub.4, f.sub.5, f.sub.6, f.sub.7], then a profiling output sequence v=c.Math.F+f=[f.sub.0, f.sub.1, f.sub.2, mod(c.sub.0+f.sub.3, 2), f.sub.4, mod(c.sub.1+f.sub.5, 2), mod(c.sub.2+f.sub.6, 2), mod(c.sub.3+f.sub.7, 2)].
[0162] Parameters for determining the pre-transform: The pre-transform determines the pre-transform output bit sequence u corresponding to the pre-transform input bit sequence v by the first node using at least one of the following: the generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m] over GF(2), the generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m-1.Math.D.sub.m-1+g.sub.m.Math.D.sup.m over GF(2), the recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m]over GF(2), the recursive feedback polynomial q(D)=q.sub.0+q.sub.1.Math.D++q.sub.m.Math.D.sup.m over GF(2), the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] of length m+1, the pre-transform matrix T with N rows and N columns, the precoding input index set P.sub.I, the precoding output index set P.sub.O, or the precoding frozen bit sequence h.
A Pre-Transform Determined by the Pre-Transform Matrix T
[0163] In some embodiments, the pre-transform output sequence u of length N is the multiplication of the pre-transform input bit sequence and the pre-transform matrix T with N rows and N columns as u=v.Math.T. The pre-transform input bit sequence is the rate profiling output sequence v of length N, the pre-transform output sequence u of length N is the precoding output bit sequence, the vector-matrix multiplication is over GF(2).
A Pre-Transform Determined by the Pre-Transform Matrix T and the Precoding Frozen Bit Sequence h
[0164] In some embodiments, the pre-transform output sequence u of length N is determined by adding the precoding frozen bit sequence h and the multiplication of the pre-transform input bit sequence v and the pre-transform matrix T with N rows and N columns as u=v.Math.T+h. The pre-transform input bit sequence is the rate profiling output bit sequence v of length N, the vector-matrix multiplication is over GF(2), the vector-vector addition is over GF(2), the length of precoding frozen bit sequence h is equal to the polar matrix size N.
A Pre-Transform Determined by g or g(D), t, P.sub.I, P.sub.O, h
[0165] In some embodiments, the pre-transform determines the pre-transform output bit sequence u of length N using at least one of the following: the generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m], the generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m-1.Math.D.sub.m-1+g.sub.m.Math.D.sup.m over GF(2), the precoding input index set P.sub.I, the precoding output index set P.sub.O, or the precoding frozen bit sequence h. The precoding frozen bit sequence h is of length NN.sub.PO and N.sub.PO is the size of the precoding output index set P.sub.O. Table 6 shows example Algorithms 5A-5G, which are example implementations for the pre-transform.
TABLE-US-00018 TABLE 6 Example Pre-Transform Implementations Algorithm 5A Algorithm 5B Algorithm 5C k= 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Po If i Po If i Po k = 0; k = 0; k = 0; j = 0; j = 0; j = 0; u.sub.i = 0; u.sub.i = 0; u.sub.i = 0; While k m && j While k m && j While k m && j i i i If i j P.sub.I If i j P.sub.I If i j P.sub.I u.sub.i=mod(u.sub.i+g.sub.k.Math.v.sub.ij, u.sub.i=mod(u.sub.i+g.sub.k.Math.v.sub.ij, u.sub.i=mod(u.sub.i+g.sub.k.Math.v.sub.ij, 2); 2); 2); k = k + 1; k = k + 1; k = k + 1; End if End if End if j = j + 1; j = j + 1; j = j + 1; End while End while End while Else Else Else u.sub.i = 0; u.sub.i = v.sub.i, u.sub.i = h.sub.k; End if End if k= k+ 1; End for End for End if End for Algorithm 5D Algorithm 5E Algorithm 5F k= 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Po If i Po If i Po k = 0; k = 0; k = 0; u.sub.i = 0; u.sub.i = 0; u.sub.i = 0; While k m && k While k m && k While k m && k i i i u.sub.i=mod(u.sub.i+g.sub.k.Math.v.sub.ij, u.sub.i=mod(u.sub.i+g.sub.k.Math.v.sub.ij, u.sub.i=mod(u.sub.i+g.sub.k.Math.v.sub.ij, 2); 2); 2); k = k + 1; k = k + 1; k = k + 1; End while End while End while Else Else Else u.sub.i = 0; u.sub.i = v.sub.i, u.sub.i = h.sub.k; End if End if k= k + 1; End for End for End if End for Algorithm 5G For i = 0 to N1 k = 0; j = 0; u.sub.i = 0; While k m && j i If i j P.sub.I u.sub.i=mod(u.sub.i+g.sub.k.Math.v.sub.ij, 2); k = k + 1; End if j = j + 1; End while End for
[0166] In some embodiments, if an index i belongs to the precoding output index set P.sub.O, the bit with the index i (u.sub.i) of the pre-transform output bit sequence u is determined by at least one of the following: the generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m], the generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +mD over GF(2), and L bits in the pre-transform input bit sequence v=[v.sub.0, v.sub.1, . . . , v.sub.N-1] with indices being the Z largest values in a first intersection set M.sub.1. The first intersection set M.sub.1 is the intersection set of a set with non-negative integers not greater than i ({0, 1, . . . , i1, i}) and the precoding input index set P.sub.I. L=min(|M.sub.1|, min(i+1, m+1)) with |M.sub.1| being the number of elements in the first intersection set M.sub.1.
[0167] A first specific example with N=16, i=3, m=6, a generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+g.sub.2.Math.D.sup.2+g.sub.3.Math.D.sup.3+g.sub.4.Math.D.sup.4+g.sub.5.Math.D.sup.5+g.sub.6.Math.D.sup.6, a precoding output index set P.sub.O={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, and a precoding input index set P.sub.I={0, 2, 3, 5, 7, 8, 10} is: [0168] (1) a first intersection set M.sub.1 is M.sub.1={0, 1, 2, 3}P.sub.I={0, 1, 2, 3}{0, 2, 3, 5, 7, 8, 10}={0, 2, 3};
[0171] A second specific example with N=16, i=9, m=3, a generator sequence g=[g.sub.0, g.sub.1, g.sub.2, g.sub.3], a precoding output index set P.sub.O={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, and precoding input index set P.sub.I={0, 2, 3, 5, 7, 8, 10} is: [0172] (1) the first intersection set M.sub.1 is M.sub.1={0, 1, 2, 3, 4, 5, 6, 7, 8, 9}P.sub.I={0, 1, 2, 3, 4, 5, 6, 7, 8, 9}{0, 2, 3, 5, 7, 8, 10}={0, 2, 3, 5, 7, 8};
[0175] In some embodiments, if an index i belongs to the precoding output index set P.sub.O, the bit with the index i (u.sub.i) of the pre-transform output bit sequence u is determined by at least one of the following: the generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m], the generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m.Math.D.sup.m over GF(2), and/or L bits v.sub.i, v.sub.i-1, . . . , v.sub.i-L+1 in the pre-transform input bit sequence v=[v.sub.0, v.sub.1, . . . , v.sub.N-1] with indices being the L largest values in a set with non-negative integers not greater than i ({0, 1, . . . , i1, i}), where L=min(i+1, m+1).
[0176] A first specific example with i=3, m=6, a precoding output index set P.sub.O={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, and a generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+g.sub.2.Math.D.sup.2+g.sub.3.Math.D.sup.3+g.sub.4.Math.D.sup.4+g.sub.5.Math.D.sup.5+g.sub.6.Math.D.sup.6 is [0177] (1) the set with non-negative integers not greater than i=3 is {0, 1, 2, 3};
[0180] A second specific example with N=16, i=9, m=3, a precoding output index set P.sub.O={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, and a generator sequence g=[g.sub.0, g.sub.1, g.sub.2, g.sub.3] is [0181] (1) the set with non-negative integers not greater than i=9 is {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
[0184] In some embodiments, for any index i, the bit with the index i (u.sub.i) of the pre-transform output bit sequence u is determined by at least one of the following: the generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m], the generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m.Math.D.sup.m over GF(2), and/or L bits in the pre-transform input bit sequence v=[v.sub.0, v.sub.1, . . . , v.sub.N-1] with indices being the L largest values in a first intersection set M.sub.1. The first intersection set M.sub.1 is the intersection set of a set with non-negative integers not greater than i ({0, 1, . . . , i1, i}) and the precoding input index set P.sub.I, and L=min(|M.sub.1|, min(i+1, m+1)) with |M.sub.1| being the number of elements in the first intersection set M.sub.1.
[0185] A first specific example with N=16, i=2, m=6, a generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+g.sub.2.Math.D.sup.2+g.sub.3.Math.D.sup.3+g.sub.4.Math.D.sup.4+g.sub.5.Math.D.sup.5+g.sub.6.Math.D.sup.6, and a precoding input index set P.sub.I={0, 2, 3, 5, 7, 8, 10} is: [0186] (1) a first intersection set M.sub.1 is M.sub.1={0, 1, 2}P.sub.I={0, 1, 2}{0, 2, 3, 5, 7, 8, 10}={0, 2};
[0189] A second specific example with N=16, i=9, m=3, a generator sequence g=[g.sub.0, g.sub.1, g.sub.2, g.sub.3], and a precoding input index set P.sub.I={0, 2, 5, 7, 8, 10} is: [0190] (1) the first intersection set M.sub.1 is M.sub.1={0, 1, 2, 3, 4, 5, 6, 7, 8, 9}P.sub.I={0, 1, 2, 3, 4, 5, 6, 7, 8, 9}{0, 2, 5, 7, 8, 10}={0, 2, 5, 7, 8};
[0193] In some examples, if an index i does not belong to the pre-transform output index set P.sub.O, the bit with the index i (u.sub.i) of the pre-transform output bit sequence u is set to 0, e.g., as in Algorithms 5A and 5D. In some examples, if an index i does not belong to the pre-transform output index set P.sub.O, the bit with the index i (u.sub.i) of the pre-transform output bit sequence u is set to the i-th bit v.sub.i of the pre-transform input bit sequence v, e.g., as in Algorithms 5B and 5E. In some examples, if an index i does not belong to the pre-transform output index set P.sub.O, the bit with the index i (u.sub.1) of the pre-transform output bit sequence u is set to a bit in the precoding frozen bit sequence h as in Algorithm 5C, and 5F, wherein the precoding frozen bit sequence h is of length NN.sub.PO and N.sub.PO is the size of the precoding output index set P.sub.O.
[0194] In Algorithms 5A-5G, N is the polar matrix size, m is the memory length, v.sub.i is the bit with index i in the pre-transform input bit sequence, u.sub.i is the bit with index i in the pre-transform output bit sequence, g.sub.k is the bit with index k in the generator sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m] or the coefficient of the term with degree K in the generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m-1.Math.D.sub.m-1+g.sub.m.Math.D.sup.m over GF(2).
A pre-transform determined by q or q(D), t, P.sub.I, P.sub.O, h
[0195] In some embodiments, the pre-transform determines the pre-transform output bit sequence u of length N using at least one of the following: the recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m], the recursive feedback polynomial q(D)=q.sub.0+q.sub.1.Math.D+ . . . +q.sub.m-1.Math.D.sub.m-1+q.sub.m.Math.D.sup.m over GF(2), the precoding input index set P.sub.I, the precoding output index set P.sub.O, or the precoding frozen bit sequence h. The precoding frozen bit sequence h is of length NN.sub.PO and N.sub.PO is the size of the precoding output index set P.sub.O. Table 7 shows example algorithms 6A-6G, which are example implementations for the pre-transform.
TABLE-US-00019 TABLE 7 Example Pre-Transform Implementations Algorithm 6A Algorithm 6B Algorithm 6C k= 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Po If i Po If i Po k = 1; k = 1; k = 1; j = 1; j = 1; j = 1; u.sub.i = q.sub.0.Math.v.sub.i, u.sub.i = q.sub.0.Math.v.sub.i, u.sub.i = q.sub.0.Math.v.sub.i, While k m && j i While k m && j i While k m && j i If i j P.sub.I If i j P.sub.I If i j P.sub.I u.sub.i=mod(u.sub.i+g.sub.k.Math.v.sub.ij, u.sub.i=mod(u.sub.i+g.sub.k.Math.v.sub.ij, u.sub.i=mod(u.sub.i+g.sub.k.Math.v.sub.ij, 2); 2); 2); k = k + 1; k = k + 1; k = k + 1; End if End if End if j = j + 1; j = j + 1; j = j + 1; End while End while End while Else Else Else u.sub.i = 0; u.sub.i = v.sub.i, u.sub.i = h.sub.k; End if End if k= k+ 1; End for End for End if End for Algorithm 6D Algorithm 6E Algorithm 6F k= 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Po If i Po If i Po k = 1; k = 1; k = 1; u.sub.i = q.sub.0.Math.v.sub.i, u.sub.i = q.sub.0.Math.v.sub.i, u.sub.i = q.sub.0.Math.v.sub.i, While k m && k i While k m && k i While k m &&k i u.sub.i=mod(u.sub.i + g.sub.k.Math.v.sub.ij, u.sub.i=mod(u.sub.i + g.sub.k.Math.v.sub.ij, u.sub.i=mod(u.sub.i + g.sub.k.Math.v.sub.ij, 2); 2); 2); k = k + 1; k = k + 1; k = k + 1; End while End while End while Else Else Else u.sub.i = 0; u.sub.i = v.sub.i, u.sub.i = h.sub.k; End if End if k= k+ 1; End for End for End if End for Algorithm 6G For i = 0 to N1 k = 1; j = 1; u.sub.i = q.sub.0.Math.v.sub.i, While k m && j i If i j P.sub.I u.sub.i = mod(u.sub.i + g.sub.k.Math.v.sub.ij, 2); k = k + 1; End if j = j + 1; End while End for
[0196] In some embodiments, if an index i belongs to the pre-transform output index set P.sub.O, the bit with the index i (u.sub.i) of the pre-transform output bit sequence u is determined by at least one of the following: the recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m], the recursive feedback polynomial q(D)=q.sub.0+q.sub.1.Math.D+ . . . +q.sub.mD.sup.m over GF(2), the i-th bit v.sub.i in the pre-transform input bit sequence v=[v.sub.0, v.sub.1, . . . , v.sub.N-1], and/or L bits in the pre-transform output bit sequence u=[u.sub.0, u.sub.1, . . . , u.sub.N-1] with indices being the L largest values in a second intersection set M.sub.2. The second intersection set M.sub.2 is the intersection set of a set with non-negative integers smaller than i({0, 1, . . . , i2, i1}) and the pre-transform output index set P.sub.I, and L=min(|M.sub.2|, min(i, m)) with |M.sub.2| being the number of elements in the second intersection set M.sub.2 (e.g., as shown in Algorithm 6A, 6B, and 6C of Table 7). A first specific example with N=16, i=3, m=6, a recursive feedback polynomial q(D)=g.sub.0+q.sub.1.Math.D+q.sub.2.Math.D.sup.2+q.sub.3.Math.D.sup.3+q.sub.4.Math.D.sup.4+q.sub.5.Math.D.sup.5+q.sub.6.Math.D.sup.6 with q.sub.0=1, a precoding output index set P.sub.O={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, and a precoding input index set P.sub.I={0, 2, 3, 5, 7, 8, 10} is: [0197] (1) a second intersection set M.sub.2 is M.sub.2={0, 1, 2}P.sub.I={0, 1, 2}{0, 2, 3, 5, 7, 8, 10}={0, 2};
[0200] A second specific example with N=16, i=9, m=3, a recursive feedback sequence q=[q.sub.0, q.sub.1, q.sub.2, q.sub.3] with q.sub.0=1, a precoding output index set P.sub.O={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, and a precoding input index set P.sub.I={0, 2, 3, 5, 7, 8, 10} is: [0201] (1) the second intersection set M.sub.2 is M.sub.2={0, 1, 2, 3, 4, 5, 6, 7, 8}P.sub.I={0, 1, 2, 3, 4, 5, 6, 7, 8}{0, 2, 3, 5, 7, 8, 10}={0, 2, 3, 5, 7, 8};
[0204] In some embodiments, if an index i belongs to the precoding output index set P.sub.O, the bit with index i (u.sub.i) of the pre-transform output bit sequence u is determined by at least one of the following: the recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m], the recursive feedback polynomial q(D)=q.sub.0+q.sub.1D+ . . . +q.sub.mD over GF(2), the bit with index i (v.sub.i) in the pre-transform input bit sequence v=[v.sub.0, v.sub.1, . . . , v.sub.N-1], and/or L bits u.sub.i-1, u.sub.i-2, . . . , u.sub.i-L in the pre-transform output bit sequence u=[u.sub.0, u.sub.1, . . . , u.sub.N-1] with indices being the L largest values in a set with non-negative integers smaller than i {0, 1, . . . , i2, i1}. L=min(i, m) (e.g., as shown in Algorithm 6D, 6E, and 6F).
[0205] A first specific example with N=16, i=3, m=6, a precoding output index set P.sub.O={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, and a recursive feedback polynomial q(D)=90+q.sub.1.Math.D+q.sub.2.Math.D.sup.2+q.sub.3.Math.D.sup.3+q.sub.4.Math.D.sup.4+q.sub.5.Math.D.sup.5+q.sub.6.Math.D.sup.6 is: [0206] (1) the set with non-negative integers smaller than i=3 is {0, 1, 2}; [0207] (2) L=min(i, m)=min(3, 6)=3; [0208] (3) L=3 bits in the pre-transform output bit sequence u=[10, 11, . . . , u.sub.N-1] with indices being the L=3 largest values in the set {0, 1, 2} is u.sub.2, u.sub.1, and u.sub.0; [0209] (4) Finally, the bit with index i=3 of the pre-transform output bit sequence u is u.sub.i=mod(q.sub.0.Math.v.sub.3+q.sub.1.Math.u.sub.2+q.sub.2.Math.u.sub.1+q.sub.3.Math.u.sub.0, 2).
[0210] A second specific example with N=16, i=9, m=3, a recursive feedback q=[q.sub.0, q.sub.1, q.sub.2, q.sub.3] with q.sub.0=1, and a precoding output index set P.sub.O={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, is: [0211] (1) a set with non-negative integers smaller than i=9 is {0, 1, 2, 3, 4, 5, 6, 7, 8}; [0212] (2) L=min(i,m)=min(9,3)=3; [0213] (3) L=3 bits in the pre-transform output bit sequence u=[u.sub.0, u.sub.1, u.sub.2, u.sub.3, u.sub.4, u.sub.5, u.sub.6, u.sub.7, u.sub.8, u.sub.9, u.sub.10, u.sub.11, u.sub.12, u.sub.13, u.sub.14, u.sub.15] with indices being the L=3 largest values in the set {0, 1, 2, 3, 4, 5, 6, 7, 8} is 118, 117, and 146; [0214] (4) Finally, the bit with index i=9 of the pre-transform output bit sequence u is u.sub.i=mod(q.sub.0.Math.v.sub.9+q.sub.1.Math.u.sub.8+q.sub.2.Math.u.sub.7+q.sub.3.Math.u.sub.6, 2)==mod(v.sub.9+q.sub.1.Math.u.sub.8+q.sub.2.Math.u.sub.7+q.sub.3.Math.u.sub.6, 2) since q.sub.0=1.
[0215] In some embodiments, for any index i, the bit with the index i (u.sub.i) of the pre-transform output bit sequence u is determined by at least one of the following: the recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m], the recursive feedback polynomial q(D)=q.sub.0+q.sub.1.Math.D+ . . . +q.sub.m.Math.D.sup.m over GF(2), the i-th bit v.sub.i in the pre-transform input bit sequence v=[v.sub.0, v.sub.i, . . . , v.sub.N-1], and/or L bits in the pre-transform output bit sequence u=[u.sub.0, u.sub.1, . . . , u.sub.N-1] with indices being the L largest values in a second intersection set M.sub.2. The second intersection set M.sub.2 is the intersection set of a set with non-negative integers smaller than i ({0, 1, . . . , i2, i1}) and the precoding output index set P.sub.I, and L=min(|M.sub.2|, min(i, m)) with |M.sub.2| being the number of elements in the second intersection set M.sub.2 (e.g., as shown in Algorithm 6G).
[0216] A first specific example with N=16, i=3, m=6, a recursive feedback polynomial q(D)=q.sub.0+q.sub.1.Math.D+q.sub.2.Math.D.sup.2+q.sub.3.Math.D.sup.3+q.sub.4.Math.D.sup.4+q.sub.5.Math.D.sup.5+q.sub.6.Math.D.sup.6 with q.sub.0=1, and a precoding input index set P.sub.I={0, 2, 3, 5, 7, 8, 10} is: [0217] (1) a second intersection set M.sub.2 is M.sub.2={0, 1, 2}P.sub.I={0, 1, 2}{0, 2, 3, 5, 7, 8, 10}={0, 2};
[0220] A second specific example with N=16, i=9, m=3, a recursive feedback sequence q=[q.sub.0, q.sub.1, q.sub.2, q.sub.3] with q.sub.0=1, and a precoding input index set P.sub.I={0, 2, 3, 5, 7, 8, 10} is [0221] (1) the second intersection set M.sub.2 is M.sub.2={0, 1, 2, 3, 4, 5, 6, 7, 8}P.sub.I={0, 1, 2, 3, 4, 5, 6, 7, 8}{0, 2, 3, 5, 7, 8, 10}={0, 2, 3, 5, 7, 8};
[0224] In some embodiments, if an index i does not belong to the precoding output index set P.sub.O, the bit with the index i (u.sub.i) of the pre-transform output bit sequence u is set to 0 (e.g., as in Algorithms 6A and 6D). In some embodiments, if an index i does not belong to the pre-transform output index set P.sub.O, the bit with the index i (u.sub.i) of the pre-transform output bit sequence u is set to the i-th bit v.sub.i of the pre-transform input bit sequence v (e.g., as in Algorithms 6B and 6E). In some embodiments, if an index i does not belong to the pre-transform output index set P.sub.O, the bit with the index i (u.sub.i) of the pre-transform output bit sequence u is set to a bit in the precoding frozen bit sequence h (e.g., as in Algorithms 6C and 6F). The precoding frozen bit sequence h is of length NN.sub.PO and N.sub.PO is the size of the precoding output index set P.sub.O.
[0225] In example Algorithms 6A-6G, Nis the polar matrix size, m is the memory length, v.sub.i is the bit with index i in the pre-transform input bit sequence, u.sub.i is the bit with index i in the pre-transform output bit sequence, q is the bit with index k in the recursive feedback sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m] or the coefficient of the term with degree K in the recursive feedback polynomial q(D)=q.sub.0+q.sub.1.Math.D+ . . . +q.sub.m-1. D.sub.m-1+q.sub.m.Math.D.sup.m over GF(2).
A Pre-Transform Determined by g or g(D), q or q(D), t, P.sub.I, P.sub.O, h
[0226] In some embodiments, the pre-transform determines the precoding output bit sequence u of length N using at least one of the following: the generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m], the generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m-1.Math.D.sub.m-1+g.sub.m.Math.D.sup.m over GF(2), the recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m], the recursive feedback polynomial q(D)=q.sub.0+q.sub.1.Math.D+ . . . +q.sub.m-1.Math.D.sub.m-1+q.sub.m.Math.D.sup.m over GF(2), the precoding input index set P.sub.I, the precoding output index set P.sub.O, the precoding frozen bit sequence h, or the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] of length m+1. The precoding frozen bit sequence h is of length NN.sub.PO and N.sub.PO is the size of the precoding output index set P.sub.O. Examples of implementation for the pre-transform can be found in Algorithms 7A-7G of Table 8.
[0227] In some embodiments, if an index i belongs to the precoding output index set P.sub.O, the bit with the index i (u.sub.i) of the pre-transform output bit sequence u is determined based on at least one of: the bit with index i (v.sub.i) of the pre-transform input bit sequence v, the generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m], the generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m.Math.D.sup.m over GF(2), the recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m], the recursive feedback polynomial q(D)=90+q.sub.1.Math.D+ . . . +q.sub.m.Math.D.sup.m over GF(2), and/or the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m]. The pre-transform can be implemented using example implementations given in Algorithms 7A-7G of Table 8. The pre-transform can comprise setting, by the first node, the bit with index 0 in the state bit sequence t to be the bit with index i (v.sub.i) of the precoding input bit sequence v, t.sub.0=v.sub.i, determining, by the first node, a summation bit s by the recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m] (or the recursive feedback polynomial q(D)=q.sub.0+q.sub.1D+ . . . +q.sub.m.Math.D.sup.m over GF(2)) and the updated state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] as s=mod(.sub.j=0.sup.m q.sub.j.Math.t.sub.j, 2), setting, by the first node, the bit with index 0 in the state bit sequence t to the summation bit s, t.sub.0=s, and determining, by the first node, the bit with index i (u.sub.i) of the precoding output bit sequence u by the generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m] (or the generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m.Math.D.sup.m over GF(2)) and the updated state bit sequence t=[10, 11, . . . , t.sub.m-1, t.sub.m] as u.sub.i=mod(.sub.j=0.sup.m q.sub.j.Math.t.sub.j, 2).
[0228] Table 8 shows example Algorithms 7A-7G, which are example implementations for the pre-transform.
TABLE-US-00020 TABLE 8 Another Example Pre-Transform Implementations Algorithm 7A Algorithm 7B Algorithm 7C For j = 0 to m For j = 0 to m For j = 0 to m t.sub.j = 0; t.sub.j = 0; t.sub.j = 0; End for End for End for k = 0; k = 0; k = 0; k = 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Po If i Po If i Po s = 0; s = 0; s = 0; t.sub.0 = v.sub.i, t.sub.0 = v.sub.i, t.sub.0 = v.sub.i, For j = 0 to m For j = 0 to m For j = 0 to m s = mod(s + q.sub.j.Math.t.sub.j, s = mod(s + q.sub.j.Math.t.sub.j, s = mod(s + q.sub.j.Math.t.sub.j, 2); 2); 2); End for End for End for t.sub.0 = s; t.sub.0 = s; t.sub.0 = s; u.sub.i = 0; u.sub.i = 0; u.sub.i = 0; For j = 0 to m For j = 0 to m For j = 0 to m u.sub.i = mod(u.sub.i + g.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + g.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + g.sub.j.Math.t.sub.j, 2); 2); 2); End for End for End for Else Else Else u.sub.i = 0; u.sub.i = v.sub.i, u.sub.i = h.sub.k; End if End if k = k + 1; End if If i P.sub.I If i P.sub.I If i P.sub.I For j = m to 1 For j = m to 1 For j = m to 1 t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; End for End for End for t.sub.0 = 0; t.sub.0 = 0; t.sub.0 = 0; End if End if End if End for End for End for Algorithm 7D Algorithm 7E Algorithm 7F For j = 0 to m For j = 0 to m For j = 0 to m t.sub.j = 0; t.sub.j = 0; t.sub.j = 0; End for End for End for k = 0; k = 0; k = 0; k = 0; For i = 0 to N1 For i = 0 to N1 For i = 0 to N1 If i Po If i Po If i Po s = 0; s = 0; s = 0; t.sub.0 = v.sub.i, t.sub.0 = v.sub.i, t.sub.0 = v.sub.i, For j = 0 to m For j = 0 to m For j = 0 to m s = mod(s + q.sub.j.Math.t.sub.j, s = mod(s + q.sub.j.Math.t.sub.j, s = mod(s + q.sub.j.Math.t.sub.j, 2); 2); 2); End for End for End for t.sub.0 = s; t.sub.0 = s; t.sub.0 = s; u.sub.i = 0; u.sub.i = 0; u.sub.i = 0; For j = 0 to m For j = 0 to m For j = 0 to m u.sub.i = mod(u.sub.i + g.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + g.sub.j.Math.t.sub.j, u.sub.i = mod(u.sub.i + g.sub.j.Math.t.sub.j, 2); 2); 2); End for End for End for Else Else Else u.sub.i = 0; u.sub.i = v.sub.i, u.sub.i = h.sub.k; End if End if k = k + 1; End if For j = m to 1 For j = m to 1 For j = m to 1 t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; t.sub.j = t.sub.j1; End for End for End for t.sub.0 = 0; t.sub.0 = 0; t.sub.0 = 0; End for End for End for Algorithm 7G For j = 0 to m t.sub.j = 0; End for k = 0; For i = 0 to N1 s = 0; t.sub.0 = v.sub.i, For j = 1 to m s = mod(s + q.sub.j.Math.t.sub.j, 2); End for t.sub.0 = s; u.sub.i = 0; For j = 0 to m u.sub.i = mod(u.sub.i + g.sub.j.Math.t.sub.j, 2); End for If i P.sub.I For j = m to 1 t.sub.j = t.sub.j1; End for t.sub.0 = 0; End if End for
[0229] In some embodiments, if an index i does not belong to the precoding output index set P.sub.O, the bit with the index i (u.sub.i) of the pre-transform output bit sequence u is set to 0, e.g., as in Algorithms 7A and 7D. In some embodiments, if an index i does not belong to the precoding output index set P.sub.O, the bit with the index i (u.sub.i) of the pre-transform output bit sequence u is set to the bit with index i (v.sub.i) of the pre-transform input bit sequence v, e.g., as in Algorithms 7B and 7E. In some embodiments, if an index i does not belong to the precoding output index set P.sub.O, the bit with the index i (u.sub.i) of the pre-transform output bit sequence u is set to a bit in the precoding frozen bit sequence h, e.g., as in Algorithms 7C and 7F, wherein the precoding frozen bit sequence h is of length NN.sub.PO and N.sub.PO is the size of the precoding output index set P.sub.O. In some embodiments, if an index i belongs to the precoding input index set P.sub.I, a right shift is performed on the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] and the bit with index 0 (t.sub.0) in the state bit sequence tis set to 0 as follows, e.g., as in Algorithms 7A, 7B, 7C, and 7G.
TABLE-US-00021 For j = m to 1 t.sub.j = t.sub.j1; End for t.sub.0 = 0;
[0230] In some embodiments, for any index i, a right shift is performed on the state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] and the bit with index 0 (t.sub.0) in the state bit sequence t is set to 0 as follows, e.g., as in Algorithms 7D, 7E, and 7F.
TABLE-US-00022 For j = m to 1 t.sub.j = t.sub.j1; End for t.sub.0 = 0;
[0231] In Algorithms 7A-7G, N is the polar matrix size, m is the memory length, v.sub.i is the bit with index i in the pre-transform input bit sequence, u.sub.i is the bit with index i in the pre-transform output bit sequence, q.sub.k is the bit with index k in the recursive feedback sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m] or the coefficient of the term with degree K in the recursive feedback polynomial q(D)=90+q.sub.1.Math.D+ . . . +q.sub.m-1.Math.D-1+q.sub.m.Math.D.sup.m over GF(2), g.sub.k is the bit with index k in the generator sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m] or the coefficient of the term with degree K in the generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m-1.Math.D.sub.m-1+g.sub.m.Math.D.sup.m over GF(2).
[0232] Polar Transform: A polar transform comprises obtaining, by the first node, a polar transform input bit sequence; and determining, by the first node, a polar transform output bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N-1]. Both the polar transform input bit sequence and the polar transform output bit sequence d are of length equal to the polar matrix size N. The polar transform output bit sequence d is determined by the first node by multiplying the polar transform input bit sequence u and the polar matrix G.sup.(N) of N rows and N columns, d=u.Math.G.sup.(N), wherein the vector-matrix multiplication is performed over GF(2). In some embodiments, the polar transform input bit sequence is the precoding output bit sequence u=[u.sub.0, u.sub.1, . . . , u.sub.N-1] of length N as shown in
[0233] Rate Matching: A rate matching comprises obtaining, by the first node, a rate matching input bit sequence; and determining, by the first node, a rate matching output bit sequence. The rate matching input bit sequence is the polar transform output bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N-1] of length N. The rate matching output bit sequence is the output bit sequence e=[e.sub.0, e.sub.1, . . . , e.sub.E-1] of length E. N is the polar matrix size. Specific examples of rating matching are shown in
[0234] In some embodiments, the rate matching determines the rate matching output bit sequence d corresponding to the rate matching input bit sequence e by the first node using the ordered rate matching index set R=<R(0), R(1), . . . , R(N.sub.r2), R(N.sub.r1)>, wherein N.sub.r is the ordered rate matching index set size and N.sub.r is equal to the minimum value between N and E, N.sub.r=min(N, E); wherein N is N is the polar matrix size. E is the length of the rate matching output bit sequence or the length of the output bit sequence e. A first specific example is e.sub.k=d.sub.R(mod(k,N), k=0, 1, 2, . . . , E2, E1. A second specific example is e.sub.k=d.sub.R(k), k=0, 1, 2, . . . , E2, E1.
[0235] A third specific example is:
TABLE-US-00023 For k = 0 to E1 e.sub.k = d.sub.R(k); End for
[0236] A fourth specific example is:
TABLE-US-00024 For k = 0 to E1 e.sub.k = d.sub.R(mod(k,N)); End for
Interleaving
[0237] In some embodiments, the rate matching comprises an interleaving. The interleaving comprises obtaining, by the first node, an interleaving input bit sequence; and determining, by the first node, an interleaving output bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N-1]. Nis the polar matrix size. The interleaving input bit sequence is the polar transform output bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N-1] of length N. The interleaving output bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N-1] is of length N.
[0238] In some embodiments, the interleaving determines the interleaving output bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N-1] corresponding to the interleaving input bit sequence by an interleaver pattern J=[J.sub.0, J.sub.1, . . . , J.sub.N-2, J.sub.N-1] of length N as di=d.sub.J.sub.
[0239] A first specific example of the interleaver pattern J=[J.sub.0, J.sub.1, . . . , J.sub.N-2, J.sub.N-1] is determined as:
TABLE-US-00025 For i = 0 to N1 j = floor(32i/N); J.sub.i = .sub.j(N/32) + mod(i, N/32); End for
[0240] =[.sub.0, .sub.1, .sub.2, .sub.3, .sub.4, .sub.5, .sub.6, .sub.7, .sub.8, .sub.9, .sub.10, .sub.11, .sub.12, .sub.13, .sub.14, .sub.15, .sub.16, .sub.17, .sub.18, .sub.19, .sub.20, .sub.21, .sub.22, .sub.23, .sub.24, .sub.25, .sub.26, .sub.27, .sub.28, .sub.29, .sub.30, .sub.31]=[0, 1, 2, 4, 3, 5, 6, 7, 8, 16, 9, 17, 10, 18, 11, 19, 12, 20, 13, 21, 14, 22, 15, 23, 24, 25, 26, 28, 27, 29, 30, 31] is a sub-block interleaver pattern and N is the polar matrix size.
[0241] A second specific example of the interleaver pattern J=[J.sub.0, J.sub.1, . . . , J.sub.N-2, J.sub.N-1] is that the relationship between the index i and the i-th element J.sub.i in the interleaver pattern J satisfies the following quadratic form: J.sub.i=mod(f.sub.1.Math.i+f.sub.2.Math.i.sup.2, N). Some examples of parameters f.sub.1 and f.sub.2 depending on the polar matrix size N are summarized in Table 9.
TABLE-US-00026 TABLE 9 Example Interleaver Parameters N f.sub.1 f.sub.2 64 7 16 128 15 32 256 15 32 512 31 64 1024 31 64 2048 31 64 4096 31 64
Bit Selection
[0242] In some embodiments, the rate matching comprises an bit selection. The bit selection comprises obtaining, by the first node, a bit selection input bit sequence, and determining, by the first node, a bit selection output bit sequence. The bit selection output bit sequence is the output bit sequence e=[e.sub.0, e.sub.1, . . . , e.sub.E-1] of length E. In some embodiments, the bit selection input bit sequence is the polar transform output bit sequence d of length N, wherein N is the polar matrix size. Specific examples are shown in
[0243] A first specific example is that the bit selection determines the bit selection output bit sequence e=[e.sub.0, e.sub.1, . . . , e.sub.E-1] to be the first E bits in the bit selection input bit sequence d=[d.sub.0, d.sub.1, . . . , dv] as e.sub.k=d.sub.k, k=0, 1, 2, . . . , E2, E1. E is not greater than N.
[0244] A second specific example is that the bit selection determines the bit selection output bit sequence e=[e.sub.0, e.sub.1, . . . , e.sub.E-1] to be the last E bits in the bit selection input bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N] as e.sub.k=d.sub.N-E+k, k=0, 1, 2, . . . , E2, E1. E is not greater than N.
[0245] A third specific example is that the bit selection determines the bit selection output bit sequence e=[e.sub.0, e.sub.1, . . . , e.sub.E-1] to be the repetition of bits in the bit selection input bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N] as e.sub.k=d.sub.mod(k,N), k=0, 1, 2, . . . , E2, E1. E is not less than N.
[0246] In some embodiments, the bit selection input bit sequence is the interleaving output bit sequence d of length N, wherein N is the polar matrix size. Examples are shown in
[0247] A first specific example is that the bit selection determines the bit selection output bit sequence e=[e.sub.0, e.sub.1, . . . , e.sub.E-1] to be the first E bits in the interleaving output bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N-1] as e.sub.k=d, k=0, 1, 2, . . . , E2, E1. E is not greater than N.
[0248] A second specific example is that the bit selection determines the bit selection output bit sequence e=[e.sub.0, e.sub.1, . . . , e.sub.E-1] to be the last E bits in the interleaving output bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N-1] as e.sub.k=dNE+k, k=0, 1, 2, . . . , E2, E1. E is not greater than N.
[0249] A third specific example is that the bit selection determines the bit selection output bit sequence e=[e.sub.0, e.sub.1, . . . , e.sub.E-1] to be the repetition of bits in the interleaving output bit sequence d=[d.sub.0, d1, . . . , d.sub.N-1] as e.sub.k=d.sub.mod(k,N), k=0, 1, 2, . . . , E2, E1. E is not less than N.
Second Interleaving after Rate Matching
[0250] In some embodiments, the output sequence e=[e.sub.0, e.sub.1, . . . , e.sub.E-1] is further interleaved into a second output bit sequence f=[f.sub.0, f.sub.1, . . . , f.sub.E-1], wherein E is the length of the output sequence e.
Modulation after Rate Matching or Second Interleaving
[0251] In some embodiments, the output sequence e=[e.sub.0, e.sub.1, . . . , e.sub.E-1] is further modulated into a first output symbol sequence x=[x.sub.0, x.sub.1, . . . , X.sub.E/Qm1] using one of the following modulation schemes: /2 binary phase shift keying (/2-BPSK), binary phase shift keying (BPSK), quadrature phase shift keying (QPSK), quadrature amplitude modulation (QAM), phase shift keying (PSK), amplitude shift keying (ASK), or amplitude phase shift keying (APSK). Q.sub.m is the modulation order.
[0252] In some embodiments, the second output bit sequence f=[f.sub.0, f.sub.1, . . . , f.sub.E-1] is further modulated into a first output symbol sequence x=[x.sub.0, x.sub.1, . . . , X.sub.E/Qm1] using one of the following modulation schemes: /2 binary phase shift keying (/2-BPSK), binary phase shift keying (BPSK), quadrature phase shift keying (QPSK), quadrature amplitude modulation (QAM), phase shift keying (PSK), amplitude shift keying (ASK), or amplitude phase shift keying (APSK). Q.sub.m is the modulation order.
Input Bit Sequence c Comprising CRC Bits
[0253] In some embodiments, the input bit sequence c comprises Lcrc cyclic redundancy check (CRC) bits determined by a cyclic generator polynomial g (D)=g.sub.Lcrc.Math.D.sup.Lcrc+g.sub.Lcrc1.Math.D.sup.Lcrc1+ . . . +g.sub.2.Math.D.sup.2+g.sub.1.Math.D+g.sub.0 with coefficients over GF(2) and K-Lcrc payload bits.
[0254] In some embodiments, the input bit sequence c is determined by the first node by attaching Lcrc cyclic redundancy check (CRC) bit to a payload sequence of length K-Lcrc, wherein, the Lcrc CRC bits are determined by a cyclic generator polynomial g(D)=g.sub.Lcrc.Math.D.sup.Lcrc+g.sub.Lcrc1.Math.D.sup.Lcrc1+ . . . +g.sub.2.Math.D.sup.2+g.sub.1.Math.D+g.sub.0 with coefficients over GF(2).
[0255] Some additional examples of the disclosed coding scheme are described below.
Example 1
[0256] In Example 1, a first node obtains an input bit sequence c=[c.sub.0, c.sub.1, c.sub.2, c.sub.3, c.sub.4, c.sub.5, c.sub.6, c.sub.7, c.sub.8, c.sub.9, c.sub.10, c.sub.11, c.sub.12, c.sub.13, c.sub.14, c.sub.15, c.sub.16, c.sub.17, c.sub.18, c.sub.19, c.sub.20, c.sub.21, c.sub.22, c.sub.23] of length K=24. As shown in
and the precoding frozen bit sequence h is an all-zero vector. [0258] (2) Perform a polar transform with the precoding output bit sequence u as a polar transform input bit sequence using a polar matrix G.sup.(32)=B.sup.(32).Math.P.sup.(32) of size N=32 to obtain a polar transform output bit sequence d=[d.sub.0, d.sub.1, d.sub.2, d.sub.3, d.sub.4, d.sub.5, d.sub.6, d.sub.7, d.sub.8, d.sub.9, d.sub.10, d.sub.11, d.sub.12, d.sub.13, d.sub.14, d.sub.15, d.sub.16, d.sub.17, d.sub.18, d.sub.19, d.sub.20, d.sub.21, d.sub.22, d.sub.23, d.sub.24, d.sub.25, d.sub.26, d.sub.27, d.sub.28, d.sub.29, d.sub.30, d.sub.31] of length N=32 as d=u.Math.G.sup.(32), wherein, the matrix operation is over GF(2),
[0260] After the rate matching, the first node transmits a signal including the output bit sequence e to a second node.
Example 2
[0261] In Example 2, a second node receives a signal including an output bit sequence e=[e.sub.0, e.sub.1, e.sub.2, e.sub.3, e.sub.4, e.sub.5, e.sub.6, e.sub.7, e.sub.8, e.sub.9, e.sub.10, e.sub.11, e.sub.12, e.sub.13, e.sub.14, e.sub.15, e.sub.16, e.sub.17, e.sub.18, e.sub.19, e.sub.20, e.sub.21, e.sub.22, e.sub.23, e.sub.24, e.sub.25, e.sub.26, e.sub.27] of length E=28 sent by a first node. The second node determines an estimated bit sequence of an input bit sequence c=[c.sub.0, c.sub.1, c.sub.2, c.sub.3, c.sub.4, c.sub.5, c.sub.6, c.sub.7, c.sub.8, c.sub.9, c.sub.10, c.sub.11, c.sub.12, c.sub.13, c.sub.14, c.sub.15, c.sub.16, c.sub.17, c.sub.18, c.sub.19, c.sub.20, c.sub.21, c.sub.22, c.sub.23] of length K=24. As shown in
TABLE-US-00027 For j = 0 to m t.sub.j = 0; End for k = 0; For i = 0 to N-1 If i Q t.sub.0 = c.sub.k; k = k + 1; Else t.sub.0 = 0; End if If i P.sub.o u.sub.i = 0; For j = 0 to m u.sub.i = mod(u.sub.i + g.sub.j.Math.t.sub.j, 2); End for Else u.sub.i = 0; End if If i P.sub.I For j = m to 1 t.sub.j = t.sub.j1; End for End if End for [0267] (2) Perform a polar transform with the precoding output bit sequence u as a polar transform input bit sequence using a polar matrix G.sup.(32)=P.sup.(32) of size N=32 to obtain a polar transform output bit sequence d=[d.sub.0, d.sub.1, d.sub.2, d.sub.3, d.sub.4, d.sub.5, d.sub.6, d.sub.7, d.sub.8, d.sub.9, d.sub.10, d.sub.11, d.sub.12, d.sub.13, d.sub.14, d.sub.15, d.sub.16, d.sub.17, d.sub.18, d.sub.19, d.sub.20, d.sub.21, d.sub.22, d.sub.23, d.sub.24, d.sub.25, d.sub.26, d.sub.27, d.sub.28, d.sub.29, d.sub.30, d.sub.31] of length N=32 as d=u.Math.G.sup.(32), wherein, the matrix operation is over GF(2),
Example 3
[0269] In Example 3, a first node obtains an input bit sequence c=[c.sub.0, c.sub.1, c.sub.2, c.sub.3, c.sub.4, c.sub.5, c.sub.6, c.sub.7, c.sub.8, c.sub.9, c.sub.10, c.sub.11, c.sub.12, c.sub.13, c.sub.14, c.sub.15, c.sub.16, c.sub.17, c.sub.18, c.sub.19, c.sub.20, c.sub.21, c.sub.22, c.sub.23] of length K=24. As shown in
[0274] a precoding input index set P.sub.I={0, 1, 2, 4, 3, 5, 6, 7, 8, 16, 9, 17, 10, 18, 11, 19, 12, 20, 13, 21, 14, 22, 15, 23, 24, 25, 26, 28} with all elements from an ordered rate matching index set R=<R(0), R(1), R(2), R(3), R(4), R(5), R(6), R(7), R(8), R(9), R(10), R(11), R(12), R(13), R(14), R(15), R(16), R(17), R(18), R(19), R(20), R(21), R(22), R(23), R(24), R(25), R(26), R(27)>=<0, 1, 2, 4, 3, 5, 6, 7, 8, 16, 9, 17, 10, 18, 11, 19, 12, 20, 13, 21, 14, 22, 15, 23, 24, 25, 26, 28>, and
[0275] a precoding output index set P.sub.O={0, 1, 2, . . . , R.sub.max1, R.sub.max}={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28} with all elements being non-negative integers not greater than the maximum value R.sub.max=28 in the ordered rate matching index set R.
[0276] The precoding is as follows (e.g., see also Algorithm 2E of Table 3).
TABLE-US-00028 For j = 0 to m t.sub.j = 0; End for k = 0; For i = 0 to N-1 If i Q t.sub.0 = c.sub.k, k = k + 1; Else t.sub.0 = f.sub.ik; End if If i P.sub.o u.sub.i = 0; For j = 0 to m u.sub.i = mod(u.sub.j +q.Math.t.sub.j, 2); End for t.sub.0 = u.sub.i, Else u.sub.i = t.sub.0; End if If i P.sub.I For j = m to 1 tj = t.sub.j1; End for End if End for [0277] (2) Perform a polar transform with the precoding output bit sequence u as a polar transform input bit sequence using a polar matrix G.sup.(32)=(P.sup.(2)).sup..Math.5 of size N=32 to obtain a polar transform output bit sequence d=[d.sub.0, d.sub.1, d.sub.2, d.sub.3, d.sub.4, d.sub.5, d.sub.6, d.sub.7, d.sub.8, d.sub.9, d.sub.10, d.sub.11, d.sub.12, d.sub.13, d.sub.14, d.sub.15, d.sub.16, d.sub.17, d.sub.18, d.sub.19, d.sub.20, d.sub.21, d.sub.22, d.sub.23, d.sub.24, d.sub.25, d.sub.26, d.sub.27, d.sub.28, d.sub.29, d.sub.30, d.sub.31] of length N=32 as d=u.Math.G.sup.(32), wherein, the matrix operation is over GF(2),
(P.sup.(2)).sup..Math.5 is the 5-th Kronecker power of the matrix P.sup.(2). [0278] (3) Perform an interleaving on an interleaving input sequence being the polar transform output bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N-1]=[d.sub.0, d.sub.1, d.sub.2, d.sub.3, d.sub.4, d.sub.5, d.sub.6, d.sub.7, d.sub.8, d.sub.9, d.sub.10, d.sub.11, d.sub.12, d.sub.13, d.sub.14, d.sub.15, d.sub.16, d.sub.17, d.sub.18, d.sub.19, d.sub.20, d.sub.21, d.sub.22, d.sub.23, d.sub.24, d.sub.25, d.sub.26, d.sub.27, d.sub.28, d.sub.29, d.sub.30, d.sub.31] of length N=32 and determine an interleaving output bit sequence d=[d.sub.0, d1, . . . , d.sub.N-1]=[d.sub.0, d.sub.1, d.sub.2, d.sub.3, d.sub.4, d.sub.5, d.sub.6, d.sub.7, d.sub.8, d.sub.9, d.sub.10, d.sub.11, d.sub.12, d.sub.13, d.sub.14, d.sub.15, d.sub.16, d.sub.17, d.sub.18, d.sub.19, d.sub.20, d.sub.21, d.sub.22, d.sub.23, d.sub.24, d.sub.25, d.sub.26, d.sub.27, d.sub.28, d.sub.29, d.sub.30, d.sub.31] is of length N=32 as di=d.sub.J.sub.
TABLE-US-00029 For i = 0 to N1 j = floor(32i/N); J.sub.i = .sub.j(N/32) + mod(i, N/32); End for [0279] (4) Perform a bit selection with the interleaving output bit sequence d=[d.sub.0, d.sub.1, d.sub.2, d.sub.3, d.sub.4, d.sub.5, d.sub.6, d.sub.7, d.sub.8, d.sub.9, d.sub.10, d.sub.11, d.sub.12, d.sub.13, d.sub.14, d.sub.15, d.sub.16, d.sub.17, d.sub.18, d.sub.19, d.sub.20, d.sub.21, d.sub.22, d.sub.23, d.sub.24, d.sub.25, d.sub.26, d.sub.27, d.sub.28, d.sub.29, d.sub.30, d.sub.31] of length N=32 as a bit selection input bit sequence to obtain a rate matching output bit sequence (also an output bit sequence) e=[e.sub.0, e.sub.1, e.sub.2, e.sub.3, e.sub.4, e.sub.5, e.sub.6, e.sub.7, e.sub.8, e.sub.9, e.sub.10, e.sub.11, e.sub.12, e.sub.13, e.sub.14, e.sub.15, e.sub.16, e.sub.17, e.sub.18, e.sub.19, e.sub.20, e.sub.21, e.sub.22, e.sub.23, e.sub.24, e.sub.25, e.sub.26, e.sub.27] of length E=28 as e.sub.i=d.sub.i for i=0, 1, 2, . . . , 26, 27 (e.sub.i=d.sub.J.sub.
[0280] After the bit selection, the first node transmits a signal including the output bit sequence e to a second node.
Example 4
[0281] In Example 4, a first node obtains an input bit sequence c=[c.sub.0, c.sub.1, c.sub.2, c.sub.3, c.sub.4, c.sub.5, c.sub.6, c.sub.7, c.sub.8, c.sub.9, c.sub.10, c.sub.11] of length K=12. As in
[0285] The rate profiling output bit sequence vis obtained by setting the bits in the rate profiling output bit sequence v with indices belonging to the data bit index set Q being bits in the input bit sequence c while other bits in the rate profiling output bit sequence v is set to bits in the rate profiling frozen bit sequence f as follows.
TABLE-US-00030 k = 0; For i = 0 to N1 If i Q v.sub.i = c.sub.k, k = k + 1; Else v.sub.i = f.sub.ik; End if End for [0286] (2) Perform a pre-transform with the rate profiling output bit sequence v as a pre-transform input bit sequence and determine a pre-transform output bit sequence u=[u.sub.0, u.sub.1, u.sub.2, u.sub.3, u.sub.4, u.sub.5, u.sub.6, u.sub.7, u.sub.8, u.sub.9, u.sub.10, u.sub.11, u.sub.12, u.sub.13, u.sub.14, u.sub.15, u.sub.16, u.sub.17, u.sub.18, u.sub.19, u.sub.20, u.sub.21, u.sub.22, u.sub.23, u.sub.24, u.sub.25, u.sub.26, u.sub.27, u.sub.28, u.sub.29, u.sub.30, u.sub.31] of length N=32 using the following: [0287] a recursive feedback polynomial q(D)=q.sub.0+q.sub.1.Math.D+ . . . +q.sub.m.Math.D.sup.m=1+D.sup.2+D.sup.3 over GF(2) or equivalently a recursive feedback bit sequence q=[q.sub.0, q.sub.1, q.sub.2, g.sub.3]=[1, 0, 1, 1] with a memory length m=3, [0288] a state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m]=[t.sub.0, t.sub.1, t.sub.2, t.sub.3] of length m+1=3+1=4, [0289] a precoding output index set P.sub.O={0, 1, 2, . . . , Q.sub.max1, Q.sub.max}={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31} with all elements being non-negative integers not greater than the maximum value Q.sub.max=31 in the data bit index set Q={14, 21, 26, 25, 22, 28, 15, 23, 31, 27, 29, 30}, and [0290] an empty precoding frozen bit sequence h=[ ] of length NN.sub.PO=3232=0 with N.sub.PO=32 being the size of the precoding output index set P.sub.O.
[0291] The pre-transform output bit sequence u is determined as follows (e.g., see also Algorithm 7F of Table 8).
TABLE-US-00031 For j = 0 to m t.sub.j = 0; End for k = 0; k = 0; For i = 0 to N1 If i P.sub.o s = 0; t.sub.0 = v.sub.i, For j = 0 to m s = mod(s + q.sub.j.Math.t.sub.j, 2); End for t.sub.0 = s; u.sub.i = 0; For j = 0 to m u.sub.i = mod(u.sub.i + q.sub.j.Math.t.sub.j, 2); End for Else u.sub.i = h.sub.k; k = k + 1; End if For j = m to 1 t.sub.j = t.sub.j1; End for t.sub.0 = 0; End for [0292] (3) Perform a polar transform with the pre-transform output bit sequence u as a polar transform input bit sequence using a polar matrix G.sup.(32)=B.sup.(32). (P.sup.(2)).sup..Math.5 of size N=32 to obtain a polar transform output bit sequence d=[d.sub.0, d.sub.1, d.sub.2, d.sub.3, d.sub.4, d.sub.5, d.sub.6, d.sub.7, d.sub.8, d.sub.9, d.sub.10, d.sub.11, d.sub.12, d.sub.13, d.sub.14, d.sub.15, d.sub.16, d.sub.17, d.sub.18, d.sub.19, d.sub.20, d.sub.21, d.sub.22, d.sub.23, d.sub.24, d.sub.25, d.sub.26, d.sub.27, d.sub.28, d.sub.29, d.sub.30, d.sub.31] of length N=32 as d=u.Math.G.sup.(32), wherein, the matrix operation is over GF(2),
(P.sup.(2)).sup..Math.5 is the 5-th Kronecker power of the matrix P.sup.(2), B.sup.(32) is a bit-reversal permutation matrix with N=32 rows and N=32 columns. [0293] (4) Perform a rate matching with the polar transform output bit sequence d=[d.sub.0, d.sub.1, d.sub.2, d.sub.3, d.sub.4, d.sub.5, d.sub.6, d.sub.7, d.sub.8, d.sub.9, d.sub.10, d.sub.11, d.sub.12, d.sub.13, d.sub.14, d.sub.15, d.sub.16, d.sub.17, dis, d.sub.19, d.sub.20, d.sub.21, d.sub.22, d.sub.23, d.sub.24, d.sub.25, d.sub.26, d.sub.27, d.sub.28, d.sub.29, d.sub.30, d.sub.31] of length N=32 as a rate matching input bit sequence to obtain a rate matching output bit sequence (also an output bit sequence) e=[e.sub.0, e.sub.1, e.sub.2, e.sub.3, e.sub.4, e.sub.5, e.sub.6, e.sub.7, e.sub.8, e.sub.9, e.sub.10, e.sub.11, e.sub.12, e.sub.13, e.sub.14, e.sub.15, e.sub.16, e.sub.17, e.sub.18, e.sub.19, e.sub.20, e.sub.21, e.sub.22, e.sub.23, e.sub.24, e.sub.25, e.sub.26, e.sub.27] of length E=28 according to an ordered rate matching index set with R as follows: e.sub.i=d.sub.R(NE+i) for i=0, 1, 2, . . . , 26, 27. The ordered rate matching index set R=<R(0), R(1), R(2), R(3), R(4), R(5), R(6), R(7), R(8), R(9), R(10), R(11), R(12), R(13), R(14), R(15), R(16), R(17), R(18), R(19), R(20), R(21), R(22), R(23), R(24), R(25), R(26), R(27)>=<J.sub.0, J.sub.1, J.sub.2, J.sub.3, J.sub.4, J.sub.5, J.sub.6, J.sub.7, J.sub.8, J.sub.9, J.sub.10, J.sub.11, J.sub.12, J.sub.13, J.sub.14, J.sub.15, J.sub.16, J.sub.17, J.sub.18, J.sub.19, J.sub.20, J.sub.21, J.sub.22, J.sub.23, J.sub.24, J.sub.25, J.sub.26, J.sub.27> with J.sub.i=mod(f.sub.1.Math.i+f.sub.2.Math.i.sup.2, N). f.sub.1=7 and f.sub.2=10, and [J.sub.0, J.sub.1, J.sub.2, J.sub.3, J.sub.4, J.sub.5, J.sub.6, J.sub.7, J.sub.8, J.sub.9, J.sub.10, J.sub.11, J.sub.12, J.sub.13, J.sub.14, J.sub.15, J.sub.16, J.sub.17, J.sub.18, J.sub.19, J.sub.20, J.sub.21, J.sub.22, J.sub.23, J.sub.24, J.sub.25, J.sub.26, J.sub.27, J.sub.28, J.sub.29, J.sub.30, J.sub.31]=[0, 17, 22, 15, 28, 29, 18, 27, 24, 9, 14, 7, 20, 21, 10, 19, 16, 1, 6, 31, 12, 13, 2, 11, 8, 25, 30, 23, 4, 5, 26, 3] is an interleaver pattern of length N=32.
[0294] After the rate matching, the first node transmits a signal including the output bit sequence e to a second node.
Example 5
[0295] In Example 5, a first node obtains an input bit sequence c=[c.sub.0, c.sub.1, c.sub.2, c.sub.3, c.sub.4, c.sub.5, c.sub.6, c.sub.7, c.sub.8, c.sub.9, c.sub.10, c.sub.11] of length K=12. As in
[0299] The rate profiling output bit sequence v is obtained by setting bits in the rate profiling output bit sequence v with indices belonging to the data bit index set Q being the modulo-2 of a bit in the input bit sequence c and a bit in the rate profiling frozen bit sequence f and setting bits in the rate profiling output bit sequence v with indices not belonging to the data bit index set Q being bits in the rate profiling frozen bit sequence f as follows.
TABLE-US-00032 k = 0; For i = 0 to N1 If i Q v.sub.i = mod(c.sub.k + f.sub.i, 2); k = k + 1; Else v.sub.i = f.sub.i; End if End for [0300] (2) Perform a pre-transform with the rate profiling output bit sequence v as a pre-transform input bit sequence and determine a pre-transform output bit sequence u=[u.sub.0, u.sub.1, u.sub.2, u.sub.3, u.sub.4, u.sub.5, u.sub.6, u.sub.7, u.sub.8, u.sub.9, u.sub.10, u.sub.11, u.sub.12, u.sub.13, u.sub.14, u.sub.15, u.sub.16, u.sub.17, u.sub.18, u.sub.19, u.sub.20, u.sub.21, u.sub.22, u.sub.23, u.sub.24, u.sub.25, u.sub.26, u.sub.27, u.sub.28, u.sub.29, u.sub.30, u.sub.31] of length N=32 using the following: [0301] a generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m-1.Math.D.sub.m-1+g.sub.m.Math.D.sup.m=1+D+D.sup.3 over GF(2) or equivalently a generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m]=[1, 1, 0, 1] over GF(2) with a memory length m=3, [0302] a recursive feedback polynomial q(D)=q.sub.0+q.sub.1.Math.D+ . . . +q.sub.m.Math.D.sup.m=1+D.sup.2+D.sup.3 over GF(2) or equivalently a recursive feedback bit sequence q=[q.sub.0, q.sub.1, . . . , q.sub.m]=[1, 0, 1, 1] over GF(2) with a memory length m=3, [0303] a state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] of length m+1=3+1=4, [0304] a precoding input index set P.sub.I={NE, NE+1, NE+2, . . . , N2, N1>=<4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}, a precoding input index set P.sub.O=P.sub.I, and [0305] a precoding frozen bit sequence h=[h.sub.0, h.sub.1, h.sub.2, h.sub.3]=[1, 0, 0, 1] of length NN.sub.PO=32-28=4 with N.sub.PO=28 being the size of the precoding input index set P.sub.O.
[0306] The pre-transform output bit sequence u is determined as follows.
TABLE-US-00033 For i = 0 to N1 If i P.sub.o k = 1; u.sub.i = q.sub.0.Math.v.sub.i, While k m && k i u.sub.i = mod(u.sub.i + q.sub.k.Math.u.sub.ik, 2); k = k + 1; End while Else u.sub.i = v.sub.i, End if End for [0307] (3) Perform a polar transform with the pre-transform output bit sequence u as a polar transform input bit sequence using a polar matrix (32)=(P.sup.(2)).sup..Math.5 of size N=32 to obtain a polar transform output bit sequence d=[d.sub.0, d.sub.1, d.sub.2, d.sub.3, d.sub.4, d.sub.5, d.sub.6, d.sub.7, d.sub.0, d.sub.9, d.sub.10, d.sub.11, d.sub.12, d.sub.13, d.sub.14, d.sub.15, d.sub.16, d.sub.17, d.sub.18, d.sub.19, d.sub.20, d.sub.21, d.sub.22, d.sub.23, d.sub.24, d.sub.25, d.sub.26, d.sub.27, d.sub.28, d.sub.29, d.sub.30, d.sub.31] of length N=32 as d=u.Math.G (32), wherein, the matrix operation is over GF(2),
(P.sup.(2)).sup..Math.5 is the 5-th Kronecker power of the matrix P.sup.(2), B.sup.(32) is a bit-reversal permutation matrix with N=32 rows and N=32 columns. [0308] (4) Perform a bit selection with the polar transform output bit sequence d=[d.sub.0, d.sub.1, d.sub.2, d.sub.3, d.sub.4, d.sub.5, d.sub.6, d.sub.7, d.sub.8, d.sub.9, d.sub.10, du, d.sub.12, d.sub.13, d.sub.14, d.sub.15, d.sub.16, d.sub.17, d.sub.18, d.sub.19, d.sub.20, d.sub.21, d.sub.22, d.sub.23, d.sub.24, d.sub.25, d.sub.26, d.sub.27, d.sub.28, d.sub.29, d.sub.30, d.sub.31] of length N=32 as a bit selection input bit sequence to obtain an output bit sequence e=[e.sub.0, e.sub.1, e.sub.2, e.sub.3, e.sub.4, e.sub.5, e.sub.6, e.sub.7, e.sub.8, e.sub.9, e.sub.10, e.sub.11, e.sub.12, e.sub.13, e.sub.14, e.sub.15, e.sub.16, e.sub.17, e.sub.18, e.sub.19, e.sub.20, e.sub.21, e.sub.22, e.sub.23, e.sub.24, e.sub.25, e.sub.26, e.sub.27] of length E=28 as follows: e.sub.i=d.sub.N-E+i for i=0, 1, 2, . . . , 26, 27. The corresponding ordered rate matching index set R=<R(0), R(1), R(2), R(3), R(4), R(5), R(6), R(7), R(8), R(9), R(10), R(11), R(12), R(13), R(14), R(15), R(16), R(17), R(18), R(19), R(20), R(21), R(22), R(23), R(24), R(25), R(26), R(27)>=<NE, NE+1,NE+2, . . . , N2, N1>=<4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31>.
[0309] After the bit selection, the first node transmits a signal including the output bit sequence e to a second node.
Example 6
[0310] In Example 6, a first node obtains an input bit sequence c=[c.sub.0, c.sub.1, c.sub.2, c.sub.3, c.sub.4, c.sub.5, c.sub.6, c.sub.7, c.sub.8, c.sub.9, c.sub.10, c.sub.11] of length K=12. As in
[0312] The rate profiling matrix F is
[0313] The rate profiling frozen bit sequence is f=[f.sub.0, f.sub.1, f.sub.2, f.sub.3, f.sub.4, f.sub.5, f.sub.6, f.sub.7, f.sub.8, f.sub.0, f.sub.10, f.sub.11, f.sub.12, f.sub.13, f.sub.14, f.sub.15, f.sub.16, f.sub.17, f.sub.18, f.sub.19, f.sub.20, f.sub.21, f.sub.22, f.sub.23, f.sub.24, f.sub.25, f.sub.26, f.sub.27, f.sub.28, f.sub.29, f.sub.30, f.sub.31]=[0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1]. [0314] (2) Perform a pre-transform with the rate profiling output bit sequence v as a pre-transform input bit sequence and determine a pre-transform output bit sequence u=[u.sub.0, u.sub.1, u.sub.2, u.sub.3, u.sub.4, u.sub.5, u.sub.6, u.sub.7, u.sub.8, u.sub.9, u.sub.10, u.sub.11, u.sub.12, u.sub.13, u.sub.14, u.sub.15, u.sub.16, u.sub.17, u.sub.18, u.sub.19, u.sub.20, u.sub.21, u.sub.22, u.sub.23, u.sub.24, u.sub.25, u.sub.26, u.sub.27, u.sub.28, u.sub.29, u.sub.30, u.sub.31] of length N=32 by performing vector-matrix multiplication and vector addition on a pre-transform matrix T with N=32 rows and N=32 columns and a precoding frozen bit sequence h=[h.sub.0, h.sub.1, h.sub.2, h.sub.3, h.sub.4, h.sub.5, h.sub.6, h.sub.1, h.sub.8, h.sub.9, h.sub.10, h.sub.11, h.sub.12, h.sub.13, h.sub.14, his, h.sub.16, h.sub.17, h.sub.18, h.sub.19, h.sub.20, h.sub.21, h.sub.22, h.sub.23, h.sub.24, h.sub.25, h.sub.26, h.sub.27, h.sub.28, h.sub.29, h.sub.30, h.sub.31]=[0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1] of length N=32 over GF(2) as u=v.Math.T+h.
[0315] The pre-transform matrix Tis
(P.sup.(2)).sup..Math.5 is the 5-th Kronecker power of the matrix P.sup.(2). [0317] (4) Perform an interleaving with an interleaving input sequence being the polar transform output bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N-1]=[d.sub.0, d.sub.1, d.sub.2, d.sub.3, d.sub.4, d.sub.5, d.sub.6, d.sub.7, d.sub.8, d.sub.9, d.sub.10, d.sub.11, d.sub.12, d.sub.13, d.sub.14, d.sub.15, d.sub.16, d.sub.17, d.sub.18, d.sub.19, d.sub.20, d.sub.21, d.sub.22, d.sub.23, d.sub.24, d.sub.25, d.sub.26, d.sub.27, d.sub.28, d.sub.29, d.sub.30, d.sub.31] of length N=32 and determine an interleaving output bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N-1]=[d.sub.0, d.sub.1, d.sub.2, d.sub.3, d.sub.4, d.sub.5, d.sub.0, d.sub.7, d.sub.8, d.sub.9, d.sub.10, d.sub.11, d.sub.12, d.sub.13, d.sub.14, d.sub.15, d.sub.16, d.sub.17, d.sub.18, d.sub.19, d.sub.20, d.sub.21, d.sub.22, d.sub.23, d.sub.24, d.sub.25, d.sub.26, d.sub.27, d.sub.28, d.sub.29, d.sub.30, d.sub.31] is of length N=32 as follows di=d.sub.J.sub.
TABLE-US-00034 For i = 0 to N1 j = floor(32i/N); J.sub.i = .sub.j(N/32) + mod(i, N/32); End for [0318] (5) Perform a bit selection with the interleaving output bit sequence d of length N=32 as a bit selection input bit sequence to obtain an output bit sequence e=[e.sub.0, e.sub.1, e.sub.2, e.sub.3, e.sub.4, e.sub.5, e.sub.6, e.sub.7, e.sub.8, e.sub.9, e.sub.10, e.sub.11, e.sub.12, e.sub.13, e.sub.14, e.sub.15, e.sub.16, e.sub.17, e.sub.18, e.sub.19, e.sub.20, e.sub.21, e.sub.22, e.sub.23, e.sub.24, e.sub.25, e.sub.26, e.sub.27] of length E=28 as e.sub.i=d.sub.N-E+1 for i=0, 1, 2, . . . , 26, 27.
[0319] After the bit selection, the first node transmits a signal including the output bit sequence e to a second node.
Example 7
[0320] In Example 7, a first node obtains an input bit sequence c=[c.sub.0, c.sub.1, c.sub.2, . . . , c.sub.K-2, c.sub.K-1] of length K. The input sequence c comprises Lcrc cyclic redundancy check (CRC) bits determined by a cyclic generator polynomial g(D)=g.sub.Lcrc.Math.D.sup.Lcrc+g.sub.Lcrc1.Math.D.sup.Lcrc1+ . . . +g.sub.2.Math.D.sup.2+g.sub.1.Math.D+g.sub.0 with coefficients over GF(2) and K-Lcrc payload bits. As in
TABLE-US-00035 k = 0; For i = 0 to N1 If i Q v.sub.i = c.sub.k, k = k + 1; Else v.sub.i = 0; End if End for [0322] (2) Perform a pre-transform with the rate profiling output bit sequence v as a pre-transform input bit sequence and determine a pre-transform output bit sequence u=[u.sub.0, u.sub.1, . . . , u.sub.N-2, u.sub.N-1] of length N using the following: [0323] a generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m.Math.D.sup.m over GF(2) or equivalently a generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m] with a memory length m, [0324] a precoding input index set P.sub.I={0, 1, 2, . . . , Q.sub.max1, Q.sub.max} with all elements being non-negative integers not greater than the value Q.sub.max, and [0325] a precoding output index set P.sub.O={0, 1, 2, . . . , Q.sub.max1, Q.sub.max} with all elements being non-negative integers not greater than the value Q.sub.max. Q.sub.max is the maximum value in the data bit index set Q,
[0326] Then, the pre-transform output bit sequence u is determined as follows (e.g., see also Algorithm 5A). If an index i does not belong to precoding output index set P.sub.O, the i-th bit u.sub.i in the pre-transform output bit sequence u is set to 0.
TABLE-US-00036 For I = 0 to N1 If i P.sub.o k = 0; j = 0; u.sub.i = 0; While k m && j i If i j P.sub.I u.sub.i = mod(u.sub.i + g.sub.k .Math. v.sub.i-j, 2); k = k + 1; End if j = j + 1; End while Else u.sub.i = 0; End if End for [0327] (3) Perform a polar transform with the pre-transform output bit sequence u as a polar transform input bit sequence using a polar matrix G.sup.(N)=(P.sup.(2)).sup..Math.n of size N to obtain a polar transform output bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N-2, d.sub.N-1] of length N as d=u.Math.G.sup.(N). The matrix operation is over GF(2),
(P.sup.(2)).sup..Math.n is the 5-th Kronecker power of the matrix P.sup.(2). [0328] (4) Perform an interleaving with the polar transform output bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N-2, d.sub.N-1] of length N as an interleaving input sequence to obtain an interleaving output bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N-2, d.sub.N-1] of length N according to a sub-block interleaver pattern =[.sub.0, .sub.1, .sub.2, .sub.3, .sub.4, .sub.5, .sub.6, .sub.7, .sub.8, .sub.9, .sub.10, .sub.11, .sub.12, .sub.13, .sub.14, .sub.15, .sub.16, .sub.17, .sub.18, .sub.19, .sub.20, .sub.21, .sub.22, .sub.23, .sub.24, .sub.25, .sub.26, .sub.27, .sub.28, .sub.29, .sub.30, .sub.31]=[0, 1, 2, 4, 3, 5, 6, 7, 8, 16, 9, 17, 10, 18, 11, 19, 12, 20, 13, 21, 14, 22, 15, 23, 24, 25, 26, 28, 27, 29, 30, 31] as follows.
TABLE-US-00037 For i = 0 to N1 j = floor(32i/N); J.sub.i = .sub.j(N/32) + mod(i, N/32); d.sub.i = d.sub.J.sub.
[0329] For i=0, 1, . . . , N2, N1, the i-th bits of the interleaving output bit sequence d is equal to the J.sub.i-th bit of the interleaving input bit sequence d. J=[J.sub.0, J.sub.1, . . . , J.sub.N-2, J.sub.N-1] is an interleaver pattern of length N determined by the sub-block interleaver pattern and the polar matrix size N. The interleaver pattern J=[J.sub.0, J.sub.1, . . . , J.sub.N-2, J.sub.N-1] is a permutation of the integer sequence [0, 1, 2, . . . , N2, N1]. [0330] (5) Perform a bit selection with the interleaving output bit sequence d of length N as a bit selection input bit sequence to obtain the output bit sequence e of length E as e.sub.k=d, k=0, 1, 2, . . . , E2, E1. The output bit sequence e comprises bits in the interleaving output bit sequence d with indices less than E.
[0331] After the bit selection, the first node transmits a signal including the output bit sequence e to a second node.
Example 8
[0332] In Example 8, a first node obtains an input bit sequence c=[c.sub.0, c.sub.1, c.sub.2, . . . , c.sub.K-2, c.sub.K-1] of length K. The input sequence c comprises Lcrc cyclic redundancy check (CRC) bits determined by a cyclic generator polynomial g (D)=g.sub.Lcrc.Math.D.sup.Lcrc+g.sub.Lcrc1.Math.D.sup.Lcrc-1+ . . . +g.sub.2.Math.D.sup.2+g D+g.sub.0 with coefficients over GF(2) and KLcrc payload bits. As in
TABLE-US-00038 k = 0; For i = 0 to N1 If i Q v.sub.i = c.sub.k, k = k + 1; Else v.sub.i = 0; End if End for [0334] (2) Perform a pre-transform with the rate profiling output bit sequence v as a pre-transform input bit sequence and determine a pre-transform output bit sequence u=[u.sub.0, u.sub.1, . . . , u.sub.N-2, U.sub.N-1] of length N using the following:
[0335] a generator polynomial g(D)=g.sub.0+g.sub.1.Math.D+ . . . +g.sub.m.Math.D.sup.m over GF(2) or equivalently a generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m] with a memory length m, a precoding input index set P.sub.I, and [0336] a precoding output index set P.sub.O,
[0337] The pre-transform output bit sequence u is determined as follows (e.g., see also Algorithm 5B). If an index i does not belong to the precoding output index set P.sub.O, the i-th bit u.sub.i in the pre-transform output bit sequence u is set to the i-th bit v.sub.i in the pre-transform input bit sequence v.
TABLE-US-00039 For i = 0 to N1 If i P.sub.o k = 0; j= 0; u.sub.i = 0; While k m && j i If i j P.sub.I u.sub.i = mod(u.sub.i + g.sub.k .Math. V.sub.ij, 2); k = k + 1; End if j = j + 1; End while Else u.sub.i = v.sub.i, End if End for [0338] (3) Perform a polar transform with the pre-transform output bit sequence u as a polar transform input bit sequence using a polar matrix G.sup.(N)=(P.sup.(2)).sup..Math.n of size N to obtain a polar transform output bit sequence d=[d.sub.0, d.sub.1, . . . , d.sub.N-2, d.sub.N-1] of length N as d=u.Math.G.sup.(N). The matrix operation is over
TABLE-US-00040 For i = 0 to N1 j = floor(32i/N); J.sub.i = .sub.j(N/32) + mod(i, N/32); End for
[0340] After the rate matching, the first node modulates the output bit sequence e into a first output symbol sequence x=[x.sub.0, x.sub.1, . . . , X.sub.E/Qm1] using the quadrature phase shift keying (QPSK) modulation and transmits a signal including the first output symbol sequence x to a second node, wherein, Q.sub.m=2 is the modulation order of QPSK.
[0341] Example settings for the precoding input index set P.sub.I, the precoding output index set Po and the ordered rate matching index set R in the above process are as follows, [0342] Example Setting 8-1: R=<R(0), R(1), . . . , R(E2), R(E1)>=<J.sub.0, J.sub.1, . . . , J.sub.E-2, J.sub.E-1>, P.sub.I={0, 1, 2, . . . , Q.sub.max1, Q.sub.max}, P.sub.O={0, 1, 2, . . . , Q.sub.max1, Q.sub.max}; [0343] Example Setting 8-2: R=<R(0), R(1), . . . , R(E2), R(E1)>=<J.sub.0, J.sub.1, . . . , J.sub.E-2, J.sub.E-1>, P.sub.I={0, 1, 2, . . . , Q.sub.max1, Q.sub.max}, P.sub.O={R(0), R(1), R(2), . . . , R(E1)}; [0344] Example Setting 8-3: R=<R(0), R(1), . . . , R(E2), R(E1)>=<J.sub.0, J.sub.1, . . . , J.sub.E-2, J.sub.E-1>, P.sub.I={R(0), R(1), R(2), . . . , R(E1)}, P.sub.O={0, 1, 2, . . . , Q.sub.max1, Q.sub.max}; [0345] Example Setting 8-4: R=<R(0), R(1), . . . , R(E2), R(E1)>=<J.sub.0, J.sub.1, . . . , J.sub.E-2, J.sub.E-1>, P.sub.I={R(0), R(1), R(2), . . . , R(E1)}, P.sub.O={R(0), R(1), . . . , R(E2), R(E1)}; [0346] Example Setting 8-5: R=<R(0), R(1), . . . , R(E2), R(E1)>=<J.sub.N-E, J.sub.N-E+1, . . . , J.sub.N-2, J.sub.N-1>, P.sub.I={0, 1, 2, . . . , Q.sub.max1, Q.sub.max}, P.sub.O={0, 1, 2, . . . , Q.sub.max1, Q.sub.max}; [0347] Example Setting 8-6: R=<R(0), R(1), . . . , R(E2), R(E1)>=<J.sub.N-E, J.sub.N-E+1, . . . , J.sub.N-2, J.sub.N-1>, P.sub.I={0, 1, 2, . . . , Q.sub.max1, Q.sub.max}, P.sub.O={R(0), R(1), R(2), . . . , R(E1)}; [0348] Example Setting 8-7: R=<R(0), R(1), . . . , R(E2), R(E1)>=<J.sub.N-E, J.sub.N-E+1, . . . , J.sub.N-2, J.sub.N-1>, P.sub.I={R(0), R(1), R(2), . . . , R(E1)}, P.sub.O={0, 1, 2, . . . , Q.sub.max1, Q.sub.max}; [0349] Example Setting 8-8: R=<R(0), R(1), . . . , R(E2), R(E1)>=<J.sub.N-E, J.sub.N-E+1, . . . , J.sub.N-2, J.sub.N-1>, P.sub.I={R(0), R(1), R(2), . . . , R(E1)}, P.sub.O={R(0), R(1), . . . , R(E2), R(E1)}.
[0350] Here, {0, 1, 2, . . . , Q.sub.max1, Q.sub.max} denotes a set comprising all elements being non-negative integers not greater than the value Q.sub.max and the value Q.sub.max is the maximum value in the data bit index set Q,
R(0), R(1), . . . , R(E2), R(E1) are E distinct elements in the ordered rate matching index set R=<R(0), R(1), . . . , R(E2), R(E1)> of size E.
[0351]
TABLE-US-00041 TABLE 10 Parameters for a first example of the disclosed polar coding scheme Parameters Values Input bit sequence length K 179 Number of CRC bits Lcrc 19 Cyclic generator polynomial g(D) g(D) = D.sup.19 + D.sup.18 + D.sup.15 + D.sup.9 + D.sup.8 + D.sup.5 + D.sup.4 + D.sup.3 + D.sup.2 + 1 Output bit sequence E 198 Polar matrix size N 256 Data bit index set Q Q = {7, 11, 13, 14, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197} Memory length m 6 Generator polynomial g(D) g(D) = 1 + D.sup.2 + D.sup.3 + D.sup.5 + D.sup.6 (g = [1, 0, 1, 1, 0, 1, 1]) (or equivalently generator bit sequence g) Maximum value Q.sub.max 197 in data bit index set Q Precoding input index set P.sub.I P.sub.I = {0, 1, 2, . . . , Q.sub.max 1, Q.sub.max} = {0, 1, 2, . . . , 196, 197} Precoding output index set P.sub.O P.sub.O = {0, 1, 2, . . . , Q.sub.max 1, Q.sub.max} = {0, 1, 2, . . . , 196, 197} Ordered rate matching index set R R = <R(0), R(1), . . . , R(E 2), R(E 1)> = <0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 32, 33, 34, 35, 36, 37, 38, 39, 24, 25, 26, 27, 28, 29, 30, 31, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 128, 129, 130, 131, 132, 133, 134, 135, 72, 73, 74, 75, 76, 77, 78, 79, 136, 137, 138, 139, 140, 141, 142, 143, 80, 81, 82, 83, 84, 85, 86, 87, 144, 145, 146, 147, 148, 149, 150, 151, 88, 89, 90, 91, 92, 93, 94, 95, 152, 153, 154, 155, 156, 157, 158, 159, 96, 97, 98, 99, 100, 101, 102, 103, 160, 161, 162, 163, 164, 165, 166, 167, 104, 105, 106, 107, 108, 109, 110, 111, 168, 169, 170, 171, 172, 173, 174, 175, 112, 113, 114, 115, 116, 117, 118, 119, 176, 177, 178, 179, 180, 181, 182, 183, 120, 121, 122, 123, 124, 125, 126, 127, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197>
[0352]
TABLE-US-00042 TABLE 11 Example parameters for a second example of the disclosed polar coding scheme Parameters Values Input bit sequence length K 75 Number of CRC bits Lcrc 19 Cyclic generator polynomial g(D) g(D) = D.sup.19 + D.sup.18 + D.sup.15 + D.sup.9 + D.sup.8 + D.sup.5 + D.sup.4 + D.sup.3 + D.sup.2 + 1 Output bit sequence E 88 Polar matrix size N 128 Data bit index set Q Q = {7, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91} Memory length m 6 Generator polynomial g(D) g(D) = 1 + D.sup.2 + D.sup.3 + D.sup.5 + D.sup.6 (g = [1, 0, 1, 1, 0, 1, 1]) (or equivalently generator bit sequence g) Maximum value Q.sub.max in data 91 bit index set Q Precoding input index set P.sub.I P.sub.I = {0, 1, 2, . . . , Q.sub.max 1, Q.sub.max} = {0, 1, 2, . . . , 90, 91} Precoding output index set P.sub.O P.sub.O = {R(0), R(1), . . . , R(E 2), R(E 1)} = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17, 18, 19, 12, 13, 14, 15, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 64, 65, 66, 67, 36, 37, 38, 39, 68, 69, 70, 71, 40, 41, 42, 43, 72, 73, 74, 75, 44, 45, 46, 47, 76, 77, 78, 79, 48, 49, 50, 51, 80, 81, 82, 83, 52, 53, 54, 55, 84, 85, 86, 87, 56, 57, 58, 59, 88, 89, 90, 91} Ordered rate matching index set R R = <R(0), R(1), . . . , R(E 2), R(E 1)> = <0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17, 18, 19, 12, 13, 14, 15, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 64, 65, 66, 67, 36, 37, 38, 39, 68, 69, 70, 71, 40, 41, 42, 43, 72, 73, 74, 75, 44, 45, 46, 47, 76, 77, 78, 79, 48, 49, 50, 51, 80, 81, 82, 83, 52, 53, 54, 55, 84, 85, 86, 87, 56, 57, 58, 59, 88, 89, 90, 91>
[0353]
TABLE-US-00043 TABLE 12 Example parameters for a third specific example of disclosed new polar coding scheme Parameters Values Input bit sequence length K 179 number of CRC bits Lcrc 19 cyclic generator polynomial g(D) g(D) = D.sup.19 + D.sup.18 + D.sup.15 + D.sup.9 + D.sup.8 + D.sup.5 + D.sup.4 + D.sup.3 + D.sup.2 + 1 output bit sequence E 198 polar matrix size N 256 data bit index set Q Q = {7, 11, 13, 14, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197} memory length m 6 generator polynomial g(D) g(D) = 1 + D.sup.2 + D.sup.3 + D.sup.5 + D.sup.6 (g = [1, 0, 1, 1, 0, 1, 1]) (or equivalently generator bit sequence g) maximum value Q.sub.max in data 197 bit index set Q precoding input index set P.sub.I P.sub.I = {R(0), R(1), R(2), . . . , R(E 1)} = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 32, 33, 34, 35, 36, 37, 38, 39, 24, 25, 26, 27, 28, 29, 30, 31, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 128, 129, 130, 131, 132, 133, 134, 135, 72, 73, 74, 75, 76, 77, 78, 79, 136, 137, 138, 139, 140, 141, 142, 143, 80, 81, 82, 83, 84, 85, 86, 87, 144, 145, 146, 147, 148, 149, 150, 151, 88, 89, 90, 91, 92, 93, 94, 95, 152, 153, 154, 155, 156, 157, 158, 159, 96, 97, 98, 99, 100, 101, 102, 103, 160, 161, 162, 163, 164, 165, 166, 167, 104, 105, 106, 107, 108, 109, 110, 111, 168, 169, 170, 171, 172, 173, 174, 175, 112, 113, 114, 115, 116, 117, 118, 119, 176, 177, 178, 179, 180, 181, 182, 183, 120, 121, 122, 123, 124, 125, 126, 127, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197} precoding output index set P.sub.O P.sub.O = {0, 1, 2, . . . , Q.sub.max 1, Q.sub.max} = {0, 1, 2, . . . , 196, 197} ordered rate matching index set R R = <R(0), R(1), R(2), . . . , R(E 1)> = <0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 32, 33, 34, 35, 36, 37, 38, 39, 24, 25, 26, 27, 28, 29, 30, 31, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 128, 129, 130, 131, 132, 133, 134, 135, 72, 73, 74, 75, 76, 77, 78, 79, 136, 137, 138, 139, 140, 141, 142, 143, 80, 81, 82, 83, 84, 85, 86, 87, 144, 145, 146, 147, 148, 149, 150, 151, 88, 89, 90, 91, 92, 93, 94, 95, 152, 153, 154, 155, 156, 157, 158, 159, 96, 97, 98, 99, 100, 101, 102, 103, 160, 161, 162, 163, 164, 165, 166, 167, 104, 105, 106, 107, 108, 109, 110, 111, 168, 169, 170, 171, 172, 173, 174, 175, 112, 113, 114, 115, 116, 117, 118, 119, 176, 177, 178, 179, 180, 181, 182, 183, 120, 121, 122, 123, 124, 125, 126, 127, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197>
[0354]
TABLE-US-00044 TABLE 13 Example parameters for a fourth example of the disclosed new polar coding scheme Parameters Values input bit sequence length K 99 number of CRC bits Lcrc 19 cyclic generator polynomial g(D) g(D) = D.sup.19 + D.sup.18 + D.sup.15 + D.sup.9 + D.sup.8 + D.sup.5 + D.sup.4 + D.sup.3 + D.sup.2 + 1 output bit sequence E 144 polar matrix size N 256 data bit index set Q Q = {15, 23, 27, 28, 29, 30, 31, 39, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 67, 69, 70, 71, 73, 74, 75, 76, 77, 78, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 131, 133, 134, 135, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167} memory length m 6 generator polynomial g(D) g(D) = 1 + D.sup.2 + D.sup.3 + D.sup.5 + D.sup.6 (g = [1, 0, 1, 1, 0, 1, 1]) (or equivalently generator bit sequence g) maximum value Q.sub.max in data 167 bit index set Q precoding input index set P.sub.I P.sub.I = {R(0), R(1), R(2), . . . , R(E 1)} = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 32, 33, 34, 35, 36, 37, 38, 39, 24, 25, 26, 27, 28, 29, 30, 31, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 128, 129, 130, 131, 132, 133, 134, 135, 72, 73, 74, 75, 76, 77, 78, 79, 136, 137, 138, 139, 140, 141, 142, 143, 80, 81, 82, 83, 84, 85, 86, 87, 144, 145, 146, 147, 148, 149, 150, 151, 88, 89, 90, 91, 92, 93, 94, 95, 152, 153, 154, 155, 156, 157, 158, 159, 96, 97, 98, 99, 100, 101, 102, 103, 160, 161, 162, 163, 164, 165, 166, 167} precoding output index set P.sub.O P.sub.O = {R(0), R(1), R(2), . . . , R(E 1)} = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 32, 33, 34, 35, 36, 37, 38, 39, 24, 25, 26, 27, 28, 29, 30, 31, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 128, 129, 130, 131, 132, 133, 134, 135, 72, 73, 74, 75, 76, 77, 78, 79, 136, 137, 138, 139, 140, 141, 142, 143, 80, 81, 82, 83, 84, 85, 86, 87, 144, 145, 146, 147, 148, 149, 150, 151, 88, 89, 90, 91, 92, 93, 94, 95, 152, 153, 154, 155, 156, 157, 158, 159, 96, 97, 98, 99, 100, 101, 102, 103, 160, 161, 162, 163, 164, 165, 166, 167} ordered rate matching index set R R = <R(0), R(1), R(2), . . . , R(E 1)> = <0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 32, 33, 34, 35, 36, 37, 38, 39, 24, 25, 26, 27, 28, 29, 30, 31, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 128, 129, 130, 131, 132, 133, 134, 135, 72, 73, 74, 75, 76, 77, 78, 79, 136, 137, 138, 139, 140, 141, 142, 143, 80, 81, 82, 83, 84, 85, 86, 87, 144, 145, 146, 147, 148, 149, 150, 151, 88, 89, 90, 91, 92, 93, 94, 95, 152, 153, 154, 155, 156, 157, 158, 159, 96, 97, 98, 99, 100, 101, 102, 103, 160, 161, 162, 163, 164, 165, 166, 167>
[0355]
TABLE-US-00045 TABLE 14 Example parameters for a fifth example of the disclosed new polar coding scheme Parameters Values input bit sequence length K 43 number of CRC bits Lcrc 19 cyclic generator polynomial g(D) g(D) = D.sup.19 + D.sup.18 + D.sup.15 + D.sup.9 + D.sup.8 + D.sup.5 + D.sup.4 + D.sup.3 + D.sup.2 + 1 output bit sequence E 200 polar matrix size N 256 data bit index set Q Q = {119, 123, 125, 126, 127, 175, 183, 187, 189, 190, 191, 207, 215, 218, 219, 220, 221, 222, 223, 230, 231, 233, 234, 235, 236, 237, 238, 239, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255} memory length m 6 generator polynomial g(D) g(D) = 1 + D.sup.2 + D.sup.3 + D.sup.5 + D.sup.6 (g = [1, 0, 1, 1, 0, 1, 1]) (or equivalently generator bit sequence g) maximum value Q.sub.max in data 255 bit index set Q precoding input index set P.sub.I P.sub.I = {0, 1, . . . , Q.sub.max} = {0, 1, 2, . . . , 254, 255} precoding output index set P.sub.O P.sub.O = {0, 1, . . . , Q.sub.max} = {0, 1, 2, . . . , 254, 255} ordered rate matching index set R R = <R(0), R(1), R(2), . . . , R(E 1)> = <56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 128, 129, 130, 131, 132, 133, 134, 135, 72, 73, 74, 75, 76, 77, 78, 79, 136, 137, 138, 139, 140, 141, 142, 143, 80, 81, 82, 83, 84, 85, 86, 87, 144, 145, 146, 147, 148, 149, 150, 151, 88, 89, 90, 91, 92, 93, 94, 95, 152, 153, 154, 155, 156, 157, 158, 159, 96, 97, 98, 99, 100, 101, 102, 103, 160, 161, 162, 163, 164, 165, 166, 167, 104, 105, 106, 107, 108, 109, 110, 111, 168, 169, 170, 171, 172, 173, 174, 175, 112, 113, 114, 115, 116, 117, 118, 119, 176, 177, 178, 179, 180, 181, 182, 183, 120, 121, 122, 123, 124, 125, 126, 127, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 224, 225, 226, 227, 228, 229, 230, 231, 216, 217, 218, 219, 220, 221, 222, 223, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255>
[0356]
TABLE-US-00046 TABLE 15 Example parameters for a sixth example of the new polar coding scheme Parameters Values input bit sequence length K 43 number of CRC bits Lcrc 19 cyclic generator polynomial g(D) g(D) = D.sup.19 + D.sup.18 + D.sup.15 + D.sup.9 + D.sup.8 + D.sup.5 + D.sup.4 + D.sup.3 + D.sup.2 + 1 output bit sequence E 200 polar matrix size N 256 data bit index set Q Q = {119, 123, 125, 126, 127, 175, 183, 187, 189, 190, 191, 207, 215, 218, 219, 220, 221, 222, 223, 230, 231, 233, 234, 235, 236, 237, 238, 239, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255} memory length m 6 generator polynomial g(D) g(D) = 1 + D.sup.2 + D.sup.3 + D.sup.5 + D.sup.6 (g = [1, 0, 1, 1, 0, 1, 1]) (or equivalently generator bit sequence g) maximum value Q.sub.max in data 255 bit index set Q precoding input index set P.sub.I P.sub.I = {0, 1, . . . , Q.sub.max} = {0, 1, 2, . . . , 254, 255} precoding output index set P.sub.O P.sub.O = {R(0), R(1), R(2), . . . , R(E 1)} = {56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 128, 129, 130, 131, 132, 133, 134, 135, 72, 73, 74, 75, 76, 77, 78, 79, 136, 137, 138, 139, 140, 141, 142, 143, 80, 81, 82, 83, 84, 85, 86, 87, 144, 145, 146, 147, 148, 149, 150, 151, 88, 89, 90, 91, 92, 93, 94, 95, 152, 153, 154, 155, 156, 157, 158, 159, 96, 97, 98, 99, 100, 101, 102, 103, 160, 161, 162, 163, 164, 165, 166, 167, 104, 105, 106, 107, 108, 109, 110, 111, 168, 169, 170, 171, 172, 173, 174, 175, 112, 113, 114, 115, 116, 117, 118, 119, 176, 177, 178, 179, 180, 181, 182, 183, 120, 121, 122, 123, 124, 125, 126, 127, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 224, 225, 226, 227, 228, 229, 230, 231, 216, 217, 218, 219, 220, 221, 222, 223, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255} ordered rate matching index set R R = <R(0), R(1), R(2), . . . , R(E 1)> = <56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 128, 129, 130, 131, 132, 133, 134, 135, 72, 73, 74, 75, 76, 77, 78, 79, 136, 137, 138, 139, 140, 141, 142, 143, 80, 81, 82, 83, 84, 85, 86, 87, 144, 145, 146, 147, 148, 149, 150, 151, 88, 89, 90, 91, 92, 93, 94, 95, 152, 153, 154, 155, 156, 157, 158, 159, 96, 97, 98, 99, 100, 101, 102, 103, 160, 161, 162, 163, 164, 165, 166, 167, 104, 105, 106, 107, 108, 109, 110, 111, 168, 169, 170, 171, 172, 173, 174, 175, 112, 113, 114, 115, 116, 117, 118, 119, 176, 177, 178, 179, 180, 181, 182, 183, 120, 121, 122, 123, 124, 125, 126, 127, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 224, 225, 226, 227, 228, 229, 230, 231, 216, 217, 218, 219, 220, 221, 222, 223, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255>
[0357]
TABLE-US-00047 TABLE 16 parameters for a seventh example of the disclosed polar coding scheme Parameters Values input bit sequence length K 43 number of CRC bits Lcrc 19 cyclic generator polynomial g(D) g(D) = D.sup.19 + D.sup.18 + D.sup.15 + D.sup.9 + D.sup.8 + D.sup.5 + D.sup.4 + D.sup.3 + D.sup.2 + 1 output bit sequence E 200 polar matrix size N 256 data bit index set Q Q = {119, 123, 125, 126, 127, 175, 183, 187, 189, 190, 191, 207, 215, 218, 219, 220, 221, 222, 223, 230, 231, 233, 234, 235, 236, 237, 238, 239, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255} memory length m 6 generator polynomial g(D) g(D) = 1 + D.sup.2 + D.sup.3 + D.sup.5 + D.sup.6 (g = [1, 0, 1, 1, 0, 1, 1]) (or equivalently generator bit sequence g) maximum value Q.sub.max in data 255 bit index set Q precoding input index set P.sub.I P.sub.I = {R(0), R(1), R(2), . . . , R(E 1)} = {56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 128, 129, 130, 131, 132, 133, 134, 135, 72, 73, 74, 75, 76, 77, 78, 79, 136, 137, 138, 139, 140, 141, 142, 143, 80, 81, 82, 83, 84, 85, 86, 87, 144, 145, 146, 147, 148, 149, 150, 151, 88, 89, 90, 91, 92, 93, 94, 95, 152, 153, 154, 155, 156, 157, 158, 159, 96, 97, 98, 99, 100, 101, 102, 103, 160, 161, 162, 163, 164, 165, 166, 167, 104, 105, 106, 107, 108, 109, 110, 111, 168, 169, 170, 171, 172, 173, 174, 175, 112, 113, 114, 115, 116, 117, 118, 119, 176, 177, 178, 179, 180, 181, 182, 183, 120, 121, 122, 123, 124, 125, 126, 127, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 224, 225, 226, 227, 228, 229, 230, 231, 216, 217, 218, 219, 220, 221, 222, 223, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255} precoding output index set P.sub.O P.sub.O = {0, 1, . . . , Q.sub.max} = {0, 1, 2, . . . , 254, 255} ordered rate matching index set R R = <R(0), R(1), R(2), . . . , R(E 1)> = <56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 128, 129, 130, 131, 132, 133, 134, 135, 72, 73, 74, 75, 76, 77, 78, 79, 136, 137, 138, 139, 140, 141, 142, 143, 80, 81, 82, 83, 84, 85, 86, 87, 144, 145, 146, 147, 148, 149, 150, 151, 88, 89, 90, 91, 92, 93, 94, 95, 152, 153, 154, 155, 156, 157, 158, 159, 96, 97, 98, 99, 100, 101, 102, 103, 160, 161, 162, 163, 164, 165, 166, 167, 104, 105, 106, 107, 108, 109, 110, 111, 168, 169, 170, 171, 172, 173, 174, 175, 112, 113, 114, 115, 116, 117, 118, 119, 176, 177, 178, 179, 180, 181, 182, 183, 120, 121, 122, 123, 124, 125, 126, 127, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 224, 225, 226, 227, 228, 229, 230, 231, 216, 217, 218, 219, 220, 221, 222, 223, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255>
[0358]
TABLE-US-00048 TABLE 17 Example parameters for an eighth example of the disclosed polar coding scheme Parameters Values input bit sequence length K 43 number of CRC bits Lcrc 19 cyclic generator polynomial g(D) g(D) = D.sup.19 + D.sup.18 + D.sup.15 + D.sup.9 + D.sup.8 + D.sup.5 + D.sup.4 + D.sup.3 + D.sup.2 + 1 output bit sequence E 200 polar matrix size N 256 data bit index set Q Q = {119, 123, 125, 126, 127, 175, 183, 187, 189, 190, 191, 207, 215, 218, 219, 220, 221, 222, 223, 230, 231, 233, 234, 235, 236, 237, 238, 239, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255} memory length m 6 generator polynomial g(D) g(D) = 1 + D.sup.2 + D.sup.3 + D.sup.5 + D.sup.6 (g = [1, 0, 1, 1, 0, 1, 1]) (or equivalently generator bit sequence g) maximum value Q.sub.max in data 255 bit index set Q precoding input index set P.sub.I P.sub.I = {R(0), R(1), R(2), . . . , R(E 1)} = {56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 128, 129, 130, 131, 132, 133, 134, 135, 72, 73, 74, 75, 76, 77, 78, 79, 136, 137, 138, 139, 140, 141, 142, 143, 80, 81, 82, 83, 84, 85, 86, 87, 144, 145, 146, 147, 148, 149, 150, 151, 88, 89, 90, 91, 92, 93, 94, 95, 152, 153, 154, 155, 156, 157, 158, 159, 96, 97, 98, 99, 100, 101, 102, 103, 160, 161, 162, 163, 164, 165, 166, 167, 104, 105, 106, 107, 108, 109, 110, 111, 168, 169, 170, 171, 172, 173, 174, 175, 112, 113, 114, 115, 116, 117, 118, 119, 176, 177, 178, 179, 180, 181, 182, 183, 120, 121, 122, 123, 124, 125, 126, 127, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 224, 225, 226, 227, 228, 229, 230, 231, 216, 217, 218, 219, 220, 221, 222, 223, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255} precoding output index set P.sub.O P.sub.O = {R(0), R(1), R(2), . . . , R(E 1)} = {56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 128, 129, 130, 131, 132, 133, 134, 135, 72, 73, 74, 75, 76, 77, 78, 79, 136, 137, 138, 139, 140, 141, 142, 143, 80, 81, 82, 83, 84, 85, 86, 87, 144, 145, 146, 147, 148, 149, 150, 151, 88, 89, 90, 91, 92, 93, 94, 95, 152, 153, 154, 155, 156, 157, 158, 159, 96, 97, 98, 99, 100, 101, 102, 103, 160, 161, 162, 163, 164, 165, 166, 167, 104, 105, 106, 107, 108, 109, 110, 111, 168, 169, 170, 171, 172, 173, 174, 175, 112, 113, 114, 115, 116, 117, 118, 119, 176, 177, 178, 179, 180, 181, 182, 183, 120, 121, 122, 123, 124, 125, 126, 127, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 224, 225, 226, 227, 228, 229, 230, 231, 216, 217, 218, 219, 220, 221, 222, 223, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255} ordered rate matching index set R R = <R(0), R(1), R(2), . . . , R(E 1)> = <56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 128, 129, 130, 131, 132, 133, 134, 135, 72, 73, 74, 75, 76, 77, 78, 79, 136, 137, 138, 139, 140, 141, 142, 143, 80, 81, 82, 83, 84, 85, 86, 87, 144, 145, 146, 147, 148, 149, 150, 151, 88, 89, 90, 91, 92, 93, 94, 95, 152, 153, 154, 155, 156, 157, 158, 159, 96, 97, 98, 99, 100, 101, 102, 103, 160, 161, 162, 163, 164, 165, 166, 167, 104, 105, 106, 107, 108, 109, 110, 111, 168, 169, 170, 171, 172, 173, 174, 175, 112, 113, 114, 115, 116, 117, 118, 119, 176, 177, 178, 179, 180, 181, 182, 183, 120, 121, 122, 123, 124, 125, 126, 127, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 224, 225, 226, 227, 228, 229, 230, 231, 216, 217, 218, 219, 220, 221, 222, 223, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255>
[0359] It is noted that
[0360]
[0361]
[0362] In some embodiments, the at least one index set comprises all non-negative integers that are equal to or smaller than Q.sub.max, where Q.sub.max is an element that has a largest value in a first index set (having K elements, Q being a subset of the set of bit indices that comprises all non-negative integers that are less than N. For example, Q is a data bit index set and
[0363] In some embodiments, the at least one index set is same as an ordered rate matching index set R=<R(0), R(1), . . . , R(N.sub.r2), R(N.sub.r1)>, where N.sub.r=min(E, N).
[0364] In some embodiments, the at least one index set comprises all non-negative integers that are equal to or smaller than R.sub.max, wherein R.sub.max is an element that has a largest value in an ordered rate matching index set R with
[0365] In some embodiments, the output bit sequence consists of bits in an output bit sequence of the Polar transform with indices being in an ordered rate matching index set R=<R(0), R(1), . . . , R(N.sub.r2), R(N.sub.r1)>. The output bit sequence of the Polar transform has a length N, and N.sub.r=min(E, N). For example, K=4, N=8, E=6, R=<R(0), R(1), R(2), R(3), R(4), R(5)>=<0, 1, 3, 4, 7, 5>, and a polar transform output bit sequence d=[d.sub.0, d.sub.1, d.sub.2, d.sub.3, d.sub.4, d.sub.5, d.sub.6, d.sub.7]. The output bit sequence e=[c.sub.0, c.sub.1, c.sub.2, c.sub.3, c.sub.4, c.sub.5]=[d.sub.R(0), d.sub.R(1), d.sub.R(2), d.sub.R(3), d.sub.R(4), d.sub.R(5)]=[d.sub.0, d.sub.1, d.sub.3, d.sub.4, d.sub.7, d.sub.5].
[0366] In some embodiments, the output bit sequence is determined based on an intermediate bit sequence (e.g., the sequence u), and wherein an i-th bit of the intermediate bit sequence is set to a predetermined value in response to an index i not being in the at least one index set. The predetermined value comprises 0, a value in a state bit sequence, or a value in a frozen bit sequence.
[0367] In some embodiments, the output bit sequence is determined based on an intermediate bit sequence (e.g., the sequence u), and wherein an i-th bit of the intermediate bit sequence is set to an i-th bit of a rate profile output bit sequence in response to an index i not being in the at least one index set. The rate profile output bit sequence is of length N.
[0368] In some embodiments, an j-th bit of an intermediate bit sequence (e.g., sequence u) is determined by a convolution bit sequence or a convolution polynomial in response to an index j being in the at least one index set. In some embodiments, the convolution bit sequence comprises a generator bit sequence g=[g.sub.0, g.sub.1, . . . , g.sub.m], or a recursive feedback bit sequence q=[40, 41, . . . , q.sub.m]. In some embodiments, the convolution polynomial comprises a generator polynomial g(D)=g.sub.0+g.sub.1.Math.D)+. . . +g.sub.m-1.Math.D.sub.m-1+g.sub.m.Math.D.sup.m, or a recursive feedback polynomial q(D)=q.sub.0+q.sub.1D+ . . . +q.sub.m-1.Math.D.sub.m-1+q.sub.m.Math.D.sup.m.
[0369] In some embodiments, a state bit sequence t=[t.sub.0, t.sub.1, . . . , t.sub.m-1, t.sub.m] configured to store a convolution state is shifted in response to an index i being in the at least one index set. In some embodiments, the input bit sequence is represented as c, wherein the output bit sequence is determined based on an intermediate bit sequence (e.g., sequence u), and wherein an i-th bit in the intermediate bit sequence is determined based on a linear combination of elements c.sub.0, c.sub.1, c.sub.2, . . . , c.sub.i-1, c.sub.i in c.
[0370] In some embodiments, the output bit sequence is determined based on an intermediate bit sequence (e.g., sequence u), and wherein an i-th bit in the intermediate bit sequence is determined by a sub-sequence of the input bit sequence and a rate profile frozen bit sequence f=[f.sub.0, f.sub.1, . . . , f.sub.N-K1] that is a binary sequence of length N-K. In some embodiments, the output bit sequence is determined based on an intermediate bit sequence (e.g., sequence u). An i-th bit in the intermediate bit sequence is determined based on a linear combination of bits in a rate profile output bit sequence with indices being in the at least one index set (e.g., the intersection of the input index set and the bit index set) and not greater than i, where the rate profile output bit sequence is of length N. For example, if P.sub.I={3, 4, 6, 7}, then 0-th bit in the intermediate bit sequence is determined by an empty set { }={0} n P.sub.I, 1-st bit in the intermediate bit sequence is determined by an empty set { }={0, 1}P.sub.I, 2-nd bit in the intermediate bit sequence is determined by an empty set { }={0, 1, 2}P.sub.I, 3-rd bit in the intermediate bit sequence is determined by an set {3}={0, 1, 2, 3}P.sub.I, 4-th bit in the intermediate bit sequence is determined by an set {3, 4}={0, 1, 2, 3, 4}P.sub.I, 5-th bit in the intermediate bit sequence is determined by an set {3, 4}={0, 1, 2, 3, 4, 5}P.sub.I, 6-th bit in the intermediate bit sequence is determined by an set {3, 4, 6}={0, 1, 2, 3, 4, 5, 6}P.sub.I, 7-th bit in the intermediate bit sequence is determined by an set {3, 4, 6, 7}={0, 1, 2, 3, 4, 5, 6, 7}P.sub.I.
[0371] In some embodiments, the input bit sequence is represented as c. The output bit sequence is determined based on an intermediate bit sequence (e.g., sequence u). An i-th bit in the intermediate bit sequence is determined based on a linear combination of elements c.sub.0, c.sub.1, c.sub.2, . . . , c.sub.M-2, C.sub.M-1 in c. M represents a number of elements that are shared by a first index set Q that is a subset of the set of bit indices and a second index set {0, 1, 2, . . . , i1, i} that comprises all non-negative integers not greater than i. For example, for Q={3, 5, 7}, i=1, Q{0, 1, 2, . . . , i1, i}={ } and M=0; for Q={3, 5, 7}, i=3, Q{0, 1, 2, . . . , i1, i}={3} and M=1; for Q={3, 5, 7}, i=4, Q{0, 1, 2, . . . , i1, i}={3} and M=1; for Q={3, 5, 7}, i=5, we have Q{0, 1, 2, . . . , i1, i}={3, 5} and M=2, etc. The i-th bit in the intermediate bit sequence is based on a linear combination of elements v.sub.0, v.sub.i, v.sub.2, . . . , v.sub.i in v, where v having N bits is the input of a transform. For example, for K=3 and N=8, c=[c.sub.0, c.sub.1, c.sub.2], Q={3, 5, 7}, v=[v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4, v.sub.5, v.sub.6, v.sub.7]=[0, 0, 0, c.sub.0, 0, c.sub.1, 0, c.sub.2]. v.sub.3, v.sub.5, v.sub.7 are set to c.sub.0, c.sub.1, c.sub.2, respectively, while other bits in v are all set to 0. The 0th bit in the intermediate bit sequence is based on a linear combination of element v.sub.0 (no element in c). The 1.sup.st bit in the intermediate bit sequence is based on a linear combination of elements v.sub.0, v.sub.1 (no element in c). The 2.sup.nd bit in the intermediate bit sequence is based on a linear combination of elements v.sub.0, v.sub.i, v.sub.2 (no element in c). The 3rd bit in the intermediate bit sequence is based on a linear combination of elements v.sub.0, v.sub.1, v.sub.2, v.sub.3 (or a linear combination of element c.sub.0). The 4th bit in the intermediate bit sequence is based on a linear combination of elements v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4 (also a linear combination of element c.sub.0). The 5th bit in the intermediate bit sequence is based on a linear combination of elements v.sub.0, v.sub.i, v.sub.2, v.sub.3, v.sub.4, v.sub.5 (or a linear combination of elements c.sub.0, c.sub.1). The 6th bit in the intermediate bit sequence is based on a linear combination of elements v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4, v.sub.5, v.sub.6 (or a linear combination of elements c.sub.0, c.sub.1). The 7th bit in the intermediate bit sequence is based on a linear combination of elements v.sub.0, v.sub.1, v.sub.2, v.sub.3, v.sub.4, v.sub.5, v.sub.6, v.sub.7 (or a linear combination of elements c.sub.0, c.sub.1, c.sub.2).
[0372] It will be appreciated by one of skill in the art that the disclosed techniques can be applied prior to the Polar transform in channel coding to improve transmission efficiency. For example, in some embodiments, a method for wireless communication can include applying a pre-transform operation prior to the Polar coding such that, as a result of the pre-transform operation (e.g., based on rate profiling to account for different payload sizes), a subset of bits having a length not equal to the Polar coding length N is coded to provide variable code lengths that are adaptive according to the payload size. As described in this patent document, the pre-transform operation can include shuffling based on indexes. Various possible pre-transform techniques are described with reference to
[0373]
[0374]
[0375] The disclosed and other embodiments, modules and the functional operations described in this document can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this document and their structural equivalents, or in combinations of one or more of them. The disclosed and other embodiments can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer readable medium for execution by, or to control the operation of, data processing apparatus. The computer readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more them. The term data processing apparatus encompasses all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus.
[0376] A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
[0377] The processes and logic flows described in this document can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random-access memory or both. The essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Computer readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
[0378] While this patent document contains many specifics, these should not be construed as limitations on the scope of any invention or of what may be claimed, but rather as descriptions of features that may be specific to particular embodiments of particular inventions. Certain features that are described in this patent document in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination.
[0379] Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. Moreover, the separation of various system components in the embodiments described in this patent document should not be understood as requiring such separation in all embodiments.
[0380] Only a few implementations and examples are described, and other implementations, enhancements and variations can be made based on what is described and illustrated in this patent document.