瀏覽代碼

Add digital mode labels to classifier

master
Jan Svabenik 4 天之前
父節點
當前提交
3b2a0ee976
共有 2 個文件被更改,包括 26 次插入5 次删除
  1. +20
    -5
      internal/classifier/rules.go
  2. +6
    -0
      internal/classifier/types.go

+ 20
- 5
internal/classifier/rules.go 查看文件

@@ -22,12 +22,21 @@ func RuleClassify(feat Features) Classification {
if flat > 0.7 {
second = ClassNoise
}
// digital voice rough guesses
if feat.InstFreqStd < 0.5 && feat.EnvVariance < 0.3 {
second = ClassDMR
}
case bw >= 2000 && bw < 3000:
// candidate for FT8/WSPR (very rough): low env variance, narrow BW
// candidate for FT8
if feat.EnvVariance < 0.5 && feat.InstFreqStd < 0.7 {
best = ClassUnknown
second = ClassUnknown
conf = 0.5
best = ClassFT8
conf = 0.55
}
case bw >= 150 && bw < 500:
// candidate for WSPR
if feat.EnvVariance < 0.4 && feat.InstFreqStd < 0.5 {
best = ClassWSPR
conf = 0.55
}
case bw >= 500 && bw < 3e3:
if sym > 0.2 {
@@ -39,8 +48,14 @@ func RuleClassify(feat Features) Classification {
} else if p2a > 3 && flat < 0.4 {
best = ClassAM
conf = 0.6
} else if feat.InstFreqStd > 0.8 {
best = ClassFSK
conf = 0.5
} else if feat.InstFreqStd < 0.3 {
best = ClassPSK
conf = 0.5
}
case bw < 500:
case bw < 150:
best = ClassCW
conf = 0.7
}


+ 6
- 0
internal/classifier/types.go 查看文件

@@ -10,6 +10,12 @@ const (
ClassSSBUSB SignalClass = "USB"
ClassSSBLSB SignalClass = "LSB"
ClassCW SignalClass = "CW"
ClassFSK SignalClass = "FSK"
ClassPSK SignalClass = "PSK"
ClassDMR SignalClass = "DMR"
ClassDStar SignalClass = "D-STAR"
ClassFT8 SignalClass = "FT8"
ClassWSPR SignalClass = "WSPR"
ClassNoise SignalClass = "NOISE"
ClassUnknown SignalClass = "UNKNOWN"
)


Loading…
取消
儲存