# Blind Identification of Convolutional Encoder Parameters

Authors: Shaojing Su; Jing Zhou; Zhiping Huang; Chunwu Liu; Yimeng Zhang
Journal: The Scientific World Journal
 (2014)

---

## Abstract

This paper gives a solution to the blind parameter identification of a convolutional encoder. The problem can be addressed in the context of the noncooperative communications or adaptive coding and modulations (ACM) for cognitive radio networks. We consider an intelligent communication receiver which can blindly recognize the coding parameters of the received data stream. The only knowledge is that the stream is encoded using binary convolutional codes, while the coding parameters are unknown. Some previous literatures have significant contributions for the recognition of convolutional encoder parameters in hard-decision situations. However, soft-decision systems are applied more and more as the improvement of signal processing techniques. In this paper we propose a method to utilize the soft information to improve the recognition performances in soft-decision communication systems. Besides, we propose a new recognition method based on correlation attack to meet low signal-to-noise ratio situations. Finally we give the simulation results to show the efficiency of the proposed methods.


---

## Body

## 1. Introduction

In digital communication systems, error-correction codes are widely used. To meet high quality of services, new coding schemes are being developed ceaselessly. Therefore, for a communication receiver, it is very difficult to remain compatible with all standards used. But if it is an intelligent receiver, which is able to blindly recognize the coding parameters of a specific transmission context, it can adapt itself to the perpetual evolution of digital communications. Furthermore, the blind recognition techniques are also applied in noncooperative communications. In noncooperative communication contexts, a receiver does not know the coding parameters, so it must blindly recover the encoder before decoding. In this paper we focus on the blind recognition of coding parameters of an encoder which uses convolutional codes as error-correction coding and propose a method to take advantage of the soft information in soft-decision situations.Some previous literatures discussed the problem of blind recognition of convolutional codes. The authors of [1–3] developed recognition methods in noiseless context, including the rate 1/n and k/n codes, where n denotes the codeword length and k the dimension. These methods are not suitable for noisy environment. For the case of noisy context, some algorithms were proposed in recent years [4–7]. The algorithm proposed in [7], which we call a Gauss-Jordan elimination through pivoting (GJETP) based algorithm in this paper, completely solved the blind parameter recognition of k/n convolutional codes with low complexity and excellent recognition performances.However, the previous works are all discussed in hard-decision situations. In modern communication systems, more and more soft-decision based algorithms are applied to improve the signal processing performances. For example, the soft-decision based decoding methods always have better performances than hard-decision situations [8–12]. Similarly, some soft-decision based blind recognition of block code parameters also outperforms the hard-decision one [13, 14].In Section2 of this paper, based on [6, 7] we propose a method to utilize the soft information to improve the recognition performances in soft-decision systems. And we give another two improvements about the recognition algorithm in Sections 3 and 4: (1) because the authors of [6, 7] did not give a normative algorithm to automatically identify the parameter n for a computer program, we propose a formalized scheme to optimize the recognition of n; (2) the authors of [6, 7] did not consider the synchronization of codewords while the synchronization positions are usually unknown in a noncooperative communication context; we propose to modify the algorithm to identify the codeword synchronization.Besides, in Section5 we propose a correlation attack method to meet very low signal-to-noise ratio (SNR) situations, which also includes both hard- and soft-decision algorithms. This method might require more computational time, but it can push the SNR limits of the GJETP-based algorithm proposed in [7]. And we propose some strategies to reduce the searching space according to the structural analysis of the dual codes.Finally we show the efficiency of the proposed algorithm by computer simulations in Section6 and conclude the paper in Section 7.


## 2. Utilizing the Soft Information

The details of the GJETP-based recognition of ratek/n convolutional encoder parameters are introduced in [7]. The algorithm includes three major sections:(1)
identification of code lengthn;(2)
identification of a dual code basis;(3)
identification of the generator matrix.In the first procedure, the authors of [7] propose to recognize parameter n using the following steps.Step 1.
Set the minimum and maximum value ofl, that is, lmin⁡ and lmax⁡. Initialize l to be lmin⁡.Step 2.
According tol and a sequence of received symbols, we generate an observed data matrix Rl as shown in Figure 1, the numbers in which denote the arriving order of the bits in the received data stream.Figure 1
Generation of the observed matrixRl.Step 3.
Transform the matrixRl to a lower triangular matrix Gl by GJETP (see [15] for details):
(1)Gl=AlRlBl.Step 4.
Obtain the setZl as follows:
(2)Zl=Card{i∈{1,…,l}∣Nl(i)≤L-l2γopt},
where Nl(i) is the number of “1” in the lower part of the ith column in the matrix Gl,γopt is an optimal threshold [6, 7], and Card{x} denotes the cardinal of x. An Nl(i) smaller than (L-l)γopt/2 indicates that the ith column of Rl has a high probability to be dependent on the other columns.Step 5.
Ifl=lmax⁡, execute Step 6. If l<lmax⁡, let l=l+1 and go back to Step 2.Step 6.
Output the gap between two consecutive nonzero cardinals,Zl, as the estimated codeword size n^. The principle of this estimation is that when l=mn(m∈Z+) and l is larger than a parameter na (see [7] for details), some columns of Cl can be determined by other columns, where Cl=Rl+El and El is the error pattern corresponding to Rl.According to the GJETP algorithm, the reliability of upper part ofRl has larger influence on the successful detection of dependent columns in Rl. So if we can make the upper part of Rl have lower errors, the algorithm can be improved. In hard-decision situations, we cannot determine which rows in Rl have lower probabilities to have error decision bits. But in soft-decision situations, we can examine the reliabilities of the rows in Rl according to the soft-decisions bits. Therefore, here we propose the following processing procedure inserted into the steps (between Step 2 and Step 3) mentioned above.(1)
Fill the observed matrixRl with the soft-decision bits. For each row in Rl we find the decision bit that has the lowest reliability and record its reliability value as the reliability of the row.(2)
Arrange the rows ofRl according to each row’s lowest reliability value to make the first row of Rl have the highest reliability, the second row have the second highest reliability, and so on.(3)
Obtain the hard decisions of the bits in the rearrangedRl and continue Step 3 mentioned above.After this processing, the upper rows of the rearrangedRl have higher reliabilities and therefore have lower probabilities to include error decision bits. So the probability of successful detection of dependent columns can be improved. And as the value of L rises, the improvement of the reliabilities of the upper part of Rl becomes more effective, so the recognition performance can be improved more obviously than the previous algorithm in [7]. After the estimation of n, we use Algorithms  1 and   2 in [7] to identify other coding parameters. Note that the parity check vector recognition procedure uses the GJETP algorithm too, so the proposed rearranged steps are also applied before each GJETP processing when recognizing the parity check vectors.


