[Discrete-time] Scaling and Shifting
2011. 1. 30. 19:47
Amplitude Scaling
Continuous-time 에서 사용했던 Scaling과 Shifting들은 여기서도 적용이 가능하지만 몇 가지 차이가 있다.
먼저 첫째로 Amplitude Scaling은 Continuous-time과 차이가 없다.
Time Shifting
Time Shifting의 경우 역시 마찬가지로 Continuous-time과 동일하지만 조건이 하나 더 붙는데,
Shifting은 integer 단위로 이루어져야한다는 것이다. 그렇지 않으면 정의되지 않은 값들을 지칭하게된다.
Time Scaling: Time Compression
Time Scaling은 Continuous-time과 조금 많이 다르다.
Discrete-time에서의 Time Scaling은 Time Compression과 Time Expansion 두가지로 나뉘는데,
먼저 Time Compression에 대해 다뤄보도록 하겠다.
n → Kn, |K| > 1, where K is integer
Time Compression은 위와같이 n을 Kn으로 바꿈으로써 가능한데, K는 0이 아닌 정수이어야 한다.
Decimation
이렇게 Time Compression을 수행하면, 사이사이에 있던 값들이 사라진다.
위 그림에서는 홀수 번째 index에 있던 데이터들이 모두 사라졌다.
짝수 번째 index의 값들만 사용되었기 때문이다.
우리는 이를 Decimated 되었다고 말한다.
만약 K의 값이 더 커지는 경우에는 K의 배수에 해당하는 index의 값만 남고 모두 사라지게 될 것이다.
Time Scaling: Time Expansion
Time Expansion의 경우 index를 K라는 integer (마찬가지로 nonzero)로 나누게 되는데
x[1/2]와 같은것들은 정의되지 않는다.
이런 경우 Interpolation을 이용하여 일정한 공식을 통해 사이값을 구하거나,
(만약 K=2라면 평균을 구하면 되지만 그렇지 않다면 좀 더 복잡한 공식이 필요할 것이다.)
혹은 그냥 undefined로 둘수도 있다.
하지만 두 가지 방법 모두 딱히 쓸만해 보이지 않는다.
그래서 고안한 것이 위 그림과 같은 방법이다.
정의되지 않는 값들은 0이 되며, 나머지 값들은 K만큼의 간격으로 벌어지게 된다.
이를 다시 Time Compression한다면 우리는 원래 함수를 구할 수도 있다.
Decimation 되는 값들은 0밖에 없을 것이다.