artlav / meteor_decoder

A portable decoder for METEOR M weather satellite LRPT signal
GNU General Public License v3.0
148 stars 15 forks source link

Signal quality seems to be incorrect #11

Open dvdesolve opened 4 years ago

dvdesolve commented 4 years ago

I've observed that signal quality doesn't belong to range [0..100] as it should be. For example when signal is very weak I see -215 and even smaller values. However for good signals all looks fine (near 100).

Signal quality is calculated in met_to_data.pas with the following statement:

m.sig_q:=round(100-(vit_get_percent_BER(m.v)*10));

Internally vit_get_percent_BER() do the following:

result:=(100*v.BER)/frame_bits;

while Viterbi decoder calculates BER with:

v.BER:=0;
for i:=0 to frame_bits*2-1 do v.BER:=v.BER+hard_correlate(input[i],$FF xor corrected[i]);

So something is definitely wrong because our final signal quality is not in the range [0..100] - seems like vit_get_percent_BER() gives us wrong output.

I've tried to eliminate factor 10 and got value approx 67 for very weak signal. Also I've tried to divide by frame_bits*2 and not frame_bits and still got negative values for weak signals.

dvdesolve commented 4 years ago

Actually it looks like a factor of 10.0 is erroneous. For Gaussian random noise source we should get about 50% of BER and in this case of 67% signal quality we're getting just 33% of BER.