프로젝트를 진행하며 Time Domain 신호를 특정 주파수 영역으로 필터링 해야 할 필요성이 생겼다.
따라서 작업을 다음과 같이 했다.
1) Time Domain 신호 FFT
2) 주파수 Domain 신호에서 원하는 주파수 영역대로 Filtering
3) IFF 수행하여 Time Domain 신호 복조
위의 순서로 복조할 경우,LPF의 Cut off 주파수를 나이키스트 주파수로 설정 후 Filtering 해도 복조된 신호의 amplitude가 원본 신호 대비 줄어드는 현상이 발생했다.
원인은 나이키스트 주파수 이후의 값이 전부 필터링되어 amplitude가 줄은것이다.
따라서 나이키스트 주파수 이후의 값도 이전값과 대칭이되게 동일하게 필터링을 수행해줘야 이전 신호와 동일한 amplitude의 출력값을 얻을 수 있다.
나이키스트 이론에 따라 실제 표출되는 sampling Freq/2 내에서 만 Filtering 해준 후 복조시 Amplitude가 반으로 준다.
따라서 sampling Freq/2이후에도 동일하게 Filtering한 후 복조해야 Amplitude가 원상태로 복조된다.
하지만 위의 방법은 처리 데이터 수가 많을수록 작업에 부하가 많이 걸린다.
따라서 .Net에서 제공하는 라이브러리를 이용하면 시간을 더 많이 줄일 수 있을것 같다.
다음은 MathNet 라이브러리를 사용하여 필터를 만들고 적용하는 것을 구현해보자.
'SW 개발 공부 > 실수 기록' 카테고리의 다른 글
[C#]오름차순 정렬& 파일 추출 방법 (0) | 2025.01.02 |
---|---|
[VS code] cpp 환경 설정 방법 (0) | 2024.12.17 |
[Stm32 Project]Debug시 Dynamic Printf가 정상적으로 출력 되지 않을 때 (0) | 2024.11.12 |
[Stm32 Project] header 파일에서 선언한 변수가 .c파일 내에서 찾을 수 없는 경우 (1) | 2024.11.11 |
C#과 C++ 동적 할당 차이 (다른 new 사용법) (0) | 2024.10.28 |