## 3. Formalizing the Estimation Algorithm ofn

Note that, in Step6 shown in the previous section, the authors of [7] only give the idea of the estimation of n. When the noise level is high, there exists a problem that the number of error decision bits is high and some cardinals Zl corresponding to the values of l that equals mn are blank. So not all the gaps between two consecutive nonzero cardinals, Zl, equal n. In this case, we need a formalized algorithm to estimate the value of n more exactly. This can be done by simply searching all the gaps between two consecutive nonzero cardinals and find out which gap value appears mostly. The detailed algorithm steps are listed below.(1)
LetVl=[l1,l2,…,ls] be the vector that consists of the values of l corresponding to the detected nonzero cardinals Zl in Step 6.(2)
Calculate the vectorΔVl=[Δl1,Δl2,…,Δls-1], the elements of which are calculated by
(3)Δli(1≤i≤s-1)=li+1-li.(3)
Initialize a vectorQ with length lmax⁡ to be overall zeros and for each value of i from 1 to s-1, we let
(4)Q(Δli)=Q(Δli)+1.(4)
Finally we find the maximum element inQ and output the corresponding gap valueΔli to be the estimated codeword size n^.After taking the previously mentioned searching method we can find the most probable gap between two consecutive nonzero cardinals, that is, the estimation of the code length. An example as follows further describes the searching procedure.Figure2 shows the recorded vector Nl when recognizing a C(3,2,4) convolutional code based on correct synchronization positions with a low SNR (Es/N0=4 dB). From the figure we can see that not all the gaps between two consecutive nonzero elements in Nl equal the code length, 3. If we estimate the code length by the gap between the first and the second nonzero elements in Nl, the estimation is not correct. Implementing the searching steps mentioned above, we can firstly obtain the vector Vl as follows:
(5)Vl=[21,30,33,39,42,45,48].Figure 2
The recorded vectorNl based on low SNR.Then we can calculate the vectorΔVl according to Vl as follows:
(6)ΔVl=[936333].Furthermore, we can calculate the vectorQ by (4). In the vector Q, we have Q(3)=4, Q(6)=Q(9)=1, and other elements in Q equal to zero. Q(3) is the maximum element in the vector Q, so, according to Step 4 mentioned above, we can estimate the code length:n^=3.This example shows an implementation of the formalized algorithm proposed in this section to estimate the code length more exactly in a low SNR situation.


## 4. Recognition of Synchronization Positions

The GJETP-based dual code method proposed in [7] has good performances on convolutional encoder identifications. But unfortunately, the authors did not consider the codeword synchronization problem. In noncooperative context, the synchronization cannot usually be reached before the coding parameters are correctly estimated. The algorithm is discussed based on correct synchronization. In the case that the codeword synchronization position is unknown, we can but randomly choose a position in the received data stream to be the beginning of a codeword. The randomly chosen synchronization positions have low influence on the recognition of code length, but the recognition of key parameter na (the minimal length of the rows of matrix Rl so that Rl includes dependent columns; see [7] for details) and parity check vectors are not correct.Figure3 shows the recorded vector Nl when recognizing a C(3,2,4) convolutional code based on correct synchronization positions. From the figure we can estimate the key parameter na=21, which is accordant to the C(3,2,4) convolutional code. But if we choose an incorrect synchronization position, as shown in Figure 4, the first nonzero element in vector Nl appears at the position l=24, so the key parameter na is estimated to be 24, which is a fault estimation. In order to obtain correct parity check vectors, we must firstly locate the correct synchronization positions.Figure 3
The recorded vectorNl based on correct synchronization.Figure 4
The recorded vectorNl based on incorrect synchronization.We assume that when recognizing the code length we fill the matrixRl from the t0th position from the received bit stream and the estimated code length and key parameter na are n^ and n^a, respectively, and then we propose the following steps  to find the correct codeword synchronization.Step 1.
Letτ=t0+1, n-a=na, and τ-=t0.Step 2.
Letl=n^a-n.Step 3.
Fill the matrixRl with row length l from the τth bit in the received data stream.Step 4.
Do the GJETP processing forRl and calculate  Nl, the number of dependent columns.Step 5.
IfNl>0 and l<n-a, let n-a=l, τ-=τ, and l=l-n, and go back to Step 3; otherwise, execute Step 6.Step 6.
Ifτ<t0+n-1, let τ=τ+1 and go back to Step 2.Step 7.
Letn-a and τ- be the newly estimations of na and synchronization position.The previous steps  corrected the codeword synchronization. For the following procedure of parity check matrix recognition, we useτ to be the synchronization position to fill the matrix Rl and replace na by n-a in the algorithms.


