Skip to content

Interactive web application for visualizing and comparing various filters (Moving Average, Low-pass, High-pass, Kalman) with real-time signal processing demonstrations

License

Notifications You must be signed in to change notification settings

imjeasung/interactive-filter-visualizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

7 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽ›๏ธ Interactive Filter Visualizer

Live Demo License: MIT JavaScript

๋‹ค์–‘ํ•œ ํ•„ํ„ฐ์˜ ๋™์ž‘์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์‹œ๊ฐํ™”ํ•˜๊ณ  ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

image

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

๐ŸŽต ์‹ ํ˜ธ ์ƒ์„ฑ

  • 4๊ฐ€์ง€ ์‹ ํ˜ธ ํƒ€์ž…: ์‚ฌ์ธํŒŒ, ์‚ฌ๊ฐํŒŒ, ์‚ผ๊ฐํŒŒ, ๊ฐ€์šฐ์‹œ์•ˆ ๋…ธ์ด์ฆˆ
  • ์‹ค์‹œ๊ฐ„ ํŒŒ๋ผ๋ฏธํ„ฐ ์กฐ์ •: ์ฃผํŒŒ์ˆ˜, ์ง„ํญ, ๋…ธ์ด์ฆˆ ๋ ˆ๋ฒจ
  • ์žฌ์ƒ ์†๋„ ์ œ์–ด: 0.1x ~ 3x ์†๋„ ์กฐ์ •

๐Ÿ”ง ํ•„ํ„ฐ ์ข…๋ฅ˜

  1. ์ด๋™ํ‰๊ท  ํ•„ํ„ฐ (Moving Average)

    • ์œˆ๋„์šฐ ํฌ๊ธฐ ์กฐ์ • (3~50)
    • ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ์— ํšจ๊ณผ์ 
  2. ๋กœ์šฐํŒจ์Šค ํ•„ํ„ฐ (Low-pass)

    • 1์ฐจ RC ํ•„ํ„ฐ (IIR ๊ตฌํ˜„)
    • ์ปท์˜คํ”„ ์ฃผํŒŒ์ˆ˜ ์กฐ์ • (1~25Hz)
    • ๊ณ ์ฃผํŒŒ ์„ฑ๋ถ„ ์ œ๊ฑฐ
  3. ํ•˜์ดํŒจ์Šค ํ•„ํ„ฐ (High-pass)

    • 1์ฐจ RC ํ•„ํ„ฐ (IIR ๊ตฌํ˜„)
    • ์ปท์˜คํ”„ ์ฃผํŒŒ์ˆ˜ ์กฐ์ • (0.5~10Hz)
    • ์ €์ฃผํŒŒ/DC ์„ฑ๋ถ„ ์ œ๊ฑฐ
  4. ์นผ๋งŒ ํ•„ํ„ฐ (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

๐ŸŽฎ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

1. ์‹ ํ˜ธ ์„ค์ •

  1. ์‹ ํ˜ธ ํƒ€์ž… ์„ ํƒ (์‚ฌ์ธํŒŒ, ์‚ฌ๊ฐํŒŒ, ์‚ผ๊ฐํŒŒ, ๋…ธ์ด์ฆˆ)
  2. ์ฃผํŒŒ์ˆ˜์™€ ์ง„ํญ ์กฐ์ •
  3. ๋…ธ์ด์ฆˆ ๋ ˆ๋ฒจ ์„ค์ •

2. ํ•„ํ„ฐ ์„ ํƒ

  • ์ƒ๋‹จ ํƒญ์—์„œ ์›ํ•˜๋Š” ํ•„ํ„ฐ ์„ ํƒ
  • ๊ฐ ํ•„ํ„ฐ๋ณ„ ํŒŒ๋ผ๋ฏธํ„ฐ ์กฐ์ •

3. ์‹ค์‹œ๊ฐ„ ๋ถ„์„

  • โ–ถ๏ธ ์‹œ์ž‘ ๋ฒ„ํŠผ์œผ๋กœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์‹œ์ž‘
  • ์›๋ณธ ์‹ ํ˜ธ์™€ ํ•„ํ„ฐ๋ง๋œ ์‹ ํ˜ธ ๋น„๊ต
  • ์‹ค์‹œ๊ฐ„ ํ†ต๊ณ„ ์ •๋ณด ํ™•์ธ

๐Ÿ”ฌ ๊ต์œก์  ํ™œ์šฉ

์‹ ํ˜ธ์ฒ˜๋ฆฌ ํ•™์Šต

  • ํ•„ํ„ฐ์˜ ์ฃผํŒŒ์ˆ˜ ์‘๋‹ต ํŠน์„ฑ ์ดํ•ด
  • ๋…ธ์ด์ฆˆ ์ œ๊ฑฐ ์›๋ฆฌ ํ•™์Šต
  • ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ์˜ ํšจ๊ณผ ์ฒดํ—˜

์‹คํ—˜ ์˜ˆ์‹œ

  1. ๋…ธ์ด์ฆˆ๊ฐ€ ์žˆ๋Š” ์‚ฌ์ธํŒŒ์— ์ด๋™ํ‰๊ท  ํ•„ํ„ฐ ์ ์šฉ
  2. ๊ณ ์ฃผํŒŒ ์„ฑ๋ถ„ ์ œ๊ฑฐ๋ฅผ ์œ„ํ•œ ๋กœ์šฐํŒจ์Šค ํ•„ํ„ฐ ์‚ฌ์šฉ
  3. DC ์„ฑ๋ถ„ ์ œ๊ฑฐ๋ฅผ ์œ„ํ•œ ํ•˜์ดํŒจ์Šค ํ•„ํ„ฐ ํ™œ์šฉ
  4. ๋ถˆ์•ˆ์ •ํ•œ ์‹ ํ˜ธ์— ์นผ๋งŒ ํ•„ํ„ฐ ์ ์šฉ

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ

ํ”„๋ก ํŠธ์—”๋“œ

  • 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;
}

๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

ํ”„๋กœ์ ํŠธ ๊ฐœ์„ ์— ์ฐธ์—ฌํ•ด์ฃผ์„ธ์š”!

  1. Fork ํ›„ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
  2. ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋˜๋Š” ๋ฒ„๊ทธ ์ˆ˜์ •
  3. ํ…Œ์ŠคํŠธ ์™„๋ฃŒ ํ›„ Pull Request

๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ผ์ธ

  • ES6+ ๋ฌธ๋ฒ• ์‚ฌ์šฉ
  • ๋ช…ํ™•ํ•œ ํ•จ์ˆ˜/๋ณ€์ˆ˜๋ช…
  • JSDoc ์ฃผ์„ ์ถ”๊ฐ€
  • ๋ชจ๋“ˆํ™”๋œ ๊ตฌ์กฐ ์œ ์ง€

๐Ÿ“„ ๋ผ์ด์„ ์Šค

MIT License - ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ, ์ˆ˜์ •, ๋ฐฐํฌ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿท๏ธ ํƒœ๊ทธ

#signal-processing #filter-visualization #javascript #canvas #kalman-filter #education #real-time #web-app


๐Ÿ“ž ๋ฌธ์˜์‚ฌํ•ญ

ํ”„๋กœ์ ํŠธ ๊ด€๋ จ ๋ฌธ์˜๋‚˜ ์ œ์•ˆ์‚ฌํ•ญ์ด ์žˆ์œผ์‹œ๋ฉด [email protected] ์—ฐ๋ฝ ๋ฐ”๋ž๋‹ˆ๋‹ค!

โญ ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด Star๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”!

About

Interactive web application for visualizing and comparing various filters (Moving Average, Low-pass, High-pass, Kalman) with real-time signal processing demonstrations

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published