시스템에 필요한 초당 곱셈 수
합리적 샘플링 속도 변경을 5/7로 구현하는 시스템을 고려해보십시오.이를 위해 업 샘플러를 5, 컷오프 주파수 π / 7을 갖는 저역 통과 필터 및 7로 다운 샘플러를 캐스케이드합니다. 저역 통과 필터는 전달이있는 4 차 버터 워스 필터입니다. 함수
$$H(z) = \frac{b0 + b1z^{-1} + b2z^{-2} + b3z^{-3} + + b4z^{-4}}{1 - a1z^{-1} - a2z^{-2} - a3z^{-3} - a4z^{-4}}$$입력이 초당 1000 개 샘플의 속도로 작동한다고 가정합니다. 시스템에 필요한 초당 곱셈 수는 얼마입니까? 0의 곱셈은 계산되지 않는다고 가정합니다.
9 개의 필터 계수와 5000 개의 샘플이 남아 있기 때문에 (업 샘플링, 필터링, 다운 샘플링 후) 9 * 5000 = 45000이 내 MAC 계산이지만 잘못된 접근 방식 인 것 같습니다.이 질문을 해결하기위한 다른 아이디어가 있습니까 ???
답변
한 가지 가능한 옵션은 저역 통과 필터를 FIR 부분과 순수 재귀 IIR 부분으로 분할하는 것입니다.
$$H(z) = H_1(z) \cdot H_2(z) = \frac{1}{1 - a1z^{-1} - a2z^{-2} - a3z^{-3} - a4z^{-4}} \cdot \left [ b0 + b1z^{-1} + b2z^{-2} + b3z^{-3} + + b4z^{-4} \right ]$$
업 샘플링 된 도메인의 각 샘플에 여전히 재귀 부분을 적용해야하지만 실제 출력 샘플이 필요할 때만 FIR을 실행하면됩니다. 그래서 이것은
$$N = 5000*4 + (5000*5)/7$$
안정성과 소음 성능 측면에서 좋은 생각은 아니지만 충분한 정밀도와 여유 공간이 있으면 효과가 있습니다.
최신 정보:
잠재적으로 다중화를 줄일 수있는 다른 방법이 있습니다. 버터 워스의 FIR 섹션은 두 개의 2 차 섹션으로 나눌 수 있습니다.$[1 2 1]$ 그래서 당신은 이것을 다음과 같이 쓸 수 있습니다.
$$H(z) = H_3(z) \cdot H_4(z) \cdot H_4(z) = \frac{b_0}{1 - a1z^{-1} - a2z^{-2} - a3z^{-3} - a4z^{-4}} \cdot \left [ 1 + z^{-1} + z^{-1} + z^{-2} \right ] \cdot \left [ 1 + z^{-1} + z^{-1} + z^{-2} \right ]$$
따라서이 경우에는 특별히 유용한 구현은 아니지만 초당 25000 배까지 감소합니다. 결국이를 구현하는 여러 가지 방법이 있으며 어느 것이 더 나은지는 플랫폼의 속성에 따라 다릅니다.