IIR 필터 구현을 선택할 때 고려해야 할 요소는 무엇입니까?


답변:


9

우선, Direct Form I 및 II 구현 에 대한 Wikipedia의 내용이 약간 있습니다 .

직접 양식 I에는 더 많은 메모리가 필요하지만 다소 간단한 전략이며 반올림 및 공명 문제가 발생할 가능성이 적습니다.

직접 양식 II는 적은 메모리를 필요로하지만 비정상적인 상호 작용, 더 큰 숫자 및 더 많은 반올림 오류가 발생할 수 있습니다. 더 작은 필터, 특히 2 차 필터를 계단식으로 연결하면이 대부분을 줄일 수 있습니다.


2
두 경우 모두 계단식 2 차 섹션이어야합니다.
Oliver Charlesworth

1
요컨대, 메모리 대 반올림 오류 트레이드 오프입니까?
anasimtiaz

2
매우 약한 답변 IMO. 기술적으로는 질문에 대답하지만 "기술적으로"만 해당됩니다. 언어로 된 소스 코드를보고 싶습니다. 쉬운 FIR 필터를 구현하는 방법을 알고 있습니다. IIR 소스 코드를 보자.
Trevor Boyd Smith

2
또한 샘플 당 수행되는 수학 연산의 관점에서, I 또는 II가 더 나은 구현은 무엇입니까?
anasimtiaz

1
FIR 필터링을 수행하는 방법을 알고 있습니다. 나는 또한 직접 양식 I / II / III / IV가 무엇인지 알고 있습니다. 내가 경험하지 않은 것은 IIR입니다 : 디자인 또는 구현. 내 원래 의견은 건설적이지 않았습니다. "직접 I-IV 형식이 무엇인지 이해합니다. IIR 필터를 설계 / 구현하는 방법에 대해 더 자세히 말씀해 주시겠습니까?"
Trevor Boyd Smith

9

조금 더 오래되었지만 더 포괄적 인 답변을받을 자격이있을 수 있습니다. 특히 Direct Form II로 인해 많은 문제가 발생할 수 있기 때문입니다. 우선, "하나의 크기에 모두 맞는"것은 없으며 최선의 선택은 특정 응용 프로그램 및 제약 조건에 따라 다릅니다. 당신이 고려할 수있는 것은

  1. 메모리 : Direct Form II와 Transposed Form II는 Direct Memory I과 Transposed Form I보다 상태 메모리가 약간 적지 만 계단식 2 차 섹션 구현에서는 차이가 적습니다.
  2. MIPS : 곱셈과 덧셈의 수에서, 네 가지 구현은 모두 동일합니다. 그러나 특정 프로세서의 명령어 세트에 따라 구현 효율성에 큰 차이가있을 수 있습니다. 따라서 "의존합니다".
  3. 고정 소수점 속성 : 이것은 큰 차이를 만듭니다. 기본적으로 상태 변수가 오버플로되지 않도록 입 / 출력과 상태 변수 사이의 전달 함수를 분석해야합니다. 여기서 Direct Form I과 Transposed Form II가 확실한 승자입니다. 상태 변수는 + 106dB 또는 그에 대한 입력 및 출력에 바인딩됩니다. 예를 들어 직접 형태 II에서 입력에서 상태로의 전달 기능은 극에 의해서만 주어진다. 이것이 실제로 100dB의 이득을 초과 할 수있는 실제 사례를 보았습니다. 이것은 고정 소수점 구현에 절대적으로 적용됩니다.
  4. 노이즈 : 잘림 및 반올림 오류와 관련하여 모든 구현은 거의 동일합니다. 3)에서 언급 한 상태 변수 전달 함수 문제는 이것에 어느 정도 영향을 미치며 32 비트 부동 소수점을 사용할 때도 Direct Form II 필터에서 가청 노이즈 문제가 발생했습니다.

