feat: add physically explicit narrowband MUSIC
This commit is contained in:
@@ -8,7 +8,24 @@
|
||||
FFT 512 / hop 256, Auto backend를 쓰는 Experiment
|
||||
- `moving-tone.scene.json`: 2초 동안 다섯 trajectory keyframe을 따라 이동하는 2 kHz tone Scene
|
||||
- `moving-tone.experiment.json`: 라이브 준비 시간을 줄인 24×18 scan, FFT 256 / hop 128 Experiment
|
||||
- `music-single-tone.scene.json`: 48 kHz, 0.25 s, 1.125 kHz tone 하나를 z=2 m에 둔 MUSIC Scene
|
||||
- `music-single-tone.experiment.json`: 12채널 배열, 25×25 scan, FFT 512의 1.125 kHz 단일-bin
|
||||
analog 가설과 fixed K=1을 쓰는 CPU MUSIC Experiment
|
||||
|
||||
두 문서는 계약 버전 `1.0.0`이며 기본 Camera 실행, CPU golden test, CPU/WebGPU 비교와 benchmark가
|
||||
각 문서는 계약 버전 `1.0.0`이며 기본 Camera 실행, CPU golden test, CPU/WebGPU 비교와 benchmark가
|
||||
같은 조건을 공유하도록 고정되어 있습니다. fixture를 바꿀 때는 <http://127.0.0.1:4173/tests/>의
|
||||
전체 테스트와 benchmark 입력 의미를 함께 확인하세요.
|
||||
|
||||
## MUSIC 빠른 확인
|
||||
|
||||
Camera에서 **MUSIC 빠른 예제**를 누르면 위 MUSIC Scene·Experiment와
|
||||
`rectangular-4x3-450mm` 배열을 함께 엽니다. 1.125 kHz는 48 kHz/FFT 512에서 정확히 12번째
|
||||
FFT-grid center이고, band는 이 아날로그 가설 하나만 포함합니다. 이 일치 조건은 fixture에
|
||||
명시되어 있으며 localizer가 Scene carrier truth를 조회해 bin이나 위치를 고르는 것이 아닙니다.
|
||||
|
||||
Nyquist 초과 analog 가설도 배열 설계 비교를 위해 허용합니다. 이때 analog carrier 크기의 공간
|
||||
위상은 유지하고 alias inversion 방향이면 calibration·steering 전체 complex manifold를
|
||||
켤레화합니다. 정확한 DC/Nyquist edge는 거절합니다. q와 표시용 P/Pmax는 확률이나 신뢰구간이
|
||||
아니며 grating lobe·동률·coherent rank deficiency는 그대로 나타납니다. Scene/Array ID는
|
||||
provenance label이므로 값이 달라도 현재 열린 geometry/sample을 사용하고 Result에 실제 입력
|
||||
ID와 hash를 기록합니다.
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"schemaVersion": "1.0.0",
|
||||
"kind": "micarrsim.experiment",
|
||||
"id": "music-single-tone-25x25",
|
||||
"name": "Standard MUSIC · 1.125 kHz · 25×25",
|
||||
"arrayId": "rectangular-4x3-450mm",
|
||||
"sceneId": "music-single-tone",
|
||||
"scan": {
|
||||
"z": 2,
|
||||
"xMin": -0.6,
|
||||
"xMax": 0.6,
|
||||
"yMin": -0.45,
|
||||
"yMax": 0.45,
|
||||
"columns": 25,
|
||||
"rows": 25
|
||||
},
|
||||
"frequencyBands": [
|
||||
{
|
||||
"id": "tone-1125",
|
||||
"minHz": 1100,
|
||||
"maxHz": 1150,
|
||||
"color": "#65f2bf"
|
||||
}
|
||||
],
|
||||
"stft": {
|
||||
"fftSize": 512,
|
||||
"hopSize": 256,
|
||||
"window": "hann"
|
||||
},
|
||||
"evaluation": {
|
||||
"detectionThresholdRatio": 0.25
|
||||
},
|
||||
"beamforming": {
|
||||
"algorithm": "music",
|
||||
"backend": "cpu",
|
||||
"minimumDistance": 0.01,
|
||||
"normalization": "none",
|
||||
"dynamicRangeDb": 30,
|
||||
"compensateFrequencyResponse": true,
|
||||
"musicSourceCountMethod": "fixed",
|
||||
"musicSourceCount": 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"schemaVersion": "1.0.0",
|
||||
"kind": "micarrsim.scene",
|
||||
"id": "music-single-tone",
|
||||
"name": "1.125 kHz MUSIC single source",
|
||||
"description": "Small deterministic free-field fixture for standard narrowband MUSIC.",
|
||||
"units": "m",
|
||||
"sampleRate": 48000,
|
||||
"duration": 0.25,
|
||||
"speedOfSound": 343,
|
||||
"seed": 20260829,
|
||||
"mix": { "normalization": "none", "targetPeak": 0.95 },
|
||||
"sources": [
|
||||
{
|
||||
"id": "music-source-1",
|
||||
"name": "1.125 kHz tone",
|
||||
"position": [0.08, 0.04, 2],
|
||||
"gainDb": -12,
|
||||
"startTime": 0,
|
||||
"duration": 0.25,
|
||||
"signal": {
|
||||
"type": "tone",
|
||||
"frequency": 1125,
|
||||
"phaseDeg": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"ambient": []
|
||||
}
|
||||
Reference in New Issue
Block a user