Difference between revisions of "Aufgaben:Exercise 3.13: Path Weighting Function again"

From LNTwww
 
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{quiz-Header|Buchseite=Kanalcodierung/Distanzeigenschaften und Fehlerwahrscheinlichkeitsschranken}}
+
{{quiz-Header|Buchseite=Channel_Coding/Distance_Characteristics_and_Error_Probability_Barriers}}
  
[[File:P_ID2711__KC_A_3_13.png|right|frame|Zur Reduktion des Zustandsübergangsdiagramms]]
+
[[File:EN_KC_A_3_13.png|right|frame|For the reduction of the state transition diagram]]
Auf der Seite  [[Channel_Coding/Distanzeigenschaften_und_Fehlerwahrscheinlichkeitsschranken#Regeln_zur_Manipulation_des_Zustands.C3.BCbergangsdiagramms|Regeln zur Manipulation des Zustandsübergangsdiagramms]]  wurde für das Beispiel unseres Rate–1/2–Standardcodes mit Gedächtnis  $m = 2$  und der Übertragungsfunktionsmatrix
+
In the  [[Channel_Coding/Distance_Characteristics_and_Error_Probability_Barriers#Rules_for_manipulating_the_state_transition_diagram|"rules for manipulating the state transition diagram"]]  section,  for the example of our rate $1/2$ standard encoder
:$${\boldsymbol{\rm G}}(D) = \big ( 1 + D + D^2\hspace{0.05cm},\hspace{0.1cm} 1  + D^2 \hspace{0.05cm}\big )$$
+
*with memory  $m = 2$  and
  
die Berechnung der Pfadgewichtsfunktionen sehr ausführlich beschrieben. Als Ergebnisse wurden genannt:
+
*the transfer function matrix
 +
:$${\boldsymbol{\rm G}}(D) = \big ( 1 + D + D^2\hspace{0.05cm},\hspace{0.1cm} 1  + D^2 \hspace{0.05cm}\big ),$$
 +
 
 +
the calculation of path weighting enumerator functions was described in great detail.  The results given were:
 
:$$T_{\rm enh}(X, U) \hspace{-0.2cm} \ = \ \hspace{-0.2cm}  \frac{U\hspace{-0.05cm} X^5}{1- 2U\hspace{-0.05cm}X}  =U\hspace{-0.05cm}X^5 \cdot \big [ 1 + (2U\hspace{-0.08cm}X) + (2U\hspace{-0.08cm}X)^2 + \text{...}  \hspace{0.05cm} \big ] \hspace{0.01cm},$$
 
:$$T_{\rm enh}(X, U) \hspace{-0.2cm} \ = \ \hspace{-0.2cm}  \frac{U\hspace{-0.05cm} X^5}{1- 2U\hspace{-0.05cm}X}  =U\hspace{-0.05cm}X^5 \cdot \big [ 1 + (2U\hspace{-0.08cm}X) + (2U\hspace{-0.08cm}X)^2 + \text{...}  \hspace{0.05cm} \big ] \hspace{0.01cm},$$
 
:$$T(X) \hspace{-0.2cm} \ = \ \hspace{-0.2cm}  \frac{X^5}{1- 2X}  =  X^5 \cdot \big [ 1 + (2X) + (2X)^2 + \text{...} \hspace{0.05cm} \big ] \hspace{0.05cm}.$$
 
:$$T(X) \hspace{-0.2cm} \ = \ \hspace{-0.2cm}  \frac{X^5}{1- 2X}  =  X^5 \cdot \big [ 1 + (2X) + (2X)^2 + \text{...} \hspace{0.05cm} \big ] \hspace{0.05cm}.$$
  
Nun sollen die gleichen Berechnungen für den  [[Channel_Coding/Algebraische_und_polynomische_Beschreibung#Systematische_Faltungscodes|äquivalenten systematischen Code]]  mit der Übertragungsfunktionsmatrix
+
Now the same calculations shall be done for the  [[Channel_Coding/Algebraic_and_Polynomial_Description#Systematic_convolutional_codes|"equivalent systematic encoder"]]  with the transfer function matrix
:$${\boldsymbol{\rm G}}(D) = \big ( 1 \hspace{0.05cm},\hspace{0.1cm} (1 + D^2)/(1 + D + D^2) \hspace{0.05cm}\big )$$
+
:$${\boldsymbol{\rm G}}(D) = \big ( 1 \hspace{0.05cm},\hspace{0.1cm} (1 + D^2)/(1 + D + D^2) \hspace{0.05cm}\big ).$$
 
 
durchgeführt werden.
 
 
 
*Die Grafik zeigt das Zustandsübergangsdiagramm  $\rm (A)$  und die Struktur des reduzierten Diagramms  $\rm (B)$, wobei die Übergänge mit  $A(X, \, U), \  \text{...}\ , \ G(X, \, U)$  allgemein bezeichnet sind.
 
*In der Teilaufgabe '''(1)''' sollen diese Abkürzungen an das Zustandsübergangsdiagramm  $\rm (A)$  angepasst werden.
 
 
 
  
 +
*The diagram shows the state transition diagram  $\rm (A)$  and the structure of the reduced diagram  $\rm (B)$,  where the transitions are denoted by  $A(X, \, U), \ \text{...}\ , \ G(X, \, U)$  in general.
 +
 +
*In subtask  '''(1)'''  these abbreviations are to be adapted to the state transition diagram  $\rm (A)$  .
  
  
  
  
 +
Hints:
 +
* This exercise belongs to the chapter  [[Channel_Coding/Distance_Characteristics_and_Error_Probability_Bounds| "Distance Characteristics and Error Probability Bounds"]].
 +
 +
* For the solution of subtasks  '''(2)'''  and  '''(3)'''  we refer here again to the section  [[Channel_Coding/Distance_Characteristics_and_Error_Probability_Bounds#Rules_for_manipulating_the_state_transition_diagram|"Rules for manipulating the state transition diagram"]] in the theory part.
  
  
  
''Hinweise:''
+
===Questions===
* Die Aufgabegehört zum Kapitel  [[Channel_Coding/Distanzeigenschaften_und_Fehlerwahrscheinlichkeitsschranken| Distanzeigenschaften und Fehlerwahrscheinlichkeitsschranken]].
 
* Zur Lösung der Teilaufgaben '''(2)''' und '''(3)''' verweisen wir hier nochmals auf die Seite  [[Channel_Coding/Distanzeigenschaften_und_Fehlerwahrscheinlichkeitsschranken#Regeln_zur_Manipulation_des_Zustands.C3.BCbergangsdiagramms|Regeln zur Manipulation des Zustandsübergangsdiagramms]] im Theorieteil.
 
 
 
 
 
 
 
===Fragebogen===
 
 
<quiz display=simple>
 
<quiz display=simple>
{Für welche Ausdrücke stehen die nachfolgenden Abkürzungen?
+
{What expressions do the following abbreviations stand for?
 
|type="[]"}
 
|type="[]"}
 
+ $A(X, \, U) = UX^2$,
 
+ $A(X, \, U) = UX^2$,
Line 43: Line 41:
 
+ $G(X, \, U) = UX^2$.
 
+ $G(X, \, U) = UX^2$.
  
{Welche Ausdrücke gelten für die erweiterte Pfadgewichtsfunktion?
+
{What expressions apply to the extended path weighting enumerator function?
 
|type="[]"}
 
|type="[]"}
 
- $T_{\rm enh}(X, \, U) = UX^5 \ / \ (1 \, &ndash;2UX)$.
 
- $T_{\rm enh}(X, \, U) = UX^5 \ / \ (1 \, &ndash;2UX)$.
 
- $T_{\rm enh}(X, \, U) = UX^5 + 2 U^2X^6 + 4U^3X^7 + 8U^4X^8 + \ \text{...}$,
 
- $T_{\rm enh}(X, \, U) = UX^5 + 2 U^2X^6 + 4U^3X^7 + 8U^4X^8 + \ \text{...}$,
+ Keiner der Vorschläge ist richtig.
+
+ None of the proposals are correct.
  
{Welche Ausdrücke gelten für die "einfache" Pfadgewichtsfunktion?
+
{What expressions apply to the&nbsp; "simple path weighting enumerator function"?
 
|type="[]"}
 
|type="[]"}
 
+ $T(X) = X^5 \ / \ (1 \, &ndash;2X)$.
 
+ $T(X) = X^5 \ / \ (1 \, &ndash;2X)$.
 
+ $T(X) = X^5 + 2X^6 + 4X^7 + 8X^8 + \ \text{...} $
 
+ $T(X) = X^5 + 2X^6 + 4X^7 + 8X^8 + \ \text{...} $
- Keiner der Vorschläge ist richtig.
+
- None of the proposals are correct.
 
</quiz>
 
</quiz>
  
===Musterlösung===
+
===Solution===
 
{{ML-Kopf}}
 
{{ML-Kopf}}
'''(1)'''&nbsp; <u>Alle Lösungsvorschläge</u> sind richtig. Im angepassten Diagramm &nbsp;$\rm (B)$&nbsp; sind alle Übergänge eingezeichnet:
+
'''(1)'''&nbsp; <u>All proposed solutions</u>&nbsp; are correct.&nbsp; In the adapted diagram &nbsp;$\rm (B)$&nbsp; all transitions are drawn:
  
[[File:P_ID2712__KC_A_3_13a.png|right|frame|Zur Reduktion des Zustandsübergangsdiagramms]]
+
[[File:EN_KC_A_3_13a.png|right|frame|Reduction of the state transition diagram]]
  
*Der Übergang von $S_0$ nach $S_1$ ist durch "$1 \ | \ 11$" gekennzeichnet.  
+
*The transition from&nbsp; $S_0$&nbsp; to $S_1$&nbsp; is denoted by&nbsp; "$1 \ | \ 11$".
*Die Ausgangssequenz $\underline{x}_i = (11)$ wird durch $X^2$ ausgedrückt, das Eingangsbit $u_i = 1$ durch $U$.  
+
*Das gleiche Ergebnis erhält man für $G(X, \, U)$:
+
*The output sequence&nbsp; $\underline{x}_i = (11)$&nbsp; is expressed by&nbsp; $X^2$,&nbsp; the input bit&nbsp; $u_i = 1$&nbsp; by&nbsp; $U$.  
 +
 
 +
*The same result is obtained for&nbsp; $G(X, \, U)$:
 
:$$A(X, U) = G(X, U)= UX^2
 
:$$A(X, U) = G(X, U)= UX^2
 
\hspace{0.05cm}.$$
 
\hspace{0.05cm}.$$
  
*Die Ausgangssequenzen $\underline{x}_i = (01)$ sowie $\underline{x}_i = (10)$ werden beide mit $X$ markiert.  
+
*The output sequences&nbsp; $\underline{x}_i = (01)$&nbsp; as well as&nbsp; $\underline{x}_i = (10)$&nbsp; are both marked with&nbsp; $X$.
*Unter Berücksichtigung der Eingangsbits erhält man somit:
+
 +
*Taking into account the input bits,&nbsp; we thus obtain:
 
:$$u_i = 1\hspace{-0.1cm}:\hspace{0.15cm} B(X, U) = D(X, U)= UX\hspace{0.05cm},$$
 
:$$u_i = 1\hspace{-0.1cm}:\hspace{0.15cm} B(X, U) = D(X, U)= UX\hspace{0.05cm},$$
 
:$$u_i = 0\hspace{-0.1cm}:\hspace{0.15cm} C(X, U) = E(X, U)= X
 
:$$u_i = 0\hspace{-0.1cm}:\hspace{0.15cm} C(X, U) = E(X, U)= X
 
\hspace{0.05cm}.$$
 
\hspace{0.05cm}.$$
  
*Der Übergang "$0 \ | \ 00$" von $S_2$ nach $S_1$ wird durch $F(X, \, U) = 1$ ausgedrückt.  
+
*The transition&nbsp; "$0 \ | \ 00$"&nbsp; from&nbsp; $S_2$&nbsp; to&nbsp; $S_1$&nbsp; is expressed by&nbsp; $F(X, \, U) = 1$.  
  
  
  
'''(2)'''&nbsp; Entsprechend der Vorgehensweise auf der Seite [[Channel_Coding/Distanzeigenschaften_und_Fehlerwahrscheinlichkeitsschranken#Regeln_zur_Manipulation_des_Zustands.C3.BCbergangsdiagramms|Regeln zur Manipulation des Zustandsübergangsdiagramms]] im Theorieteil wird zunächst der Übergang von $S_1$ nach $S_2$ via $S_3$ durch einen <i>Ring</i> zusammengefasst.
+
'''(2)'''&nbsp; According to the method in section&nbsp; [[Channel_Coding/Distance_Characteristics_and_Error_Probability_Barriers#Rules_for_manipulating_the_state_transition_diagram|"Rules for manipulating the state transition diagram"]]&nbsp; in the theory part,&nbsp; first the transition from&nbsp; $S_1$&nbsp; to&nbsp; $S_2$&nbsp; via&nbsp; $S_3$&nbsp; is summarized by an&nbsp; "ring".
* Man erhält für die rote Hinterlegung im Diagramm &nbsp;$\rm (B)$:
+
 
 +
* One obtains for the red background in the diagram &nbsp;$\rm (B)$:
 
:$$T_1(X, U) =  \frac{A(X, U) \cdot B(X, U)}{1- C(X, U)} = \frac{X \cdot X}{1- U \cdot X}  
 
:$$T_1(X, U) =  \frac{A(X, U) \cdot B(X, U)}{1- C(X, U)} = \frac{X \cdot X}{1- U \cdot X}  
 
\hspace{0.05cm}.$$
 
\hspace{0.05cm}.$$
  
* Die beiden <i>parallelen Übergänge</i> entsprechend der blauen Hinterlegung im Diagramm &nbsp;$\rm (C)$&nbsp; können wie folgt kombiniert werden:
+
* The two&nbsp; "parallel transitions"&nbsp; corresponding to the blue background in the diagram &nbsp;$\rm (C)$&nbsp; can be combined as follows:
 
:$$T_2(X, U) \hspace{-0.15cm} \ = \ \hspace{-0.15cm}  T_1(X, U) + B(X, U) =\frac{X^2}{1- U  X}+ U  X =
 
:$$T_2(X, U) \hspace{-0.15cm} \ = \ \hspace{-0.15cm}  T_1(X, U) + B(X, U) =\frac{X^2}{1- U  X}+ U  X =
 
  \frac{X^2 + U- U^2X^2}{1- U  X}  
 
  \frac{X^2 + U- U^2X^2}{1- U  X}  
 
\hspace{0.05cm}.$$
 
\hspace{0.05cm}.$$
  
* Die erweiterte Pfadgewichtsfunktion ergibt sich entsprechend Diagramm &nbsp;$\rm (D)$&nbsp; als <i>Rückkopplung</i>:
+
* The extended path weighting enumerator function results according to diagram &nbsp;$\rm (D)$&nbsp; as&nbsp; "feedback<":
 
:$$T_{\rm enh}(X, U) =  \frac{A(X, U) \cdot G(X, U)\cdot T_2(X, U)}{1- F(X, U) \cdot T_2(X, U)}  
 
:$$T_{\rm enh}(X, U) =  \frac{A(X, U) \cdot G(X, U)\cdot T_2(X, U)}{1- F(X, U) \cdot T_2(X, U)}  
 
=  \frac{UX^2 \cdot UX^2\cdot \frac{X^2 + UX- U^2X^2}{1- U  X}}{1- 1 \cdot \frac{X^2 + UX- U^2X^2}{1- U  X}}\hspace{0.05cm}.$$
 
=  \frac{UX^2 \cdot UX^2\cdot \frac{X^2 + UX- U^2X^2}{1- U  X}}{1- 1 \cdot \frac{X^2 + UX- U^2X^2}{1- U  X}}\hspace{0.05cm}.$$
  
Dem Autor ist es auch nach mehreren Versuchen nicht gelungen, diesen Ausdruck zielführend weiter zu vereinfachen. Er tendiert zum <u>Lösungsvorschlag 3</u> mit dem Zusatz "ohne Gewähr".  
+
Even after several attempts,&nbsp; the author has not succeeded in further simplifying this expression in a target-oriented way.&nbsp; He tends to the&nbsp; <u>proposed solution 3</u>&nbsp; with the addition&nbsp; "without guarantee".
*Dieses Ergebnis würde jedoch bedeuten, dass sich die erweiterte Pfadgewichtsfunktion des äquivalenten systematischen Codes von der des nichtsystematischen Codes unterscheidet.  
+
*Wir werden diese Frage noch mit einem Fachmann klären.
+
*However,&nbsp; this result would imply that the extended path weighting enumerator function of the equivalent systematic code is different from that of the nonsystematic code.&nbsp; We will still clarify this issue with an expert.
  
  
'''(3)'''&nbsp; Richtig sind die <u>Lösungsvorschläge 1 und 2</u>:
+
 
*Setzt man in der erweiterten Funktion $T_{\rm enh}(X, \, U)$ den Formalparameter $U = 1$, so erhält man den Lösungsvorschlag 1:
+
'''(3)'''&nbsp; Correct are the&nbsp; <u>proposed solutions 1 and 2</u>:
 +
*If one sets the formal parameter&nbsp; $U = 1$&nbsp; in the extended function&nbsp; $T_{\rm enh}(X, \, U)$,&nbsp; one obtains the solution proposition 1:
 
:$$T(X) =  \frac{X^4 \cdot  \frac{X^2 + X- X^2}{1- X}}{1- \frac{X^2 + X- X^2}{1- X}}=
 
:$$T(X) =  \frac{X^4 \cdot  \frac{X^2 + X- X^2}{1- X}}{1- \frac{X^2 + X- X^2}{1- X}}=
 
\frac{X^5 }{1- X - X} =
 
\frac{X^5 }{1- X - X} =
 
\frac{X^5 }{1- 2X} \hspace{0.05cm}.$$
 
\frac{X^5 }{1- 2X} \hspace{0.05cm}.$$
  
*Mit der Reihenentwicklung $1/(1 \, &ndash;x) = 1 + x + x^2 + \ \text{...}\ $ kommt man zum Lösungsvorschlag 2.  
+
*Using the series expansion&nbsp; $1/(1 \, &ndash;x) = 1 + x + x^2 + \ \text{...}\ $,&nbsp; we arrive at the proposed solution 2.  
*Das heißt: Die einfache Pfadgewichtsfunktion $T(X)$ stimmt bei beiden Codes überein.
+
 
 +
*That is,&nbsp; the simple path weighting enumerator function&nbsp; $T(X)$&nbsp; matches for both codes.
 
{{ML-Fuß}}
 
{{ML-Fuß}}
  

Latest revision as of 17:50, 22 November 2022

For the reduction of the state transition diagram

In the  "rules for manipulating the state transition diagram"  section,  for the example of our rate $1/2$ standard encoder

  • with memory  $m = 2$  and
  • the transfer function matrix
$${\boldsymbol{\rm G}}(D) = \big ( 1 + D + D^2\hspace{0.05cm},\hspace{0.1cm} 1 + D^2 \hspace{0.05cm}\big ),$$

the calculation of path weighting enumerator functions was described in great detail.  The results given were:

$$T_{\rm enh}(X, U) \hspace{-0.2cm} \ = \ \hspace{-0.2cm} \frac{U\hspace{-0.05cm} X^5}{1- 2U\hspace{-0.05cm}X} =U\hspace{-0.05cm}X^5 \cdot \big [ 1 + (2U\hspace{-0.08cm}X) + (2U\hspace{-0.08cm}X)^2 + \text{...} \hspace{0.05cm} \big ] \hspace{0.01cm},$$
$$T(X) \hspace{-0.2cm} \ = \ \hspace{-0.2cm} \frac{X^5}{1- 2X} = X^5 \cdot \big [ 1 + (2X) + (2X)^2 + \text{...} \hspace{0.05cm} \big ] \hspace{0.05cm}.$$

Now the same calculations shall be done for the  "equivalent systematic encoder"  with the transfer function matrix

$${\boldsymbol{\rm G}}(D) = \big ( 1 \hspace{0.05cm},\hspace{0.1cm} (1 + D^2)/(1 + D + D^2) \hspace{0.05cm}\big ).$$
  • The diagram shows the state transition diagram  $\rm (A)$  and the structure of the reduced diagram  $\rm (B)$,  where the transitions are denoted by  $A(X, \, U), \ \text{...}\ , \ G(X, \, U)$  in general.
  • In subtask  (1)  these abbreviations are to be adapted to the state transition diagram  $\rm (A)$  .



Hints:


Questions

1

What expressions do the following abbreviations stand for?

$A(X, \, U) = UX^2$,
$B(X, \, U) = UX$,
$C(X, \, U) = X$,
$D(X, \, U) = UX$,
$E(X, \, U) = X$,
$F(X, \, U) = 1$,
$G(X, \, U) = UX^2$.

2

What expressions apply to the extended path weighting enumerator function?

$T_{\rm enh}(X, \, U) = UX^5 \ / \ (1 \, –2UX)$.
$T_{\rm enh}(X, \, U) = UX^5 + 2 U^2X^6 + 4U^3X^7 + 8U^4X^8 + \ \text{...}$,
None of the proposals are correct.

3

What expressions apply to the  "simple path weighting enumerator function"?

$T(X) = X^5 \ / \ (1 \, –2X)$.
$T(X) = X^5 + 2X^6 + 4X^7 + 8X^8 + \ \text{...} $
None of the proposals are correct.


Solution

(1)  All proposed solutions  are correct.  In the adapted diagram  $\rm (B)$  all transitions are drawn:

Reduction of the state transition diagram
  • The transition from  $S_0$  to $S_1$  is denoted by  "$1 \ | \ 11$".
  • The output sequence  $\underline{x}_i = (11)$  is expressed by  $X^2$,  the input bit  $u_i = 1$  by  $U$.
  • The same result is obtained for  $G(X, \, U)$:
$$A(X, U) = G(X, U)= UX^2 \hspace{0.05cm}.$$
  • The output sequences  $\underline{x}_i = (01)$  as well as  $\underline{x}_i = (10)$  are both marked with  $X$.
  • Taking into account the input bits,  we thus obtain:
$$u_i = 1\hspace{-0.1cm}:\hspace{0.15cm} B(X, U) = D(X, U)= UX\hspace{0.05cm},$$
$$u_i = 0\hspace{-0.1cm}:\hspace{0.15cm} C(X, U) = E(X, U)= X \hspace{0.05cm}.$$
  • The transition  "$0 \ | \ 00$"  from  $S_2$  to  $S_1$  is expressed by  $F(X, \, U) = 1$.


(2)  According to the method in section  "Rules for manipulating the state transition diagram"  in the theory part,  first the transition from  $S_1$  to  $S_2$  via  $S_3$  is summarized by an  "ring".

  • One obtains for the red background in the diagram  $\rm (B)$:
$$T_1(X, U) = \frac{A(X, U) \cdot B(X, U)}{1- C(X, U)} = \frac{X \cdot X}{1- U \cdot X} \hspace{0.05cm}.$$
  • The two  "parallel transitions"  corresponding to the blue background in the diagram  $\rm (C)$  can be combined as follows:
$$T_2(X, U) \hspace{-0.15cm} \ = \ \hspace{-0.15cm} T_1(X, U) + B(X, U) =\frac{X^2}{1- U X}+ U X = \frac{X^2 + U- U^2X^2}{1- U X} \hspace{0.05cm}.$$
  • The extended path weighting enumerator function results according to diagram  $\rm (D)$  as  "feedback<":
$$T_{\rm enh}(X, U) = \frac{A(X, U) \cdot G(X, U)\cdot T_2(X, U)}{1- F(X, U) \cdot T_2(X, U)} = \frac{UX^2 \cdot UX^2\cdot \frac{X^2 + UX- U^2X^2}{1- U X}}{1- 1 \cdot \frac{X^2 + UX- U^2X^2}{1- U X}}\hspace{0.05cm}.$$

Even after several attempts,  the author has not succeeded in further simplifying this expression in a target-oriented way.  He tends to the  proposed solution 3  with the addition  "without guarantee".

  • However,  this result would imply that the extended path weighting enumerator function of the equivalent systematic code is different from that of the nonsystematic code.  We will still clarify this issue with an expert.


(3)  Correct are the  proposed solutions 1 and 2:

  • If one sets the formal parameter  $U = 1$  in the extended function  $T_{\rm enh}(X, \, U)$,  one obtains the solution proposition 1:
$$T(X) = \frac{X^4 \cdot \frac{X^2 + X- X^2}{1- X}}{1- \frac{X^2 + X- X^2}{1- X}}= \frac{X^5 }{1- X - X} = \frac{X^5 }{1- 2X} \hspace{0.05cm}.$$
  • Using the series expansion  $1/(1 \, –x) = 1 + x + x^2 + \ \text{...}\ $,  we arrive at the proposed solution 2.
  • That is,  the simple path weighting enumerator function  $T(X)$  matches for both codes.