이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

tf2sos

디지털 필터 전달 함수 데이터를 2차섹션형(SOS) 형식으로 변환

구문

[sos,g] = tf2sos(b,a)
[sos,g] = tf2sos(b,a,'order')
[sos,g] = tf2sos(b,a,'order','scale')
sos = tf2sos(...)

설명

tf2sos는 지정된 디지털 필터에 대한 전달 함수 표현을 그에 상응하는 2차섹션형(SOS) 표현으로 변환합니다.

[sos,g] = tf2sos(b,a)는 2차섹션형의 행렬 sos와 이득 g를 구합니다. 이는 전달 함수 계수 벡터 ab로 표현된 디지털 필터와 동일합니다.

H(z)=B(z)A(z)=b1+b2z1++bn+1zna1+a2z1++am+1zm

sos는 Lx6 행렬입니다.

sos=[b01b11b211a11a21b02b12b221a12a22b0Lb1Lb2L1a1La2L].

행에는 H(z)에 대한 2차섹션형의 분자 계수와 분모 계수인 bik와 aik가 포함되어 있습니다.

H(z)=gk=1LHk(z)=gk=1Lb0k+b1kz1+b2kz21+a1kz1+a2kz2.

[sos,g] = tf2sos(b,a,'order')sos의 행 순서를 지정합니다. 여기서 'order'는 다음과 같습니다.

  • 'down' - sos의 첫 번째 행이 단위원에 가장 가까이 있는 극점을 포함하도록 섹션의 순서를 지정할 경우

  • 'up' - sos의 첫 번째 행이 단위원에서 가장 멀리 있는 극점을 포함하도록 섹션의 순서를 지정할 경우(디폴트 값)

[sos,g] = tf2sos(b,a,'order','scale')은 모든 2차섹션형의 이득과 분자 계수에 대한 스케일링을 원하는 대로 지정합니다. 여기서 'scale'은 다음과 같습니다.

  • 'none' - 스케일링을 적용하지 않을 경우(디폴트 값)

  • 'inf' - 무한대 노름 스케일링을 적용할 경우

  • 'two' - 2-노름 스케일링을 적용할 경우

무한대 노름 스케일링을 up 정렬과 함께 사용하면 구현에서 오버플로가 발생할 가능성이 최소화됩니다. 2-노름 스케일링을 down 정렬과 함께 사용하면 피크 반올림 잡음이 최소화됩니다.

참고

무한 노름 스케일링과 2-노름 스케일링은 Direct-Form II 구현에만 적합합니다.

sos = tf2sos(...)는 전체 시스템 이득 g를 첫 번째 섹션 H1(z)에 포함합니다. 따라서 그 형태는 다음과 같습니다.

H(z)=k=1LHk(z)

참고

Direct-Form II 구조를 스케일링할 때 이득을 첫 번째 섹션에 포함시키는 것은 권장되지 않으며 그럴 경우 스케일링 결과가 올바르지 않을 수 있습니다. 이득이 포함되지 않도록 하려면 두 개의 출력값과 함께 ss2sos를 사용하십시오.

예제

모두 축소

함수 butter를 사용하여 버터워스 4차 저역통과 필터를 설계합니다. 차단 주파수를 나이퀴스트 주파수의 절반으로 지정합니다. 필터를 2차섹션형(SOS)으로 구현합니다. 분자와 분모를 비교하여 두 구현이 동일한지 확인합니다.

[nm,dn] = butter(4,0.5);
[ss,gn] = tf2sos(nm,dn);
numers = [conv(ss(1,1:3),ss(2,1:3))*gn;nm]
numers = 2×5

    0.0940    0.3759    0.5639    0.3759    0.0940
    0.0940    0.3759    0.5639    0.3759    0.0940

denoms = [conv(ss(1,4:6),ss(2,4:6))   ;dn]
denoms = 2×5

    1.0000    0.0000    0.4860    0.0000    0.0177
    1.0000    0.0000    0.4860    0.0000    0.0177

알고리즘

tf2sos는 입력된 전달 함수 시스템을 2차섹션형(SOS)으로 표현하기 위해 다음과 같은 4단계 알고리즘을 사용합니다.

  1. ba로 지정된 시스템의 극점과 영점을 구합니다.

  2. 함수 zp2sos를 사용합니다. 이 함수는 먼저 cplxpair 함수를 사용하여 영점과 극점을 켤레 복소수 쌍으로 그룹화합니다. 그런 다음 zp2sos는 다음 규칙에 따라 극점과 영점 쌍을 매핑하여 2차섹션형을 형성합니다.

    1. 단위원에 가장 가까이에 있는 극점과 그러한 극점에 가장 가까이에 있는 영점을 매핑합니다.

    2. 단위원에 그 다음으로 가장 가까이에 있는 극점과 그러한 극점에 가장 가까이에 있는 영점을 매핑합니다.

    3. 모든 극점과 영점을 매핑할 때까지 계속합니다.

    tf2sos는 절댓값이 서로 가장 근접한 실수 극점을 섹션으로 그룹화합니다. 이 규칙은 실수 영점에도 그대로 적용됩니다.

  3. 극점 쌍과 단위원의 근접도에 따라 섹션을 정렬합니다. 일반적으로 tf2sos는 단위원에 가장 가까이에 있는 극점을 종속 연결에서 마지막에 오도록 섹션을 정렬합니다. tf2sos가 그 반대의 순서로 섹션을 정렬하도록 하려면 'down' 플래그를 지정하면 됩니다.

  4. tf2sos'scale' 인수에 지정된 노름으로 섹션을 스케일링합니다. 임의 H(ω)의 경우 스케일링은 다음과 같이 정의됩니다.

    Hp=[12π02π|H(ω)|pdω]1/p

    여기서 p는 ∞ 또는 2일 수 있습니다. 스케일링에 대한 자세한 내용은 참고 문헌을 참조하십시오. 이 스케일링은 고정소수점 필터 구현에서 오버플로 또는 피크 반올림 잡음을 최소화하기 위해 시도한 것입니다.

참고 문헌

[1] Jackson, L. B. Digital Filters and Signal Processing. 3rd ed. Boston: Kluwer Academic Publishers, 1996, chap. 11.

[2] Mitra, S. K. Digital Signal Processing: A Computer-Based Approach. New York: McGraw-Hill, 1998, chap. 9.

[3] Vaidyanathan, P. P. “Robust Digital Filter Structures.” Handbook for Digital Signal Processing (S. K. Mitra and J. F. Kaiser, eds.). New York: John Wiley & Sons, 1993, chap. 7.

참고 항목

| | | | | |

R2006a 이전에 개발됨