반응형

SciPy 4

[11] 윈도우 함수(Windowing): Hamming, Hann 등 윈도우별 분해능 비교

지난 글에서 FFT 심화 분석을 마치며, 신호를 강제로 잘라낼 때 발생하는 스펙트럴 누설(Spectral Leakage)과 이를 막아주는 윈도우 함수를 예고한 바 있습니다.신호를 분석할 때, 우리는 무한히 이어지는 신호 전체를 한 번에 처리할 수 없습니다. 실제로는 유한한 길이의 데이터 블록을 잘라내어 FFT에 입력합니다. 그런데 이 "잘라내기" 행위 자체가 문제를 일으킵니다.원래 신호가 아무리 깔끔한 순수 정현파라 하더라도, 특정 구간을 강제로 잘라내면 양 끝단에서 불연속이 발생합니다. FFT는 이 잘린 신호가 주기적으로 반복된다고 가정하기 때문에, 잘린 경계에서의 불연속은 실제로는 존재하지 않는 허구의 고주파 성분을 만들어 냅니다. 이것이 바로 스펙트럴 누설(Spectral Leakage)입니다.이를..

[05] 디지털 신호의 기초: 기본 파형 생성 및 시각화

들어가며지난 글에서 우리는 10Hz 사인파를 만들어보며 디지털 신호의 6가지 핵심 파라미터를 배웠습니다. 하지만 실제 세계의 소리와 영상은 단순한 사인파가 아닙니다. 피아노 건반을 누를 때 나는 소리, 사각형 펄스로 동작하는 디지털 회로, 복잡하게 얽힌 음악 신호까지, 모든 것은 다양한 파형의 조합입니다.이번 시간에는 이 파라미터들을 활용해 DSP에서 가장 기본이 되는 파형 사인파(Sine Wave), 코사인파(Cosine Wave), 구형파(Square Wave), 삼각파(Triangle Wave), 톱니파(Sawtooth Wave)를 직접 생성해 보겠습니다. 단순히 하나를 그리는 것에 그치지 않고, 서로 다른 주파수의 신호를 합쳤을 때 어떤 변화가 일어나는지도 함께 확인해 보며 신호의 합성(Synth..

[04] Python 신호 처리 생태계: 기초 파라미터 이해와 첫 번째 신호 생성

들어가며실험실 구축을 마쳤다면, 이제 본격적으로 디지털 신호라는 재료를 다뤄볼 시간입니다. 우리가 일상에서 듣는 소리나 보는 영상은 모두 연속적인 아날로그 형태이지만, 컴퓨터가 이를 처리하기 위해서는 일정한 규칙에 따라 '숫자의 나열'로 변환해야 합니다. 이번 글에서는 신호 생성의 가장 기본이 되는 파라미터를 이해하고, Python 코드로 우리의 첫 번째 디지털 신호를 만들어 보겠습니다. 1. Python 신호 처리 생태계 과거 DSP는 C/C++ 또는 MATLAB으로 구현하고 결과를 확인했습니다. 하지만 현재는 Python으로 대체하고 있으며, 신호처리를 위해 주로 사용하게 될 도구는 아래와 같이 3가지로 정리할 수 있습니다.NumPy: 모든 신호를 저장하는 메모리(배열)와 빠른 벡터연산을 지원합니다...

[03] 환경 설정: Anaconda, VS Code 및 필수 라이브러리 구축

들어가며: Python을 이용하여 DSP 이론을 실습하기 전에 개발 환경을 구축합시다.지난 글에서 우리는 왜 현대 AI 시스템에서 DSP가 다시 중요해졌는지 살펴보았습니다. 이제부터 실제로 실험해 볼 차례입니다.우리가 DSP 알고리즘을 설계하고 그 결과를 투영해 보기 위해서는 안정적인 실험실이 필요합니다. 이번 글에서는 가장 표준적이면서도 강력한 도구인 Anaconda와 Visual Studio Code(VS Code)를 이용해 Python 개발 환경을 구축해 보겠습니다. 1. Anaconda 설치 및 가상 환경 생성DSP 작업은 다양한 라이브러리의 조합으로 이루어집니다. 때로는 특정 라이브러리의 버전 충돌로 인해 공들여 만든 코드가 작동하지 않기도 합니다. Anaconda를 사용하는 이유는 바로 전용 ..

반응형