package classifier // Classify builds features and applies the rule-based classifier. func Classify(input SignalInput, spectrum []float64, sampleRate int, fftSize int, iq []complex64) *Classification { if len(spectrum) == 0 || input.FirstBin < 0 || input.LastBin < 0 { return nil } feat := ExtractFeatures(input, spectrum, sampleRate, fftSize) if len(iq) > 0 { envVar, zc, instStd, crest := ExtractTemporalFeatures(iq) feat.EnvVariance = envVar feat.ZeroCross = zc feat.InstFreqStd = instStd feat.CrestFactor = crest } cls := RuleClassify(feat, input.CenterHz, input.SNRDb) return &cls }