## 5. Correlation Attack Method

### 5.1. Hard-Decision Situations

If the polynomial-based generator matrices of ak/n convolutional code and the dual code are G(D) and H(D), respectively, we have [16]
(7)G(D)×H(D)=0.According to the analysis of [7], H(D) has the following style:
(8)H(D)=[h1,1(D)⋯h1,k(D)h0(D)⋮⋱⋮⋱hn-k,1(D)⋯hn-k,k(D)h0(D)],
where hj,s(D)(1≤j≤n-k,1≤s≤k) is a polynomial, coefficients of which are all in GF(2):
(9)hj,s(D)=hj,s(0)+hj,s(1)D+⋯+hj,s(μ⊥)Dμ⊥.
Parameter μ⊥ in (7) is the memory of the dual code [6, 7].h
0
(
D
) is also a polynomial on GF(2) as follows:
(10)h0(D)=h0(0)+h0(1)D+⋯+h0(μ⊥)Dμ⊥.
And according to [7], for a realizable convolutional encoder, we have
(11)h0(0)=1.Based on (8)–(10), we can define the binary form of H(D) as follows:
(12)H=[Hμ⊥Hμ⊥-1⋯H0Hμ⊥Hμ⊥-1⋯H0Hμ⊥Hμ⊥-1⋯H0⋱⋱⋱⋱],
where
(13)Hi=[h1,1(i)⋯h1,k(i)h0(i)⋮⋱⋮⋱hn-k,1(i)⋯hn-k,k(i)h0(i)].It is shown in (12) that each row of the matrix H is a shift of the following (n-k)×n(μ⊥+1) matrix H0, which we call the basic check matrix of convolutional codes in this paper:
(14)H0=[Hμ⊥Hμ⊥-1⋯H0].So the recognition problem of a convolutional encoder is equivalent to the recognition ofH0. We call the vectors in H0 the basic parity check vectors. According to the dual code principles, we can consider H0 to be a parity check matrix for (μ⊥+1) consecutive codewords. That is to say, if a row vector c includes (μ⊥+1) consecutive codewords, we have
(15)c×H0T=0.Furthermore, for a matrixC consisting of a number of such vectors, we have
(16)C×H0T=0.In this paper we say two vectorsc and h are correlated if they have the same length l and
(17)∑i=1lcihi=0,
where the sum operator is defined in GF(2) and
(18)c=[c1c2⋯cl],h=[h1h2⋯hl].One solution to the recognition ofH0 is enumerating all possible length values l and listing all vectors with length l to see which vectors have likelihood to be the basic parity check vectors. This can be implemented by enumerating all possible length values l, creating the observed data matrix Rl with row length l (as shown in Figure 1), and trying to find the vectors which are correlated with most rows of Rl. If we can find such vectors, the corresponding l can be considered to be a possible estimation of ω, which is defined to be the row length of the basic check matrix H0:
(19)ω=n(μ⊥+1).
Furthermore, we can estimate the code length n and dual code memory length μ⊥ by investigating the factors of the estimated ω.This scheme takes a very long elapsed time. Here we propose some principles to reduce the searching space.(1)
Reduce the candidates ofl.According to (19), the parameterωis a product of two integers which are all larger than 1. Therefore, we can drop the prime values while searching. So we just need to enumerate the values of l from composite numbers.(1)
Reduce the candidates of basic parity check vectors.We can set the first and the last bit of each candidate vector to be 1. Hence, we just need to enumerate the combinations of the middle(l-2) bits for eachl-length vector.In the noisy environment, not all the rows inRl are correlated with the basic parity check vectors. Rl can be written as follows:
(20)Rl=Cl+El,
where El is the error pattern corresponding to the elements in Rl and the elements in Cl are the original encoded (noiseless) bits of the received bits in Rl. If l=n(μ⊥+1) and no error exists in the received stream, that is, El=0, according to (16), we have
(21)Rl×H0T=0.In most noisy environments, because of the existence of error bits, (21) is not always true even if l equals n(μ⊥+1). So we cannot determine whether a vector h is correlated with row vectors of Rl by checking the equation Rl×hT=0. Instead, we need to compute the likelihood of a vector h to be correlated with Rl and an appropriate threshold to determine whether the vector h can be considered to be a basic check vector. We now deduce the threshold below.For a given data matrixRl and vector h, we denote by q a vector calculated by Rl×hT as follows:
(22)q=Rl×hT.
Equation (22) is defined in GF(2), so the elements in vector q are from the set {0,1}. And we denote by wt(q) the Hamming weight of the vector q. In noisy environment, the expectation of wt(q) can be calculated as follows:
(23)E[wt(q)]=L[1-Pr(c×hT=0)],
where L is the number of rows of the observed data matrix Rl and c is any possible form of the rows of Rl. Pr(c×hT=0) is the probability of c×hT=0. If the matrix Rl is filled with correct parameters, that is, l=n(μ⊥+1), the first bit filled into Rl is the beginning of a codeword, and the vector h is a valid check vector, Pr(c×hT=0) equals the probability that the vector c has even error bits. So we can calculate the probability Pr(c×hT=0) as follows:
(24)Pr(c×hT=0)=∑i=0⌊w/2⌋(w2i)τ2i(1-τ)w-2i=1+(1-2τ)w2,
where w is the Hamming weight of h andτ is the channel transition probability. According to (23) and (24), we have
(25)E1=E(wt(q))=1-(1-2τ)w2L.
According to binomial-distribution theories, we can calculate the variance of wt(q) as follows:
(26)D1=D(wt(q))=1-(1-2τ)2w4L.If the data matrixRl is based on incorrect parameters or h is not a valid check vector, the probability Pr(c×hT=0) is
(27)Pr(c×hT=0)=Pr(c×hT=1)=12.
Therefore, the expectation and variance of wt(q) are
(28)E2=E(wt(q))=12L,D2=D(wt(q))=14L.So we propose the thresholdδ based on λ-standard deviation principle as follows:
(29)δ=(E1+λD1)+(E2-λD2)2=(((1/2)-λ(1/4)L)[((1-(1-2τ)w)/2)L+λ((1-(1-2τ)2w)/4)L]+((1/2)-λ(1/4)L)[((1-(1-2τ)w)/2)L+λ((1-(1-2τ)2w)/4)L])(2)-1=L2[1-(1-2τ)w2]+λL4[1-(1-2τ)2w-1].
Experimentally, we suggest choosing the parameter λ between 6 and 8 to get a good recognition result.In (29), we must ensure that
(30)(E1+λD1)<(E1-λD2).So the number of rows of the observed data matrixRl should meet the following condition:
(31)L>[λ1-(1-2τ)2w+1(1-2τ)w]2.The thresholdδ and corresponding condition of L are based on the prior information about the noise level, that is, the channel transition probability τ. If such prior information is unknown, the calculation of (29) and (31) cannot be done. In this situation, we propose to set the threshold δ to be L/10 and let
(32)(12L-λ14L)>δ=L10.
Therefore, L should meet the following condition:
(33)L>(54λ)2.The thresholdδ=L/10 is just an experimental value. If no parity check vector can be found based on such a threshold, we can increase the value of δ and redo the searching procedure. If δ=μ/θ(θ>2), we must choose L such that
(34)(12L-λ14L)>δ=Lθ;
that is,
(35)L>(θθ-2λ)2.To implement the algorithm automatically by a computer program, we propose the following procedure to recognize the parameterωdefined by (19) and the codeword synchronization position t0 as follows.Step 1.
Set the searching range ofω; that is, set ωmin⁡ and ωmax⁡.Step 2.
List all the composite numbers betweenωmin⁡ and ωmax⁡ to form a set
(36){ω1ω2⋯ωε},
where ω1<ω2<⋯<ωε,εis the number of composite numbers between ωmin⁡ and ωmax⁡.Step 3.
Leti=1.Step 4.
Letl=ωi.Step 5.
Lett=1; fill the data matrix Rl with the received data. The first bit filled into Rl is the tth bit in the received stream.Step 6.
Letj=1.Step 7.
Create a vector:(37)h=[h1h2⋯hl-1hl],
where h1=hl=1 and h2h3⋯hl-1 is the binary form of j with length l-2.Step 8.
Calculate the vectorq by (22) and denote by wt(q) the Hamming weight of q. If wt(q)<δ, stop the searching and output t and l to be the estimation of t0 and ω; that is, let t^0=t and ω^=l. Besides, record h as hx.Step 9.
Ifj<2l-2-1, let j=j+1 and go back to Step 7. Otherwise, execute Step 10.Step 10.
Ift<nmax⁡, let t=t+1 and go back to Step 6. Otherwise, execute Step 9. nmax⁡ is the maximum of possible codeword length. nmax⁡ can be set to the maximum factor ofl (except l itself).Step 11.
Ifi<ε, go back to Step 4. Otherwise, execute Step 12.Step 12.
End the searching.If we can stop the searching from Step8, we can recognize the codeword length n based on t^0, ω^, and hx. According to (19), the code length n is a factor of ω. So we propose to estimate n by the following steps.Step 1.
List all the factors ofω (expect 1 and ω itself) to form a set
(38){n1n2⋯nσ},
where n1<n2<⋯<nσ, σ is the number of the factors of ω (expect 1 and ω itself); letl=ω.Step 2.
Leti=1.Step 3.
Letn=ni.Step 4.
Fill the data matrixRl as follows:
(39)Rl=(c1c2⋮cL),
where(40)c1=[c1⋯cn∣cn+1⋯c2n∣⋯∣cμ⊥n+1⋯c(μ⊥+1)n],c2=[cn+1⋯c2n∣c2n+1⋯c3n∣⋯∣c(μ⊥+1)n+1⋯c(μ⊥+2)n],c3=[c2n+1⋯c3n∣c3n+1⋯c4n∣⋯∣c(μ⊥+2)n+1⋯c(μ⊥+3)n],⋮⋮where ci(i≥1) is the (t^0+i-1)th bit in the received data stream and μ⊥=ω^/n-1.Step 5.
Calculate the vectorq by q=Rl×hxT and get wt(q), the Hamming weight of q.Step 6.
Ifwt(q)<δ, stop the searching and output the current n to be the estimated codeword length:n^=n. Otherwise, execute Step 7.Step 7.
Ifi<σ, let i=i+1 and go back to Step 3. Otherwise, execute Step 8.Step 8.
End the searching.After the estimation ofn, we can simply get the estimation of μ⊥ by
(41)μ^⊥=ω^n^-1.Finally, we search all the basic check vectors to recover the basic check matrixH0. According to (13) and (14), we can estimate the encoder parameter k and then-kparity check vectors by the following steps.Step 1.
Letk=1.Step 2.
Lets=1.Step 3.
Create a vectorxs as follows:
(42)xs=[c1⋯ckck+scn^+1⋯cn^+kcn^+k+sc2n^+1⋯],
where the definition ofci(i≥1)is the same as (40).Step 4.
Letl=(k+1)(μ⊥+1) and fill the elements in xs into the matrix Rl with row length l.Step 5.
Enumerate all vectorsh with length l, where the last element of h is 1, and calculate wt(q), where q=Rl×hxT. If any vector h can make wt(q)<δ, record h^s=h and execute Step 6. Otherwise, execute Step 8.Step 6.
Ifs<n^-k, lets=s+1 and go back to Step 3. Otherwise, execute Step 7.Step 7.
Stop the searching, and outputk^=k and the recorded n^-k^ vectors h^1,h^2,…,h^n^-k^.Step 8.
Ifk<n^-1, letk=k+1 and go back to Step 2. Otherwise, execute Step 9.Step 9.
End the searching.If such recognition procedure can successfully outputn^-k^vectorsh^1,h^2,…,h^n^-k^, we can finally recover the basic parity check matrix H0. We write the vectors h^1,h^2,…,h^n^-k^ as follows:(43)h^1=[h1,1⋯h1,k^h1,k^+1∣h1,(k^+1)+1⋯h1,(k^+1)+k^h1,2(k^+1)∣⋯∣h1,μ^⊥(k^+1)+1⋯h1,μ^⊥(k^+1)+k^h1,(μ^⊥+1)(k^+1)],h^2=[h2,1⋯h2,k^h2,k^+1∣h2,(k^+1)+1⋯h2,(k^+1)+kh2,2(k^+1)∣⋯∣h2,μ⊥(k^+1)+1⋯h2,μ^⊥(k^+1)+k^h2,(μ^⊥+1)(k^+1)],⋮h^n^-k^=[hn^-k^,1⋯h1,k^h1,k^+1∣hn^-k^,(k^+1)+1⋯hn^-k^,(k^+1)+k^hn^-k^,2(k^+1)∣⋯∣hn^-k^,μ^⊥(k^+1)+1⋯hn^-k^,μ^⊥(k^+1)+k^hn^-k^,(μ^⊥+1)(k^+1)],and then the parity check matrix H0 can be estimated as follows:(44)H^0=[h^1,1⋯h^1,kh^1,k+1h^1,k+2⋯h^1,2k+1h^1,2k+2h^1,k+2⋮⋱⋮⋱⋮⋱⋮⋱⋮h^n-k,1⋯h^n-k,kh^n-k,k+1h^n-k,k+2⋯h^n-k,2k+1h^n-k,2k+2h^n-k,k+2⋯⋯…].


