-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RADE V1 SNR estimator #40
Conversation
@tmiw - a first pass is ready for integration, the SNR estimates are available via |
Thanks, will work on this. BTW I merged down from main since this branch apparently didn't have the EOO stuff before (and was causing freedv-gui to not build as a result). Hopefully that didn't interfere with anything you're doing. |
First pass done; see drowe67/freedv-gui#797. I'm having it report -10 dB if there's no sync, but I'm not sure this is correct. Suggestions would be good here. |
As per the
|
I'm now running drowe67/freedv-gui@93c1a01 As for the SNR display, how difficult would it be to show '--' in RADE mode without sync? |
Yep, this is for the GUI display when not in sync. Unless I pass something else up to the GUI, it's basically stuck at the last SNR reported. As one can imagine, it's probably not good to be reporting an SNR of like 5 when there's no signal. Currently SNR retrieval is implemented as follows: float FreeDVInterface::getSNREstimate()
{
if (txMode_ >= FREEDV_MODE_RADE)
{
// Special handling for RADE
return (getSync() ? rade_snrdB_3k_est(rade_) : -10);
}
else
{
return getCurrentRxModemStats()->snr_est;
}
}
I think that won't be a huge deal for now, but might be when it's time to get multi-RX working with RADE. EDIT: updated the other PR to do this. |
@tmiw @Tyrbiter - so what is the desired behavior here? I'd suggest SNR is "undefined" when not in sync, so should not be displayed (as Brian suggests). You can't measure the SNR of a signal that is not there.
Please do not start any multi-rx work (or even consider it on the roadmap) without a PLT level discussion. My understanding of our end goal is one mode which means multi-rx can be rm-ed, relieving us of an unnecessary maintenance rabbit hole. If someone wants to use legacy FreeDV modes in 5 years time they can fire up freedv-gui 1.9 |
Agreed. Just updated the other PR accordingly.
The way that RADE was originally implemented means it will be pretty involved to make multi-RX work, so I'm fine putting it off for now. FWIW I think it's a good idea to enable multi-RX at some point as part of any transition plan to only having a single mode. |
@Tyrbiter - if you are interested in the detail, checkout |
Interesting, I see that in figure 15 the error in the straight lines down in the -5 to +5 dB SNR is actually quite small, and where it worsens in the MPP case at higher SNR we probably can live with the increased error as it's better to be accurate at the low SNR end. |
@tmiw is it OK to merge this? |
Yep. 👍 |
WIP SNR estimator based on pilots. Not sure if it will work for multipath....
Single 1 second time window AWGN test:
Single 1 second time window AWGN test, test S1 expression:
Single 1 second time window MPP test:
Complete algorithm using least squares estimator for pilot phase:
Scatter plot using 60 consecutive 1 second time windows, on MPP channel