제 13 장
변 환
Laplace 변환
• 함수 f(t)의 Laplace 변환 F(s)는 와 같이 정의.
t의 멱급수 그리고
의 Laplace 변환은 다음과 같이 얻어진다:
>> syms t
>> laplace(t^2) ans =
2/s^3
>> laplace(t^8) ans =
40320/s^9
>> laplace(t^1) ans =
1/s^2
>> laplace(t^0) ans =
1/s
와 의 Laplace 변환을 구하여 보자:
>> syms t w
>> laplace(cos(w*t)) ans =
s/(s^2+w^2)
>> laplace(sin(w*t)) ans =
w/(s^2+w^2)
Laplace 변환은 선형변환으로서 의 관계가 성립.
• 와 같을 때 의 Laplace 변환을 구하라:
>> syms t
>> f = 1; g = exp(-3*t);
>> v = 5*f + g;
>> laplace(v) ans =
5/s+1/(s+3)
역 Laplace 변환
• 역 Laplace 변환은 함수 ilaplace를 이용한다.
역 Laplace 변환은 각각 다음으로부터 얻는다:
>> syms s w
>> ilaplace(1/s^3) ans =
1/2*t^2
>> ilaplace(3/(s+w)) ans =
3*exp(-w*t)
>> ilaplace(s/(s^2+4)) ans =
cos(2*t)
• 함수 의 역 Laplace 변환을 구하여 보자:
>> syms s
>> F = (4-3*s)/(1+2*s);
>> ilaplace(F) ans =
-3/2*dirac(t)+11/4*exp(-1/2*t)
Laplace 변환을 이용한 미분방정식의 풀이
• 1차와 2차 미분방정식의 Laplace 변환은 각각
• 2차 미분방정식
의 해를 구하라.
양 변을 Laplace 변환시키면
y(t)가 다음과 같은 Heaviside 함수(혹은 단위계단 함수)라고 하면:
y(t)의 그래프는 함수 Heaviside와 ezplot을 이용하여 쉽게 얻을 수 있다:
>> ezplot(Heaviside(t),[-2 2])
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
0 0.2 0.4 0.6 0.8 1
t heaviside(t)
Heaviside 함수(단위계단 함수)의 그래프.
Heaviside 함수의 Laplace 변환을 구한다:
>> laplace(heaviside(t)) ans =
1/s
해 x(t)는 다음과 같은 X(s)의 역 Laplace 변환 으로부터 얻을 수 있다:
• 파라미터 가 와 같이 세 가지 값을 가질 때 각각에 따른 해를 구하라.
>> a = 0; b = 2; c = 5;
>> d = s^2 + 1.2*s + 1;
>> Xa = ((1+a*s)/d)*(1/s);
>> Xb = ((1+b*s)/d)*(1/s);
>> Xc = ((1+c*s)/d)*(1/s);
>> xa = ilaplace(Xa) xa =
-exp(-3/5*t)*cos(4/5*t)-3/4*exp(-3/5*t)*sin(4/5*t)+1
>> xb = ilaplace(Xb) xb =
-exp(-3/5*t)*cos(4/5*t)+7/4*exp(-3/5*t)*sin(4/5*t)+1
>> xc = ilaplace(Xc) xc =
1-exp(-3/5*t)*cos(4/5*t)+11/2*exp(-3/5*t)*sin(4/5*t)
구간 에서 해 xa와 xb의 그래프를 그려보기로 한다:
>> subplot(1,2,1)
>> ezplot(xa,[0 10])
>> subplot(1,2,2)
>> ezplot(xb,[0 10])
0 5 10
0 0.2 0.4 0.6 0.8 1
t
-exp(-3/5 t) cos(4/5 t)-...+1
0 5 10
0.6 0.8 1 1.2 1.4 1.6
t
-exp(-3/5 t) cos(4/5 t)+...+1
미분방정식 해의 그래프
.
Fourier 변환
함수 f(t)의 Fourier 변환은 와 같이 정의된다.
MATLAB 함수 fourier를 이용하면 주어진 함수의 Fourier 변환을 구할 수 있다.
• 의 Fourier 변환을 구하여 보자:
>> syms x
>> fourier(sin(x)) ans =
i*pi*(-dirac(w-1)+dirac(w+1))
• Gaussian의 Fourier 변환을 구하고 이 변환의 그래프를 그려보자:
>> syms x
>> f = exp(-2*x^2);
>> Ft = fourier(f) Ft =
1/2*2^(1/2)*pi^(1/2)*exp(-1/8*w^2)
>> ezplot(Ft)
-6 -4 -2 0 2 4 6
0 0.2 0.4 0.6 0.8 1 1.2
w 1/2 21/2 1/2 exp(-1/8 w2)
Gaussian의 Fourier 변환의 그래프.
역 Fourier 변환
• 함수 ifourier를 이용하면 역 Fourier 변환을 구할 수 있다.
• Fourier 변환이 인 함수의 역 Fourier 변환은 이다.
함수 ifourier를 이용하여 이를 확인하여 보고 변환된 함수의 그래프를 그려보자:
>> syms w
>> f = ifourier(-2*exp(-abs(w))) f = -2/(1+x^2)/pi
>> ezplot(f)
-4 -3 -2 -1 0 1 2 3 4
-0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0
x -2/(1+x2)/
의 그래프
.
빠른 Fourier 변환(이산 Fourier 변환)
• n 개의 원소를 갖는 복소벡터 y의 한정, 혹은 이산 Fourier 변환은 n 개의 원소를 갖는 또 다른
복소벡터 Y이다.
위에서 는 n 번째 복소 단위근으로서 와 같이 표시된다. 이산 Fourier 변환은 와 같이 행렬-벡터 기호로 나타낼 수 있다. 여기에서 Fourier 행렬 F는
와 같은 원소를 갖는다.
F의 켤레 복소수 전치 는 을 만족하므로 이며 이로부터
Fourier 변환의 역을 얻을 수 있다:
따라서
위에서 는 의 켤레 복소수로서 이다.
• MATLAB 함수 fft는 수들로 이루어지는 벡터의 빠른 수치적 Fourier 변환을 구하는 데에 이용 된다. fft 함수는 y = fft(x)와 같이 호출하는데 fft의 효율성은 n 값에 따라 좌우된다. fft에 두 번째 인수 n을 제공할 수 있는데 y = fft(x,n)은 x를 절삭하거나 반올림시켜 빠른 Fourier 변환(Fast Fourier Transform, FFT) 알고리듬이 적용되기 전에 x의 길이를 n으로 만들어 준다.
역 FFT 인 는 ifft 함수에 의하여 수행된다. 또한 fft2, fftn, ifft2, 그리고 ifftn 들을 이용하여 보다 고차원의 이산 Fourier 변환과 그 역들을 수행할 수 있다.
• >> w = [2 0 1 0 2 1 1 0]';
>> v = fft(w) v =
7.0000
-0.7071 + 0.7071i 2.0000 - 1.0000i 0.7071 + 0.7071i 5.0000
0.7071 - 0.7071i 2.0000 + 1.0000i -0.7071 - 0.7071i
>> x = ifft(v) x =
2.0000 -0.0000 1.0000 0
2.0000 1.0000 1.0000 0
행렬에 대한 보기를 살펴보자:
F = fft(eye(n))
n=4일 경우 다음 결과를 얻는다:
>> fft(eye(4)) ans =
1.0000 1.0000 1.0000 1.0000
1.0000 0 - 1.0000i -1.0000 0 + 1.0000i 1.0000 -1.0000 1.0000 -1.0000
1.0000 0 + 1.0000i -1.0000 0 - 1.0000i 한편
F = fft(eye(n,n))
에 의해 생성된 n x n 행렬 F는 그 원소들이 n 번째 단위근 의 멱급수인 복소행렬이다.
빠른 Fourier 변환을 이용하는 보기로서
와 같이 주어지는 신호를 고려하여 보기로 한다. 시간구간 에서 잡음이 가미된 이 신호를 나타내는 모델을 구하고 빠른 Fourier 변환을 계산하여 신호의 진동수를 조사하여 보자.
>> t = 0:0.01:10;
>> f = 3*cos(pi*t) + 2*cos(3*pi*t) + cos(6*pi*t);
신호 f에 불규칙 잡음이 가해진다고 가정하고 잡음신호 fn을 생성한 다음 두 신호를 그래프 로 나타내어 보자:
>> fn = f + randn(size(t));
>> plot(1000*t(1:100),f(1:100), 1000*t(1:100),fn(1:100),':')
>> xlabel('time (ms)'), title('Signal')
>> legend('Original signal','Noisy signal')
0 100 200 300 400 500 600 700 800 900 1000
-6 -4 -2 0 2 4 6 8
time (ms) Signal
Original signal Noisy signal
원래신호 및 잡음신호
.
• fft를 이용하여 잡음신호에 대한 512점 Fourier 변환을 얻은 다음 신호의 파워 Pt를 계산하고 이를 그래프로 나타내어 본다:
>> Ft = fft(fn,512);
>> P = Ft.*conj(Ft)/512;
>> Pt = Ft.*conj(Ft)/512;
>> plot(1000*t(1:100),Pt(1:100)), xlabel('time (ms)'), title('Frequency content of signal')
0 100 200 300 400 500 600 700 800 900 1000
0 100 200 300 400 500 600 700 800
Frequency(Hz) Frequency content of signal
잡음신호에 대한 이산 Fourie 변환의 진동수에 따른 파워.
• 파워 스펙트럼
• 파워 스펙트럼은 진동수 구간 내에 포함된 파워의 척도
• 파워 스펙트럼을 추정하는 일반적인 방법은 샘플들을 FFT의 제곱을 이용하는 것 FFT의 제곱은 페리오도그램(peridodogram)이라고 불린다.
• 시간 구간 dt가 1초의 1/000에 해당하는 1kHz의 샘플링 빈도로 데이터가 기록 되는 경우를 살펴보자. 이 경우 Nyquist 진동수는 500Hz이다. 이제 원래 신호 로서 잡음이 포함된 100Hz sine 파형을 고려하여 보자. 파워 스펙트럼은 다음 으로부터 얻을 수 있다:
>> dt = 1/1000;
>> t = dt:dt:8192*dt;
>> sine = sin(2*pi*100*t);
>> y = sine + randn(size(t));
>> clf
>> spectrum(y)
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
10-1 100 101 102
Pxx - X Power Spectral Density
Frequency
파워 스펙트럼.