Extract a named scalar from a typed analysis result.
426{
427 const std::string
q = resolve_qualifier(type, qualifier);
428
430 const auto& ea = safe_any_cast_or_throw<EnergyAnalysis>(analysis_result);
431 if (ea.channels.empty())
432 return 0.0;
433 const auto& ch = ea.channels[0];
434
435 if (
q ==
"rms" ||
q ==
"mean")
436 return ch.mean_energy;
437 if (
q ==
"peak" ||
q ==
"max")
438 return ch.max_energy;
440 return ch.min_energy;
442 return ch.variance;
443 if (
q ==
"dynamic_range")
444 return ch.max_energy - ch.min_energy;
445 if (
q ==
"zero_crossing")
446 return ch.event_positions.empty() ? 0.0 : static_cast<double>(ch.event_positions.size());
447
448 return ch.mean_energy;
449 }
450
452 const auto& sa = safe_any_cast_or_throw<StatisticalAnalysis>(analysis_result);
453 if (sa.channel_statistics.empty())
454 return 0.0;
455 const auto& ch = sa.channel_statistics[0];
456
458 return ch.mean_stat;
460 return ch.stat_std_dev;
462 return ch.stat_variance;
464 return ch.kurtosis;
466 return ch.skewness;
468 return ch.median;
470 return ch.max_stat;
472 return ch.min_stat;
473
474 return ch.mean_stat;
475 }
476
477 return 0.0;
478}
@ FEATURE
Feature extraction and characterization.
@ STATISTICAL
Mean, variance, distribution analysis.