Perhaps it is just PER that I should minimize on? I can't conceive of a
case where your BER would go up but your PER would stay the same ...

On Wed, Aug 4, 2021 at 8:16 AM Tim Meehan <btmee...@gmail.com> wrote:

> Hi Al - nice to hear from you.
>
> I'm trying to learn ARM cross compiling, but it would be nice to also have
> some folks to check on live hardware. The only SDR I have is receive-only
> (NooElec NESDR Nano2+, and your web link is NEAT!).
>
> In the script snippet that I attached, there was a bit at the end that I
> thought might have been the "figure of merit" ... if so ... I can try and
> tune the knot placement based on these numbers.
>
> Uncoded PSK Eb/No simulation:
> No    =  1.00 dB (1.26 linear)
> Eb    =  0.00 dB (1.00 linear)
> Eb/No = -1.00 dB (0.79 linear)
> Using: HRA_112_112
> Using: HRA_112_112
> Nframes: 100
> CodeLength: 224 offset: 0
> written: 22400
> .....xxx.x.x.x...xmeasured double sided (real) noise power: 0.629226
> xx.x............................................x....x....x....x..x.........x....xtotal
> iters 5469
> Raw   Tbits:  22400 Terr:   2268 BER: 0.101
> Coded Tbits:  11200 Terr:     68 *BER: 0.006*
>       Tpkts:    100 Tper:     17 *PER: 0.170*
>
> I gather that having both of these numbers small is good? Minimizing on
> two numbers is a bit challenging, I might just try to minimize based on
> sqrt(BER^2 + PER^2) ... any thoughts would be appreciated.
>
> On Wed, Aug 4, 2021 at 3:32 AM Al Beard <bear...@unixservice.com.au>
> wrote:
>
>> *Hello Tim,*
>>
>> *It's great to have you onboard. I'm more of an "implimenter", by no
>> means good at C or C++.*
>> *So I can't help to that depth.*
>>
>> *I can compile code on ARM and Intel Linux platforms here and with
>> transceivers, give it a go.*
>>
>> *So, if I can be useful.*
>>
>> *My SDR here in western Sydney, Australia can do Codec2 decode though
>> currently in one mode.*
>> *(easily changeable in a script file)  Web browse 110.143.195.8:8073
>> <http://110.143.195.8:8073>*
>>
>> *You may notice the M17 project has chosen the Codec2 modes 1600 and 3200
>> to "replace" AMBE*
>> *in an open source transceiver project. *
>>
>> *Welcome*
>>
>>
>> *Alan VK2ZIW *
>>
>> *On Tue, 3 Aug 2021 17:14:15 -0500, Tim Meehan wrote*
>> > Hi - I'm not extremely versed in digital modes, but I am well versed in
>> optimization. I think that HAM radio should be something open source, which
>> is why Codec2 appeals to me.
>> >
>> > Before I post a large blob of C code, I wanted to mention that I have a
>> program that I have written a genetic optimizer to move spline knots around
>> - and I'd be happy to run the optimizer based on BER/PER ... however ... I
>> need someone to explain to me how I might generate quantities to optimize
>> on. I don't need bunches of help, just enough so that I can write it
>> myself.
>> >
>> > I found that the 16-sample clamped endpoint spline with log-spaced
>> samples worked the best, so I'll chop out the higher sample density parts
>> of the code. My hope was faster AND more accurate, but I think all I got
>> was faster and LESS accurate. Perhaps wiser eyes than mine can help me out.
>> >
>> > The test script that I was using was:
>> > #!/bin/sh
>> > ./ldpc_enc /dev/zero - --sd --code HRA_112_112 --testframes 100 \    |
>> ./ldpc_noise - - 1 \
>> >     | ./ldpc_dec - /dev/null --code HRA_112_112 --sd --testframes
>> >
>> > The code is (simply replace phi0.c with this):// phi0.c
>> > #include <stdint.h>
>> > #include <stddef.h>
>> >
>> > float coeffs_clamped_16[16] = {
>> >     7.93223341e+07, 1.55433768e+07, 3.60871810e+06, 7.33752374e+05,
>> >     1.65434845e+05, 3.44055511e+04, 7.62050634e+03, 1.60695364e+03,
>> >     3.52218272e+02, 7.50245180e+01, 1.64584579e+01, 3.63755151e+00,
>> >     8.75888035e-01, 1.72673513e-01, 6.76273536e-03, -7.75296180e-03};
>> >
>> > float x_16[16] = {
>> >     1.00000000e-04, 2.15443469e-04, 4.64158883e-04, 1.00000000e-03,
>> >     2.15443469e-03, 4.64158883e-03, 1.00000000e-02, 2.15443469e-02,
>> >     4.64158883e-02, 1.00000000e-01, 2.15443469e-01, 4.64158883e-01,
>> >     1.00000000e+00, 2.15443469e+00, 4.64158883e+00, 1.00000000e+01};
>> >
>> > float y_16[16] = {
>> >     9.90348755e+00, 9.13595919e+00, 8.36843084e+00, 7.60090254e+00,
>> >     6.83337448e+00, 6.06584753e+00, 5.29832570e+00, 4.53082768e+00,
>> >     3.76344015e+00, 2.99656512e+00, 2.23206146e+00, 1.47840690e+00,
>> >     7.71936833e-01, 2.32985688e-01, 1.92853284e-02, 9.07998596e-05};
>> >
>> > static size_t
>> > bisect(float x, float *restrict x_data, size_t size)
>> > {
>> >     size_t left = 0;
>> >     size_t right = size - 1;
>> >     int max_iterations = 32; /* waay higher than we need */
>> >
>> >     while (right - left > 1 && max_iterations--) {
>> >         size_t middle = left + (right - left)/2;
>> >         float xm = x_data[middle];
>> >         if (x < xm)
>> >             right = middle;
>> >         else if (xm < x)
>> >             left = middle;
>> >     }
>> >
>> >     return left;
>> > }
>> >
>> > static float
>> > spline_interpolate(float x,
>> >                    float *restrict x_data,
>> >                    float *restrict y_data,
>> >                    float *restrict M,
>> >                    size_t size) {
>> >     size_t i = bisect(x, x_data, size);
>> >     float h = x_data[i + 1] - x_data[i];
>> >     float z = (x - x_data[i])/h;
>> >     float h2 = h * h;
>> >
>> >     float c1 = (M[i + 1] - M[i]) * h2 / 6.0;
>> >     float c2 = M[i] * h2 / 2.0;
>> >     float c3 = y_data[i + 1] - y_data[i] - (M[i + 1] + 2.0 * M[i]) * h2
>> / 6.0;
>> >
>> >     return ((c1 * z + c2) * z + c3) * z + y_data[i];
>> > }
>> >
>> > extern float
>> > phi0(float x) {
>> >     if (x <= x_16[0])
>> >         return 10.0f;
>> >     if (x >= x_16[15])
>> >         return 0.0f;
>> >
>> >     return spline_interpolate(x, x_16, y_16, coeffs_clamped_16, 16);
>> > }
>>
>>
>> ---------------------------------------------------
>> Alan VK2ZIW
>> Before the Big Bang, God, Sela.
>> OpenWebMail 2.53, nothing in the cloud.
>>
>> _______________________________________________
>> Freetel-codec2 mailing list
>> Freetel-codec2@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/freetel-codec2
>>
>
_______________________________________________
Freetel-codec2 mailing list
Freetel-codec2@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freetel-codec2

Reply via email to