본문 바로가기

신호처리기초

(22)
Linear Time-Invariant System(LTI system) 정의 및 간단 정리 Time invariance(시불변) x(t)를 어떠한 시스템에 넣어 y(t)를 얻는다 할 때, $t_0$만큼 옮겨 넣었을 때의 결과도 $t_0$만큼 옮겨 나온다. Linearity(선형) 신호 두 개 $x_1(t), x_2(t)$를 각각 시스템에 넣어 출력 $y_1(t), y_2(t)$이 나왔을 때, 두 신호의 선형결합 형태를 시스템에 집어넣을 시 출력의 선형결합한 형태가 유지된다. LTI System with Impulse Response Unit Impulse Function은 다음과 같이 t=0일 때만 1 값을 갖는 것이다. 위 Impulse function을 임펄스 신호라 할 때 이를 시스템에 input으로 넣어 나온 출력 h[n]을 임펄스 응답이라 한다. 결론부터 말하자면 이 임펄스 응답을 알..
LTI system 들어가기 전 계단함수와 임펄스 응답 알아보기 델타 함수(delta function)와 임펄스 응답(Impulse Response) Step Function $H(t) = \left\{\begin{matrix} 0 & t
신호에 들어가기 전 기초 다지기 오일러 공식과 complex number $\theta$의 크기에 따라서 가능한 경우의 수를 찍어본다면 위와 같은 원의 형태로의 자취가 나오겠다. Re영역으로 1인 원이 그려지는 것이니 벡터의 길이 $|e^{i \theta}| = 1$이 자연스럽다. 이로써 $Ae^{i \theta}$의 지수함수 형태로 complex number을 표현할 수 있다. 이것이 곧 오일러 공식의 장점으로도 작용한다. A에 따라서는 원의 크기가 달라지게 되는 것이다. 주기와 주파수 주기(초) : 한 cycle 도는 데의 시간 t가 궁금 (너 운동장 한바퀴 돌면 몇 초 걸려?) 주파수(Hz) : 1초 동안 일어난 cycle 수가 궁금 (팽이가 1초 동안 몇번 돈거야?) 진폭 변경 위상 변경 주파수 변경 sin의 한 cycle은 3..
푸리에급수, 어떤 의미를 지니는가 Fourier Series 음성 녹음한 파일을 보면 복잡한 형태의 신호가 나온다. 그 이유는 다양한 주파수(frequency)를 가진 사인파 형태(sinusoidal)의 신호들이 섞여있기에 그러하다. 이때 의미있는 분석을 위해서는 time domain이아닌 frequency domain으로 살펴 어떠한 주파수의 신호들로 이루어져 있는지 알아내야 한다. 이때 이용할 수 있는 수학적 도구가 푸리에 변환(Fourier Transform)이다. 즉 푸리에 변환은 time domain에서 frequency domain으로 나타내어 해당 신호가 어떠한 주파수 성분들로 구성되는지 알 수 있도록 한다. 주기함수를 지수함수의 조합으로 표현할 수 있는 것이 푸리에 급수이다. 주기함수가 아닌 것을 지수 함수로 표현하는 것은..
DFT 알아보고 python으로 구현하기 DFT가 나오기까지 부제) 우리 컴퓨터는 continuous 못해요! 왜 애 기를 죽이고 그래! Fourier Transform에서 time domain에서 연속 주기 함수이니 frequency 축으로 바꿀 때는 그 한 주기에 대해서만 계산하면 된다. 반대로 frequency 축은 이산 비주기함수이니 $(-\infty, \infty)$에 대하여 계산하여 time domain으로 바꿨다. Continuous time에 대해서 CTFT는 사람 손으로나 가능하지, 컴퓨터의 영역에서는 불가능하다. 컴퓨터가 연속을 다룰 수 없기에 그렇다. 그렇다면 컴퓨터가 다룰 수 있도록 이산신호로 바꾸어보자 Time 영역에서 Discrete한 파형을 Fourier Transform을 하면(DTFT) Frequency 영역에서 ..
python으로 정현파(sinusoid) 만들기 Real sinewave import numpy as np import matplotlib.pyplot as plt def sinusoid(A, f0, phi, fs, t): # 1/fs 간격으로 t=np.arange(0, t, 1.0/fs) # 위 아래 둘중 아무거나 사용하면 됨 # 점 갯수를 fs개로 # t=np.linspace(0, t, int(fs)) x=A*np.cos(2*np.pi*f0*t*+phi) return x # 지속시간 t를 짧게 해야 구불구불이 보인다 sin_A=sinusoid(A=0.8, f0=440, phi=np.pi/2, fs=44100, t=0.005) plt.plot(sin_A) plt.xlabel("time") plt.ylabel("amplitude") plt.show()..