요약하면, 전치 양식 II가 최선의 선택이 아닌 경우가 많습니다. 일부 고정 소수점 시나리오에서, 특히 심각한 잡음 문제가있는 경우 Direct Spec I이 오류 스펙트럼 쉐이핑 등과 같은 것들로 더 쉽게 확장 될 수 있으므로 더 좋습니다.


이것은 훨씬 더 포괄적이고 더 나은 대답입니다!
Lorem Ipsum

2
나는 Direct Form I이 내 응용 프로그램에 더 나은 선택 인 이유를 오늘 훨씬 더 어려운 방법으로 알아 냈습니다. 정말 좋은 답변 주셔서 감사합니다!
anasimtiaz

1

자원이 부족한 시스템을 사용하거나 극한의 요구 사항이없는 한 직접 I 또는 II 형식을 선택하는지 여부는 실제로 중요하지 않습니다. 예를 들어 PC 나 스마트 폰에서 작업하는 경우 실제로 중요하지 않습니다. 개인적으로 저는 I 양식을 선호합니다.

실제 문제는 일반적으로 MIPS이며 고정 소수점 구현을 수행하려는 경우 상황이 더 복잡해집니다. 예를 들어 ARM에서 계수와 필터 상태가 모두 32 비트 인 경우 IIR 필터는 훨씬 더 많은 MIPS를 소비합니다. 예를 들어 컷오프 주파수가 매우 낮은 저역 통과 필터를 구현해야하는 경우 상태 및 계수의 32 비트가 필요합니다. 이러한 경우 상태 변수 필터와 같은 다른 유형의 필터를 사용할 수 있습니다.


1

수치 정확도와 같은 기술적 차이 외에도 안정성 문제도 있습니다. 디지털 필터가 극점 / 제로 쌍을 서로 가깝게하면 주파수 응답이 다양한 위치에서 불안정해질 수 있습니다 (일반적으로 나이키 스트에 접근하거나 0에 접근).

음악 응용 분야에 IIR 필터를 사용하는 경우 필터 매개 변수를 실시간으로 변조 할 때 (예를 들어, 저역 통과 필터의 차단 주파수 변경) 실현 선택을 통해 필터 안정성에 큰 영향을 줄 수 있습니다.

다음 각 실현의 컷오프 주파수 또는 피크 게인과 같은 시변 파라미터를 통해 차이점을들을 수있는 오픈 소스 애플리케이션이 있습니다.

  • 직접 양식 I
  • 직접 양식 II
  • 전치 된 직접 양식 I
  • 전치 된 직접 양식 II
  • 격자 양식
  • 상태 변수

프로젝트는 다음과 같습니다.

https://github.com/vinniefalco/DSPFiltersDemo.git

https://github.com/vinniefalco/DSPFilters.git

스크린 샷


1
이 글을 여러 번 게시했으며 답변이 실제로 질문에 맞지 않는 한 스팸 정책을 시행하는 경향이 있습니다. 이 게시물 중 어느 것도 직접 질문에 답변하지 않으며 제품을 홍보합니다. 질문에 직접 답변하도록 수정하십시오. 그렇지 않으면 삭제됩니다.
Phonon

0

메모리, MIPS, 노이즈 및 안정성에 대한 위의 의견 외에도; 일반적으로 간과되는 또 다른 요소가 있습니다. 이 요소는 재설정 기능입니다. 그것은 대부분의 상황에서 매우 중요합니다.

Direct Form II 구현에서는 지연된 출력에 대한 상태가 없으므로 "5"라고 Direct Form II 필터를 "재설정"하면 초기 출력이 5가되지 않습니다. -직관적 인 Simulink를 사용할 때 약간의 좌절감을 일으켰습니다. 이런 이유로 나는 거의 항상 Direct Form I 구현을 사용합니다. 불행히도 Simulink는 DSP 툴박스가있는 경우 Direct Form I 만 지원하며, 그래도 입력 신호에서 초기 조건을 설정할 수는 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.