diff --git a/app/src/main/java/com/example/medilightv2android/managers/PiezoEchoAnalyzer.kt b/app/src/main/java/com/example/medilightv2android/managers/PiezoEchoAnalyzer.kt index 70b4d0f..c006927 100644 --- a/app/src/main/java/com/example/medilightv2android/managers/PiezoEchoAnalyzer.kt +++ b/app/src/main/java/com/example/medilightv2android/managers/PiezoEchoAnalyzer.kt @@ -213,9 +213,10 @@ class PiezoEchoAnalyzer private constructor() { // ── Denoising Pipeline ── - /** SG 디노이징 (6ch 알고리즘: TVD 제거, SG만 사용) */ + var useSgFilter: Boolean = true + fun denoise(signal: DoubleArray): DoubleArray { - return sgSmooth(signal) + return if (useSgFilter) sgSmooth(signal) else signal.copyOf() } /** 1D Total Variation Denoising — Chambolle (2004) dual projected gradient */ diff --git a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt index 75ee193..2fc41f2 100644 --- a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt +++ b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PiezoMonitoringView.kt @@ -681,6 +681,26 @@ fun PiezoMonitoringView(appState: AppState) { HorizontalDivider() + // SG Filter toggle + var sgEnabled by remember { mutableStateOf(analyzer.useSgFilter) } + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically + ) { + Text("SG Filter", fontSize = 14.sp, fontWeight = FontWeight.SemiBold) + Spacer(modifier = Modifier.weight(1f)) + Switch( + checked = sgEnabled, + onCheckedChange = { + sgEnabled = it + analyzer.useSgFilter = it + }, + colors = SwitchDefaults.colors(checkedTrackColor = MlPrimary) + ) + } + + HorizontalDivider() + Row { Text("Max Volume", fontSize = 14.sp, fontWeight = FontWeight.SemiBold) Spacer(modifier = Modifier.weight(1f))