### 5.2. Soft-Decision Situations

In hard-decision situations, we calculatewt(q) by evaluating how many vectors in Rl are correlated with a candidate parity check vector h. In soft decisions, we can utilize the soft output from the receiver to evaluate the reliability of each decision bit. Therefore, we can calculate the probability of each row in Rl to be correlated with h. For example, if a communication system uses BPSK demodulation in an additive-white-Gaussian-noise (AWGN) channel, according to the analysis in [14, 15], we can calculate the probability of c×hT=1 and c×hT=0 for given vectors c and h as follows:
(45)Pr(c×hT=0)=12+12∏j=1wtanh(cujσ2)Pr(c×hT=1)=12-12∏j=1wtanh⁡(cujσ2),
where σ is the noise variance, w is the Hamming weight of h, uj is the jth nonzero position in h, and cuj is theujth element in vectorc. Based on this, wt(q) is calculated as follows:
(46)wt(q)=∑i=1LPr(ci×hT=1),
where ci denotes theith row in Rl.


## 5.1. Hard-Decision Situations

If the polynomial-based generator matrices of ak/n convolutional code and the dual code are G(D) and H(D), respectively, we have [16]
(7)G(D)×H(D)=0.According to the analysis of [7], H(D) has the following style:
(8)H(D)=[h1,1(D)⋯h1,k(D)h0(D)⋮⋱⋮⋱hn-k,1(D)⋯hn-k,k(D)h0(D)],
where hj,s(D)(1≤j≤n-k,1≤s≤k) is a polynomial, coefficients of which are all in GF(2):
(9)hj,s(D)=hj,s(0)+hj,s(1)D+⋯+hj,s(μ⊥)Dμ⊥.
Parameter μ⊥ in (7) is the memory of the dual code [6, 7].h
0
(
D
) is also a polynomial on GF(2) as follows:
(10)h0(D)=h0(0)+h0(1)D+⋯+h0(μ⊥)Dμ⊥.
And according to [7], for a realizable convolutional encoder, we have
(11)h0(0)=1.Based on (8)–(10), we can define the binary form of H(D) as follows:
(12)H=[Hμ⊥Hμ⊥-1⋯H0Hμ⊥Hμ⊥-1⋯H0Hμ⊥Hμ⊥-1⋯H0⋱⋱⋱⋱],
where
(13)Hi=[h1,1(i)⋯h1,k(i)h0(i)⋮⋱⋮⋱hn-k,1(i)⋯hn-k,k(i)h0(i)].It is shown in (12) that each row of the matrix H is a shift of the following (n-k)×n(μ⊥+1) matrix H0, which we call the basic check matrix of convolutional codes in this paper:
(14)H0=[Hμ⊥Hμ⊥-1⋯H0].So the recognition problem of a convolutional encoder is equivalent to the recognition ofH0. We call the vectors in H0 the basic parity check vectors. According to the dual code principles, we can consider H0 to be a parity check matrix for (μ⊥+1) consecutive codewords. That is to say, if a row vector c includes (μ⊥+1) consecutive codewords, we have
(15)c×H0T=0.Furthermore, for a matrixC consisting of a number of such vectors, we have
(16)C×H0T=0.In this paper we say two vectorsc and h are correlated if they have the same length l and
(17)∑i=1lcihi=0,
where the sum operator is defined in GF(2) and
(18)c=[c1c2⋯cl],h=[h1h2⋯hl].One solution to the recognition ofH0 is enumerating all possible length values l and listing all vectors with length l to see which vectors have likelihood to be the basic parity check vectors. This can be implemented by enumerating all possible length values l, creating the observed data matrix Rl with row length l (as shown in Figure 1), and trying to find the vectors which are correlated with most rows of Rl. If we can find such vectors, the corresponding l can be considered to be a possible estimation of ω, which is defined to be the row length of the basic check matrix H0:
(19)ω=n(μ⊥+1).
Furthermore, we can estimate the code length n and dual code memory length μ⊥ by investigating the factors of the estimated ω.This scheme takes a very long elapsed time. Here we propose some principles to reduce the searching space.(1)
Reduce the candidates ofl.According to (19), the parameterωis a product of two integers which are all larger than 1. Therefore, we can drop the prime values while searching. So we just need to enumerate the values of l from composite numbers.(1)
Reduce the candidates of basic parity check vectors.We can set the first and the last bit of each candidate vector to be 1. Hence, we just need to enumerate the combinations of the middle(l-2) bits for eachl-length vector.In the noisy environment, not all the rows inRl are correlated with the basic parity check vectors. Rl can be written as follows:
(20)Rl=Cl+El,
where El is the error pattern corresponding to the elements in Rl and the elements in Cl are the original encoded (noiseless) bits of the received bits in Rl. If l=n(μ⊥+1) and no error exists in the received stream, that is, El=0, according to (16), we have
(21)Rl×H0T=0.In most noisy environments, because of the existence of error bits, (21) is not always true even if l equals n(μ⊥+1). So we cannot determine whether a vector h is correlated with row vectors of Rl by checking the equation Rl×hT=0. Instead, we need to compute the likelihood of a vector h to be correlated with Rl and an appropriate threshold to determine whether the vector h can be considered to be a basic check vector. We now deduce the threshold below.For a given data matrixRl and vector h, we denote by q a vector calculated by Rl×hT as follows:
(22)q=Rl×hT.
Equation (22) is defined in GF(2), so the elements in vector q are from the set {0,1}. And we denote by wt(q) the Hamming weight of the vector q. In noisy environment, the expectation of wt(q) can be calculated as follows:
(23)E[wt(q)]=L[1-Pr(c×hT=0)],
where L is the number of rows of the observed data matrix Rl and c is any possible form of the rows of Rl. Pr(c×hT=0) is the probability of c×hT=0. If the matrix Rl is filled with correct parameters, that is, l=n(μ⊥+1), the first bit filled into Rl is the beginning of a codeword, and the vector h is a valid check vector, Pr(c×hT=0) equals the probability that the vector c has even error bits. So we can calculate the probability Pr(c×hT=0) as follows:
(24)Pr(c×hT=0)=∑i=0⌊w/2⌋(w2i)τ2i(1-τ)w-2i=1+(1-2τ)w2,
where w is the Hamming weight of h andτ is the channel transition probability. According to (23) and (24), we have
(25)E1=E(wt(q))=1-(1-2τ)w2L.
According to binomial-distribution theories, we can calculate the variance of wt(q) as follows:
(26)D1=D(wt(q))=1-(1-2τ)2w4L.If the data matrixRl is based on incorrect parameters or h is not a valid check vector, the probability Pr(c×hT=0) is
(27)Pr(c×hT=0)=Pr(c×hT=1)=12.
Therefore, the expectation and variance of wt(q) are
(28)E2=E(wt(q))=12L,D2=D(wt(q))=14L.So we propose the thresholdδ based on λ-standard deviation principle as follows:
(29)δ=(E1+λD1)+(E2-λD2)2=(((1/2)-λ(1/4)L)[((1-(1-2τ)w)/2)L+λ((1-(1-2τ)2w)/4)L]+((1/2)-λ(1/4)L)[((1-(1-2τ)w)/2)L+λ((1-(1-2τ)2w)/4)L])(2)-1=L2[1-(1-2τ)w2]+λL4[1-(1-2τ)2w-1].
Experimentally, we suggest choosing the parameter λ between 6 and 8 to get a good recognition result.In (29), we must ensure that
(30)(E1+λD1)<(E1-λD2).So the number of rows of the observed data matrixRl should meet the following condition:
(31)L>[λ1-(1-2τ)2w+1(1-2τ)w]2.The thresholdδ and corresponding condition of L are based on the prior information about the noise level, that is, the channel transition probability τ. If such prior information is unknown, the calculation of (29) and (31) cannot be done. In this situation, we propose to set the threshold δ to be L/10 and let
(32)(12L-λ14L)>δ=L10.
Therefore, L should meet the following condition:
(33)L>(54λ)2.The thresholdδ=L/10 is just an experimental value. If no parity check vector can be found based on such a threshold, we can increase the value of δ and redo the searching procedure. If δ=μ/θ(θ>2), we must choose L such that
(34)(12L-λ14L)>δ=Lθ;
that is,
(35)L>(θθ-2λ)2.To implement the algorithm automatically by a computer program, we propose the following procedure to recognize the parameterωdefined by (19) and the codeword synchronization position t0 as follows.Step 1.
Set the searching range ofω; that is, set ωmin⁡ and ωmax⁡.Step 2.
List all the composite numbers betweenωmin⁡ and ωmax⁡ to form a set
(36){ω1ω2⋯ωε},
where ω1<ω2<⋯<ωε,εis the number of composite numbers between ωmin⁡ and ωmax⁡.Step 3.
Leti=1.Step 4.
Letl=ωi.Step 5.
Lett=1; fill the data matrix Rl with the received data. The first bit filled into Rl is the tth bit in the received stream.Step 6.
Letj=1.Step 7.
Create a vector:(37)h=[h1h2⋯hl-1hl],
where h1=hl=1 and h2h3⋯hl-1 is the binary form of j with length l-2.Step 8.
Calculate the vectorq by (22) and denote by wt(q) the Hamming weight of q. If wt(q)<δ, stop the searching and output t and l to be the estimation of t0 and ω; that is, let t^0=t and ω^=l. Besides, record h as hx.Step 9.
Ifj<2l-2-1, let j=j+1 and go back to Step 7. Otherwise, execute Step 10.Step 10.
Ift<nmax⁡, let t=t+1 and go back to Step 6. Otherwise, execute Step 9. nmax⁡ is the maximum of possible codeword length. nmax⁡ can be set to the maximum factor ofl (except l itself).Step 11.
Ifi<ε, go back to Step 4. Otherwise, execute Step 12.Step 12.
End the searching.If we can stop the searching from Step8, we can recognize the codeword length n based on t^0, ω^, and hx. According to (19), the code length n is a factor of ω. So we propose to estimate n by the following steps.Step 1.
List all the factors ofω (expect 1 and ω itself) to form a set
(38){n1n2⋯nσ},
where n1<n2<⋯<nσ, σ is the number of the factors of ω (expect 1 and ω itself); letl=ω.Step 2.
Leti=1.Step 3.
Letn=ni.Step 4.
Fill the data matrixRl as follows:
(39)Rl=(c1c2⋮cL),
where(40)c1=[c1⋯cn∣cn+1⋯c2n∣⋯∣cμ⊥n+1⋯c(μ⊥+1)n],c2=[cn+1⋯c2n∣c2n+1⋯c3n∣⋯∣c(μ⊥+1)n+1⋯c(μ⊥+2)n],c3=[c2n+1⋯c3n∣c3n+1⋯c4n∣⋯∣c(μ⊥+2)n+1⋯c(μ⊥+3)n],⋮⋮where ci(i≥1) is the (t^0+i-1)th bit in the received data stream and μ⊥=ω^/n-1.Step 5.
Calculate the vectorq by q=Rl×hxT and get wt(q), the Hamming weight of q.Step 6.
Ifwt(q)<δ, stop the searching and output the current n to be the estimated codeword length:n^=n. Otherwise, execute Step 7.Step 7.
Ifi<σ, let i=i+1 and go back to Step 3. Otherwise, execute Step 8.Step 8.
End the searching.After the estimation ofn, we can simply get the estimation of μ⊥ by
(41)μ^⊥=ω^n^-1.Finally, we search all the basic check vectors to recover the basic check matrixH0. According to (13) and (14), we can estimate the encoder parameter k and then-kparity check vectors by the following steps.Step 1.
Letk=1.Step 2.
Lets=1.Step 3.
Create a vectorxs as follows:
(42)xs=[c1⋯ckck+scn^+1⋯cn^+kcn^+k+sc2n^+1⋯],
where the definition ofci(i≥1)is the same as (40).Step 4.
Letl=(k+1)(μ⊥+1) and fill the elements in xs into the matrix Rl with row length l.Step 5.
Enumerate all vectorsh with length l, where the last element of h is 1, and calculate wt(q), where q=Rl×hxT. If any vector h can make wt(q)<δ, record h^s=h and execute Step 6. Otherwise, execute Step 8.Step 6.
Ifs<n^-k, lets=s+1 and go back to Step 3. Otherwise, execute Step 7.Step 7.
Stop the searching, and outputk^=k and the recorded n^-k^ vectors h^1,h^2,…,h^n^-k^.Step 8.
Ifk<n^-1, letk=k+1 and go back to Step 2. Otherwise, execute Step 9.Step 9.
End the searching.If such recognition procedure can successfully outputn^-k^vectorsh^1,h^2,…,h^n^-k^, we can finally recover the basic parity check matrix H0. We write the vectors h^1,h^2,…,h^n^-k^ as follows:(43)h^1=[h1,1⋯h1,k^h1,k^+1∣h1,(k^+1)+1⋯h1,(k^+1)+k^h1,2(k^+1)∣⋯∣h1,μ^⊥(k^+1)+1⋯h1,μ^⊥(k^+1)+k^h1,(μ^⊥+1)(k^+1)],h^2=[h2,1⋯h2,k^h2,k^+1∣h2,(k^+1)+1⋯h2,(k^+1)+kh2,2(k^+1)∣⋯∣h2,μ⊥(k^+1)+1⋯h2,μ^⊥(k^+1)+k^h2,(μ^⊥+1)(k^+1)],⋮h^n^-k^=[hn^-k^,1⋯h1,k^h1,k^+1∣hn^-k^,(k^+1)+1⋯hn^-k^,(k^+1)+k^hn^-k^,2(k^+1)∣⋯∣hn^-k^,μ^⊥(k^+1)+1⋯hn^-k^,μ^⊥(k^+1)+k^hn^-k^,(μ^⊥+1)(k^+1)],and then the parity check matrix H0 can be estimated as follows:(44)H^0=[h^1,1⋯h^1,kh^1,k+1h^1,k+2⋯h^1,2k+1h^1,2k+2h^1,k+2⋮⋱⋮⋱⋮⋱⋮⋱⋮h^n-k,1⋯h^n-k,kh^n-k,k+1h^n-k,k+2⋯h^n-k,2k+1h^n-k,2k+2h^n-k,k+2⋯⋯…].


