๋ค์ํ ํํฐ์ ๋์์ ์ค์๊ฐ์ผ๋ก ์๊ฐํํ๊ณ ๋น๊ตํ ์ ์๋ ์ธํฐ๋ํฐ๋ธ ์น ์ ํ๋ฆฌ์ผ์ด์
- 4๊ฐ์ง ์ ํธ ํ์ : ์ฌ์ธํ, ์ฌ๊ฐํ, ์ผ๊ฐํ, ๊ฐ์ฐ์์ ๋ ธ์ด์ฆ
- ์ค์๊ฐ ํ๋ผ๋ฏธํฐ ์กฐ์ : ์ฃผํ์, ์งํญ, ๋ ธ์ด์ฆ ๋ ๋ฒจ
- ์ฌ์ ์๋ ์ ์ด: 0.1x ~ 3x ์๋ ์กฐ์
-
์ด๋ํ๊ท ํํฐ (Moving Average)
- ์๋์ฐ ํฌ๊ธฐ ์กฐ์ (3~50)
- ๋ ธ์ด์ฆ ์ ๊ฑฐ์ ํจ๊ณผ์
-
๋ก์ฐํจ์ค ํํฐ (Low-pass)
- 1์ฐจ RC ํํฐ (IIR ๊ตฌํ)
- ์ปท์คํ ์ฃผํ์ ์กฐ์ (1~25Hz)
- ๊ณ ์ฃผํ ์ฑ๋ถ ์ ๊ฑฐ
-
ํ์ดํจ์ค ํํฐ (High-pass)
- 1์ฐจ RC ํํฐ (IIR ๊ตฌํ)
- ์ปท์คํ ์ฃผํ์ ์กฐ์ (0.5~10Hz)
- ์ ์ฃผํ/DC ์ฑ๋ถ ์ ๊ฑฐ
-
์นผ๋ง ํํฐ (Kalman Filter)
- 1์ฐจ์ ์ํ ์ถ์
- ํ๋ก์ธ์ค/์ธก์ ๋ ธ์ด์ฆ ์กฐ์
- ๋ ธ์ด์ฆ ์ ๊ฑฐ ํจ๊ณผ ์ธก์
- ์ ํธ ๋ถ๋๋ฌ์ ํ๊ฐ
- RMS ๊ฐ ๋น๊ต
- ์ค์๊ฐ ํต๊ณ ์ ๋ณด
๐ GitHub Pages์์ ๋ฐ๋ก ์ฒดํํ๊ธฐ
# ์ ์ฅ์ ํด๋ก
git clone https://github.com/imjeasung/interactive-filter-visualizer.git
# ํด๋ ์ด๋
cd interactive-filter-visualizer
# index.html ํด๋ฆญ
interactive-filter-visualizer/
โโโ index.html # ๋ฉ์ธ HTML ํ์ผ
โโโ css/ # ์คํ์ผ์ํธ (์ ํ์ฌํญ)
โโโ js/
โ โโโ main-app.js # ๋ฉ์ธ ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง
โ โโโ filters/ # ํํฐ ๊ตฌํ
โ โ โโโ moving-average-filter.js
โ โ โโโ lowpass.js
โ โ โโโ highpass.js
โ โ โโโ kalman.js
โ โโโ signal/ # ์ ํธ ์์ฑ
โ โ โโโ signal-generator.js
โ โโโ ui/ # UI ์ปดํฌ๋ํธ
โ โโโ canvas-visualizer.js
โโโ README.md
- ์ ํธ ํ์ ์ ํ (์ฌ์ธํ, ์ฌ๊ฐํ, ์ผ๊ฐํ, ๋ ธ์ด์ฆ)
- ์ฃผํ์์ ์งํญ ์กฐ์
- ๋ ธ์ด์ฆ ๋ ๋ฒจ ์ค์
- ์๋จ ํญ์์ ์ํ๋ ํํฐ ์ ํ
- ๊ฐ ํํฐ๋ณ ํ๋ผ๋ฏธํฐ ์กฐ์
โถ๏ธ ์์ ๋ฒํผ์ผ๋ก ์๋ฎฌ๋ ์ด์ ์์- ์๋ณธ ์ ํธ์ ํํฐ๋ง๋ ์ ํธ ๋น๊ต
- ์ค์๊ฐ ํต๊ณ ์ ๋ณด ํ์ธ
- ํํฐ์ ์ฃผํ์ ์๋ต ํน์ฑ ์ดํด
- ๋ ธ์ด์ฆ ์ ๊ฑฐ ์๋ฆฌ ํ์ต
- ์ค์๊ฐ ์ฒ๋ฆฌ์ ํจ๊ณผ ์ฒดํ
- ๋ ธ์ด์ฆ๊ฐ ์๋ ์ฌ์ธํ์ ์ด๋ํ๊ท ํํฐ ์ ์ฉ
- ๊ณ ์ฃผํ ์ฑ๋ถ ์ ๊ฑฐ๋ฅผ ์ํ ๋ก์ฐํจ์ค ํํฐ ์ฌ์ฉ
- DC ์ฑ๋ถ ์ ๊ฑฐ๋ฅผ ์ํ ํ์ดํจ์ค ํํฐ ํ์ฉ
- ๋ถ์์ ํ ์ ํธ์ ์นผ๋ง ํํฐ ์ ์ฉ
- HTML5 Canvas - ์ค์๊ฐ ๊ทธ๋ํ ๋ ๋๋ง
- Vanilla JavaScript (ES6+) - ๋ชจ๋ ๋ก์ง ๊ตฌํ
- CSS3 - ๋ชจ๋ UI ๋์์ธ
- ์ด๋ํ๊ท : ๋ง ๋ฒํผ ๊ธฐ๋ฐ ํจ์จ์ ๊ตฌํ
- RC ํํฐ: 1์ฐจ ์๋ ๋ก๊ทธ RC ํ๋ก์ ๋์งํธ ๊ตฌํ
- ์นผ๋ง ํํฐ: 1์ฐจ์ ์ํ๊ณต๊ฐ ๋ชจ๋ธ
- RequestAnimationFrame ๊ธฐ๋ฐ ๋ถ๋๋ฌ์ด ์ ๋๋ฉ์ด์
- ๋ง ๋ฒํผ ํ์ฉํ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ
- ์ค์๊ฐ ๋ ๋๋ง ์ต์ ํ
class CustomFilter {
constructor(param1, param2) {
// ํํฐ ์ด๊ธฐํ
}
filter(input) {
// ํํฐ๋ง ๋ก์ง
return output;
}
reset() {
// ์ํ ๋ฆฌ์
}
}
generateCustomSignal(frequency, amplitude) {
// ์ปค์คํ
์ ํธ ์์ฑ ๋ก์ง
return signalValue;
}
ํ๋ก์ ํธ ๊ฐ์ ์ ์ฐธ์ฌํด์ฃผ์ธ์!
- Fork ํ ๋ธ๋์น ์์ฑ
- ๊ธฐ๋ฅ ๊ฐ๋ฐ ๋๋ ๋ฒ๊ทธ ์์
- ํ ์คํธ ์๋ฃ ํ Pull Request
- ES6+ ๋ฌธ๋ฒ ์ฌ์ฉ
- ๋ช ํํ ํจ์/๋ณ์๋ช
- JSDoc ์ฃผ์ ์ถ๊ฐ
- ๋ชจ๋ํ๋ ๊ตฌ์กฐ ์ ์ง
MIT License - ์์ ๋กญ๊ฒ ์ฌ์ฉ, ์์ , ๋ฐฐํฌ ๊ฐ๋ฅํฉ๋๋ค.
#signal-processing
#filter-visualization
#javascript
#canvas
#kalman-filter
#education
#real-time
#web-app
ํ๋ก์ ํธ ๊ด๋ จ ๋ฌธ์๋ ์ ์์ฌํญ์ด ์์ผ์๋ฉด [email protected] ์ฐ๋ฝ ๋ฐ๋๋๋ค!
โญ ์ด ํ๋ก์ ํธ๊ฐ ๋์์ด ๋์ จ๋ค๋ฉด Star๋ฅผ ๋๋ฌ์ฃผ์ธ์!