diff --git a/sw/main.py b/sw/main.py index da38090..31b5cb7 100644 --- a/sw/main.py +++ b/sw/main.py @@ -35,32 +35,25 @@ def plot_results(): def main(): Path("sim_results").mkdir(parents=True, exist_ok=True) - used_code = "Hamming_7_4" - # used_code = "Golay_24_12" - # used_code = "BCH_31_16" - # used_code = "BCH_31_21" - # used_code = "BCH_63_16" - - G = codes.Gs[used_code] - H = codes.get_systematic_H(G) + # H = codes.read_alist_file("res/204.3.486.alist") + H = codes.read_alist_file("res/204.55.187.alist") + k = 102 + n = 204 decoders = [ - maximum_likelihood.MLDecoder(G, H), proximal.ProximalDecoder(H, gamma=0.01), proximal.ProximalDecoder(H, gamma=0.05), proximal.ProximalDecoder(H, gamma=0.15) ] - k, n = G.shape - SNRs, BERs = simulations.test_decoders(n, k, decoders, target_frame_errors=100) + SNRs, BERs = simulations.test_decoders(n, k, decoders, target_frame_errors=100, SNRs=np.arange(1, 6, 0.5)) df = pd.DataFrame({"SNR": SNRs}) - df["BER_ML"] = BERs[0] - df["BER_prox_0_01"] = BERs[1] - df["BER_prox_0_05"] = BERs[2] - df["BER_prox_0_15"] = BERs[3] + df["BER_prox_0_01"] = BERs[0] + df["BER_prox_0_05"] = BERs[1] + df["BER_prox_0_15"] = BERs[2] - df.to_csv(f"sim_results/{used_code}.csv") + df.to_csv(f"sim_results/ldpc.csv") plot_results() diff --git a/sw/res/204.3.486.alist b/sw/res/204.3.486.alist new file mode 100644 index 0000000..8d6c749 --- /dev/null +++ b/sw/res/204.3.486.alist @@ -0,0 +1,310 @@ +204 102 +3 6 +3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 +76 98 67 +67 36 11 +17 44 4 +44 66 94 +79 24 34 +95 69 6 +82 87 12 +87 60 41 +3 8 45 +14 2 95 +31 79 96 +99 62 46 +98 6 48 +45 29 30 +84 33 39 +23 35 13 +4 23 84 +92 91 74 +64 77 20 +75 99 60 +57 100 77 +58 59 36 +56 12 40 +51 80 32 +50 54 21 +19 37 56 +54 86 24 +36 48 43 +5 70 47 +93 38 98 +11 78 54 +25 71 102 +16 88 1 +8 61 19 +42 40 14 +94 13 51 +32 49 31 +9 56 59 +74 20 26 +62 43 92 +63 75 66 +38 34 83 +72 65 93 +71 55 23 +18 22 78 +97 96 53 +52 31 29 +2 27 99 +85 42 86 +90 28 79 +59 85 27 +21 15 73 +27 45 5 +91 5 87 +29 53 3 +66 17 81 +101 74 2 +88 46 55 +49 97 42 +15 51 18 +100 63 16 +68 41 10 +47 82 35 +26 68 101 +22 57 9 +13 19 58 +83 89 15 +55 73 61 +35 10 38 +43 39 37 +69 7 89 +61 16 70 +53 64 17 +10 25 82 +89 26 22 +39 101 91 +65 1 75 +30 14 72 +41 92 100 +37 47 7 +70 81 62 +86 76 88 +28 50 63 +20 95 90 +102 72 76 +12 11 25 +80 3 57 +6 67 8 +73 9 44 +96 4 28 +34 21 80 +78 58 97 +60 90 71 +24 18 85 +40 94 33 +46 102 65 +48 93 68 +81 83 50 +7 30 49 +33 52 69 +77 84 52 +1 32 64 +99 95 33 +66 76 62 +41 102 80 +9 99 13 +25 45 35 +2 91 90 +16 89 53 +88 39 6 +42 11 38 +11 49 84 +35 51 39 +102 60 27 +57 14 26 +27 80 42 +101 42 50 +70 34 44 +30 92 5 +39 79 65 +92 29 101 +64 28 82 +53 67 21 +93 8 17 +76 43 23 +40 10 76 +67 84 41 +3 98 7 +36 52 63 +58 18 71 +33 88 11 +55 75 78 +23 56 29 +72 23 92 +4 57 94 +5 2 85 +15 70 49 +28 40 83 +61 71 99 +54 9 91 +63 19 4 +80 35 72 +10 12 48 +50 82 32 +71 83 100 +79 86 47 +26 48 52 +73 3 28 +65 101 97 +29 26 86 +38 66 12 +74 97 56 +75 7 36 +77 27 69 +14 63 74 +95 16 55 +47 4 73 +62 24 19 +86 73 59 +51 61 30 +84 47 88 +90 65 61 +48 72 2 +60 77 31 +87 94 77 +44 59 3 +13 36 1 +78 13 60 +56 54 45 +100 58 89 +17 74 15 +97 81 34 +6 87 64 +96 6 40 +19 17 16 +43 44 18 +89 62 67 +91 93 24 +1 100 68 +85 33 98 +31 37 20 +81 96 43 +94 41 95 +46 15 57 +45 32 14 +8 64 9 +59 21 10 +32 53 79 +49 25 75 +22 1 58 +52 22 25 +18 50 87 +34 68 66 +82 20 93 +12 5 54 +37 78 70 +21 30 37 +68 85 8 +69 31 102 +7 38 81 +24 69 51 +20 46 96 +98 55 22 +83 90 46 +102 179 77 190 33 167 +48 108 10 136 57 163 +9 128 87 148 55 166 +17 135 90 157 3 141 +29 136 54 195 53 119 +88 173 13 174 6 110 +99 200 71 153 80 128 +34 186 9 124 88 198 +38 106 89 140 65 186 +74 143 69 126 62 187 +31 112 86 111 2 131 +86 195 23 143 7 151 +66 167 36 168 16 106 +10 155 78 115 35 185 +60 137 52 184 67 171 +33 109 72 156 61 175 +3 171 56 175 73 124 +45 192 94 130 60 176 +26 175 66 141 34 158 +84 202 39 194 19 181 +52 197 91 187 25 123 +65 190 45 191 75 203 +16 133 17 134 44 125 +94 201 5 158 27 178 +32 107 74 189 86 191 +64 147 75 150 39 115 +53 116 48 154 51 114 +83 138 50 122 90 148 +55 150 14 121 47 133 +78 119 99 197 14 160 +11 181 47 199 37 164 +37 188 102 185 24 144 +100 131 15 180 95 103 +91 193 42 118 5 172 +69 113 16 142 63 107 +28 129 2 167 22 153 +80 196 26 181 70 197 +42 151 30 200 69 111 +76 120 70 110 15 113 +95 126 35 138 23 174 +79 105 62 183 8 127 +35 111 49 117 59 116 +70 176 40 125 28 182 +4 166 3 176 89 118 +14 185 53 107 9 169 +96 184 58 202 12 204 +63 157 80 161 29 146 +97 163 28 147 13 143 +59 189 37 112 99 137 +25 144 83 192 98 117 +24 160 60 113 36 201 +47 191 100 129 101 147 +73 123 55 188 46 109 +27 140 25 169 31 195 +68 132 44 203 58 156 +23 169 38 133 26 152 +21 115 65 135 87 184 +22 130 92 170 66 190 +51 187 22 166 38 159 +93 164 8 114 20 168 +72 139 34 160 68 162 +40 158 12 177 81 104 +41 141 61 155 83 129 +19 122 73 186 102 173 +77 149 43 162 96 120 +56 104 4 151 41 193 +2 127 88 123 1 177 +62 198 64 193 97 179 +71 199 6 201 100 154 +81 118 29 137 72 196 +44 145 32 139 93 130 +43 134 85 163 78 142 +89 148 68 159 52 157 +39 152 57 171 18 155 +20 153 41 132 77 189 +1 125 82 104 85 126 +101 154 19 164 21 165 +92 168 31 196 45 132 +5 146 11 120 50 188 +87 142 24 116 91 105 +98 182 81 172 56 200 +7 194 63 144 74 122 +67 204 98 145 42 138 +15 161 101 127 17 112 +49 180 51 198 94 136 +82 159 27 146 49 150 +8 165 7 173 54 192 +58 110 33 131 82 161 +75 177 67 109 71 170 +50 162 93 204 84 108 +54 178 18 108 76 140 +18 121 79 119 40 134 +30 124 97 178 43 194 +36 183 95 165 4 135 +6 156 84 103 10 183 +90 174 46 182 11 202 +46 172 59 152 92 149 +13 203 1 128 30 180 +12 103 20 106 48 139 +61 170 21 179 79 145 +57 117 76 149 64 121 +85 114 96 105 32 199 diff --git a/sw/res/204.55.187.alist b/sw/res/204.55.187.alist new file mode 100644 index 0000000..b36a0d0 --- /dev/null +++ b/sw/res/204.55.187.alist @@ -0,0 +1,310 @@ +204 102 +5 10 +5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 +10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 +1 12 41 20 52 +2 41 28 40 34 +3 55 98 89 102 +4 16 64 6 13 +5 93 58 37 25 +6 91 62 67 68 +7 43 30 34 62 +8 87 53 48 50 +9 85 81 43 74 +10 82 26 77 44 +11 42 72 82 33 +12 98 83 54 65 +13 65 48 41 77 +14 10 71 47 92 +15 17 74 2 49 +16 100 63 81 24 +17 6 36 55 5 +18 80 59 98 1 +19 101 11 80 70 +20 47 32 56 90 +21 89 49 60 93 +22 19 27 87 86 +23 7 19 91 10 +24 59 25 70 66 +25 49 96 72 12 +26 64 76 11 48 +27 63 35 1 26 +28 54 75 57 11 +29 31 93 35 91 +30 95 66 32 98 +31 56 3 22 14 +32 88 21 3 23 +33 79 88 13 8 +34 13 46 96 37 +35 36 80 62 40 +36 81 101 83 97 +37 8 55 19 4 +38 37 97 102 60 +39 94 52 88 72 +40 14 90 26 9 +41 9 39 75 101 +42 3 5 24 27 +43 40 42 51 79 +44 22 17 90 63 +45 84 43 52 76 +46 97 47 85 80 +47 33 18 84 95 +48 29 73 36 84 +49 92 50 78 73 +50 27 13 95 20 +51 20 102 49 88 +52 71 65 66 89 +53 99 10 30 85 +54 52 85 50 69 +55 78 60 25 81 +56 96 70 38 43 +57 69 67 65 19 +58 74 68 14 30 +59 60 69 16 41 +60 35 54 53 39 +61 90 87 23 46 +62 48 99 21 18 +63 28 95 45 71 +64 73 86 31 53 +65 76 23 93 78 +66 72 51 46 57 +67 25 79 28 16 +68 51 100 15 96 +69 61 37 29 83 +70 75 15 71 58 +71 68 34 4 17 +72 5 92 101 21 +73 24 8 17 7 +74 32 61 27 99 +75 4 84 44 2 +76 34 33 39 38 +77 46 24 69 31 +78 39 6 58 32 +79 45 29 64 82 +80 2 7 94 56 +81 57 45 33 87 +82 1 94 100 54 +83 86 44 7 47 +84 77 91 74 64 +85 26 4 18 67 +86 102 2 12 35 +87 83 77 5 15 +88 11 9 63 59 +89 50 57 97 22 +90 53 78 68 29 +91 58 56 86 51 +92 38 16 9 42 +93 18 40 10 61 +94 30 31 76 28 +95 44 14 42 100 +96 62 82 59 75 +97 67 12 99 45 +98 21 22 73 94 +99 23 20 79 55 +100 70 89 8 36 +101 15 38 61 3 +102 66 1 92 6 +1 89 69 9 62 +2 95 87 69 99 +3 46 50 93 70 +4 20 38 65 100 +5 94 10 86 74 +6 27 84 82 12 +7 15 33 41 89 +8 44 93 11 52 +9 82 73 61 4 +10 101 54 66 55 +11 62 94 97 15 +12 4 40 70 69 +13 85 42 89 32 +14 86 11 96 29 +15 31 37 42 66 +16 90 58 95 7 +17 99 41 64 93 +18 72 74 71 87 +19 2 85 14 63 +20 78 66 18 43 +21 84 35 38 79 +22 12 100 47 101 +23 18 89 16 39 +24 21 82 50 19 +25 45 30 4 77 +26 47 70 102 61 +27 70 62 88 85 +28 1 19 78 72 +29 19 16 51 94 +30 41 23 72 47 +31 23 25 75 51 +32 64 68 63 57 +33 66 44 74 40 +34 69 64 98 97 +35 57 13 90 10 +36 16 34 53 65 +37 36 78 45 54 +38 30 52 13 67 +39 79 22 5 2 +40 65 39 24 84 +41 68 88 19 81 +42 91 2 76 46 +43 37 24 68 49 +44 13 18 36 24 +45 24 92 26 23 +46 55 45 40 83 +47 48 49 58 35 +48 97 28 52 59 +49 32 77 54 16 +50 59 56 23 68 +51 80 90 84 3 +52 58 21 33 27 +53 33 75 91 26 +54 56 8 99 42 +55 53 97 44 41 +56 40 76 100 5 +57 3 47 29 34 +58 81 26 22 13 +59 38 12 17 95 +60 6 101 30 56 +61 52 95 77 36 +62 74 4 101 50 +63 50 6 15 25 +64 35 14 94 75 +65 10 80 31 6 +66 7 36 21 64 +67 22 71 20 37 +68 11 98 27 38 +69 28 86 92 88 +70 76 57 55 82 +71 102 91 8 9 +72 83 48 6 14 +73 39 63 10 102 +74 29 65 60 22 +75 49 7 85 1 +76 25 3 7 71 +77 73 20 59 33 +78 88 15 56 44 +79 96 9 32 18 +80 34 67 87 78 +81 54 59 34 31 +82 93 102 67 90 +83 92 99 25 91 +84 67 96 81 92 +85 98 51 28 60 +86 63 79 49 80 +87 51 55 35 30 +88 60 31 1 17 +89 77 81 2 11 +90 8 43 12 28 +91 61 5 80 48 +92 17 32 43 53 +93 100 27 48 45 +94 71 61 57 96 +95 5 60 46 8 +96 87 17 39 98 +97 9 72 3 86 +98 26 29 62 20 +99 43 46 73 58 +100 75 83 79 73 +101 14 1 37 76 +102 42 53 83 21 +1 103 82 130 102 203 27 190 18 177 +2 104 80 121 86 144 15 191 75 141 +3 105 42 159 31 178 32 199 101 153 +4 106 75 114 85 164 71 127 37 111 +5 107 72 197 42 193 87 141 17 158 +6 108 17 162 78 165 4 174 102 167 +7 109 23 168 80 177 83 178 73 118 +8 110 37 192 73 156 100 173 33 197 +9 111 41 199 88 181 92 103 40 173 +10 112 14 167 53 107 93 175 23 137 +11 113 88 170 19 116 26 110 28 191 +12 114 1 124 97 161 86 192 25 108 +13 115 34 146 50 137 33 140 4 160 +14 116 40 203 95 166 58 121 31 174 +15 117 101 109 70 180 68 165 87 113 +16 118 4 138 92 131 59 125 67 151 +17 119 15 194 44 198 73 161 71 190 +18 120 93 125 47 146 85 122 62 181 +19 121 22 131 23 130 37 143 57 126 +20 122 51 106 99 179 1 169 50 200 +21 123 98 126 32 154 62 168 72 204 +22 124 44 169 98 141 31 160 89 176 +23 125 99 133 65 132 61 152 32 147 +24 126 73 147 77 145 42 142 16 146 +25 127 67 178 24 133 55 185 5 165 +26 128 85 200 10 160 40 147 27 155 +27 129 50 108 22 195 74 170 42 154 +28 130 63 171 2 150 67 187 94 192 +29 131 48 176 79 200 69 159 90 116 +30 132 94 140 7 127 53 162 58 189 +31 133 29 117 94 190 64 167 77 183 +32 134 74 151 20 194 30 181 78 115 +33 135 47 155 76 109 81 154 11 179 +34 136 76 182 71 138 7 183 2 159 +35 137 60 166 27 123 29 189 86 149 +36 138 35 139 17 168 48 146 100 163 +37 139 38 145 69 117 5 203 34 169 +38 140 92 161 101 106 56 123 76 170 +39 141 78 175 41 142 76 198 60 125 +40 142 43 158 93 114 2 148 35 135 +41 143 2 132 1 119 13 109 59 157 +42 144 11 204 43 115 95 117 92 156 +43 145 7 201 45 192 9 194 56 122 +44 146 95 110 83 135 75 157 10 180 +45 147 79 127 81 148 63 139 97 195 +46 148 77 105 34 201 66 197 61 144 +47 149 20 128 46 159 14 124 83 132 +48 150 62 149 13 174 8 195 26 193 +49 151 25 177 21 149 51 188 15 145 +50 152 89 165 49 105 54 126 8 164 +51 153 68 189 66 187 43 131 91 133 +52 154 54 163 39 140 45 150 1 110 +53 155 90 157 8 204 60 138 64 194 +54 156 28 183 60 112 12 151 82 139 +55 157 3 148 37 189 17 172 99 112 +56 158 31 156 91 152 20 180 80 162 +57 159 81 137 89 172 28 196 66 134 +58 160 91 154 5 118 78 149 70 201 +59 161 24 152 18 183 96 179 88 150 +60 162 59 190 55 197 21 176 38 187 +61 163 69 193 74 196 101 111 93 128 +62 164 96 113 6 129 35 200 7 103 +63 165 27 188 16 175 88 134 44 121 +64 166 26 134 4 136 79 119 84 168 +65 167 13 142 52 176 57 106 12 138 +66 168 102 135 30 122 52 112 24 117 +67 169 97 186 57 182 6 184 85 140 +68 170 71 143 58 134 90 145 6 152 +69 171 57 136 59 103 77 104 54 114 +70 172 100 129 56 128 24 114 19 105 +71 173 52 196 14 169 70 120 63 178 +72 174 66 120 11 199 25 132 39 130 +73 175 64 179 48 111 98 201 49 202 +74 176 58 164 15 120 84 135 9 107 +75 177 70 202 28 155 41 133 96 166 +76 178 65 172 26 158 94 144 45 203 +77 179 84 191 87 151 10 163 13 127 +78 180 55 122 90 139 49 130 65 182 +79 181 33 141 67 188 99 202 43 123 +80 182 18 153 35 167 19 193 46 188 +81 183 36 160 9 191 16 186 55 143 +82 184 10 111 96 126 11 108 79 172 +83 185 87 174 12 202 36 204 69 148 +84 186 45 123 75 108 47 153 48 142 +85 187 9 115 54 121 46 177 53 129 +86 188 83 116 64 171 91 107 22 199 +87 189 8 198 61 104 22 182 81 120 +88 190 32 180 33 143 39 129 51 171 +89 191 21 103 100 125 3 115 52 109 +90 192 61 118 40 153 44 137 20 184 +91 193 6 144 84 173 23 155 29 185 +92 194 49 185 72 147 102 171 14 186 +93 195 5 184 29 110 65 105 21 119 +94 196 39 107 82 113 80 166 98 131 +95 197 30 104 63 163 50 118 47 161 +96 198 56 181 25 186 34 116 68 196 +97 199 46 150 38 157 89 113 36 136 +98 200 12 187 3 170 18 136 30 198 +99 201 53 119 62 185 97 156 74 104 +100 202 16 195 68 124 82 158 95 106 +101 203 19 112 36 162 72 164 41 124 +102 204 86 173 51 184 38 128 3 175 diff --git a/sw/sim_results/ldpc.csv b/sw/sim_results/ldpc.csv new file mode 100644 index 0000000..4abdade --- /dev/null +++ b/sw/sim_results/ldpc.csv @@ -0,0 +1,11 @@ +,SNR,BER_prox_0_01,BER_prox_0_05,BER_prox_0_15 +0,1.0,0.12745098039215685,0.1317156862745098,0.435343137254902 +1,1.5,0.1032843137254902,0.1073577946029897,0.4167647058823529 +2,2.0,0.0886764705882353,0.09187536400698894,0.4475 +3,2.5,0.06348039215686274,0.06462063086104007,0.4189705882352941 +4,3.0,0.055074971164936565,0.03978257969854609,0.44857843137254905 +5,3.5,0.035550256138491436,0.018195755668522554,0.41799019607843135 +6,4.0,0.023133814929480565,0.006259426847662142,0.4513235294117647 +7,4.5,0.011700300558179477,0.00220798701994459,0.4648378582202112 +8,5.0,0.005628177196804648,0.0005365073064232019,0.5115686274509804 +9,5.5,0.0020973563554775145,8.043597037287447e-05,0.5982224665567162