## 5.2. Soft-Decision Situations

In hard-decision situations, we calculatewt(q) by evaluating how many vectors in Rl are correlated with a candidate parity check vector h. In soft decisions, we can utilize the soft output from the receiver to evaluate the reliability of each decision bit. Therefore, we can calculate the probability of each row in Rl to be correlated with h. For example, if a communication system uses BPSK demodulation in an additive-white-Gaussian-noise (AWGN) channel, according to the analysis in [14, 15], we can calculate the probability of c×hT=1 and c×hT=0 for given vectors c and h as follows:
(45)Pr(c×hT=0)=12+12∏j=1wtanh(cujσ2)Pr(c×hT=1)=12-12∏j=1wtanh⁡(cujσ2),
where σ is the noise variance, w is the Hamming weight of h, uj is the jth nonzero position in h, and cuj is theujth element in vectorc. Based on this, wt(q) is calculated as follows:
(46)wt(q)=∑i=1LPr(ci×hT=1),
where ci denotes theith row in Rl.


## 6. Simulation Results

In this section we show the simulation results of the blind recognition of the convolutional coding parameters by utilizing the method introduced in this paper. The simulations include three parts corresponding to our proposed recognition algorithm on different noise level and different observed matrix sizeL. In the simulations we assume that the signal is transmitted on a binary symmetry channel (BSC) which is corrupted by AWGN.For the GJETP-based recognition method, we show the false recognition ratios (FRR) in Figure5 for several convolutional codes in different channel conditions when the observed window size L=200. We compare the proposed soft-decision based method with the hard-decision based algorithm proposed in [7]. We can see from the simulation results that when the soft information is introduced into the recognition algorithm, the recognition performances can be improved obviously. And as the SNR rises, the FRR curves descend more rapidly on soft-decision algorithm.Figure 5
Recognition performances of GJETP method.Figure6 shows the recognition performance of two convolutional codes for different observed matrix size, when the SNR Es/N0=2.36 dB. It shows that the soft information can help to make the FRR descend more rapidly when L is rising. That is to say, in soft-decision situations, we can improve the recognition performance by increasing the number of rows in the data matrix of Rl, while the hard-decision based algorithm cannot.Figure 6
Recognition performances on different size ofRl for soft and hard decisions.In Figure7, we compare the performances of convolutional encoder recognition by GJETP method and correlation attack while recognizing the coding parameters of C(2,1,3). GJETP method is based on Gauss elimination on Rl, so the influences of error bits are easily diffused during Gauss eliminating. Therefore, the fault-tolerance of GJETP method is limited. Correlation attack method can avoid this problem, so the recognition performance can be improved in low SNR situations.Figure 7
Comparison of GJETP method and correlation attack.


## 7. Conclusions

This paper proposes the methods of utilizing soft information to improve the recognition performance of convolutional encoder parameters. And we propose a formalized estimation of the parametern and synchronization positions. When introducing the soft information the recognition performance can be obviously improved and the simulations show the efficiency of the proposed methods. Besides, we propose a new algorithm to recover the basic parity check matrix by correlation attack. Although this method takes longer elapsed time, it can push the SNR limits of the GJETP method, and some principles are proposed to reduce the searching space. If the channel quality is well, the GJETP method has advantages on short computational delay. For a worse channel quality such that the GJETP does not work, correlation attack method has a significant advantage on its higher fault-tolerance.



---

*Source: 798612-2014-05-21.xml*