Main Content

tf2sos

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

설명

예제

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

[sos,g] = tf2sos(b,a,order)sos의 행 순서를 지정합니다.

[sos,g] = tf2sos(b,a,order,scale)은 모든 2차섹션형의 이득과 분자 계수에 대한 스케일링을 지정합니다.

sos = tf2sos(___)는 전체 시스템 이득을 첫 번째 섹션에 포함합니다.

예제

모두 축소

함수 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

1차원의 이산시간 진동 시스템은 단위 탄성 상수를 갖는 스프링으로 벽에 연결된 단위 질량 m으로 구성됩니다. 센서가 질량의 가속도 aFs=5Hz로 샘플링합니다.

50개의 시간 샘플을 생성합니다. 샘플링 간격을 Δt=1/Fs로 정의합니다.

Fs = 5;
dt = 1/Fs;
N = 50;
t = dt*(0:N-1);
u = [1 zeros(1,N-1)];

시스템의 전달 함수는 다음과 같은 해석적 표현을 갖습니다.

H(z)=1-z-1(1+cosΔt)+z-2cosΔt1-2z-1cosΔt+z-2.

시스템에 양의 방향으로 단위 임펄스를 가합니다. 전달 함수를 사용하여 시스템의 시간 변화를 계산합니다. 응답을 플로팅합니다.

bf = [1 -(1+cos(dt)) cos(dt)];
af = [1 -2*cos(dt) 1];
yf = filter(bf,af,u);
stem(t,yf,'o')
xlabel('t')

Figure contains an axes object. The axes object with xlabel t contains an object of type stem.

입력값을 필터링하기 위해 전달 함수의 2차섹션형(SOS) 표현을 사용해 시간 종속 가속도를 계산합니다. 결과를 플로팅합니다. 두 경우 모두 결과가 동일합니다.

sos = tf2sos(bf,af);
yt = sosfilt(sos,u);
stem(t,yt,'filled')

Figure contains an axes object. The axes object contains an object of type stem.

입력 인수

모두 축소

전달 함수 계수로, 벡터로 지정됩니다. 이 전달 함수를 ba로 표현하면 다음과 같습니다.

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

예: b = [1 3 3 1]/6a = [3 0 1 0]/3은 0.5π rad/sample의 정규화된 3dB 주파수를 갖는 3차 버터워스 필터를 지정합니다.

데이터형: double

행 순서로, 다음 중 하나로 지정됩니다.

  • 'up'sos의 첫 번째 행이 단위원에서 가장 멀리 있는 극점을 포함하도록 섹션의 순서를 지정합니다.

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

데이터형: char

이득 및 분자 계수의 스케일링으로, 다음 중 하나로 지정됩니다.

  • 'none' — 스케일링을 적용하지 않습니다.

  • 'inf' — 무한대 노름 스케일링을 적용합니다.

  • 'two' — 2-노름 스케일링을 적용합니다.

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

참고

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

데이터형: char

출력 인수

모두 축소

2차섹션형(SOS) 표현으로, 행렬로 반환됩니다. sos는 L×6 행렬입니다.

sos=[b01b11b211a11a21b02b12b221a12a22b0Lb1Lb2L1a1La2L]

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

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

전체 시스템 이득으로, 실수형 스칼라로 반환됩니다.

1개의 출력 인수와 함께 tf2sos를 호출하면 함수는 전체 시스템 이득을 첫 번째 섹션 H1(z)에 포함합니다. 따라서 그 형태는 다음과 같습니다.

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

참고

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

알고리즘

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

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

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

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

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

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

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

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

  4. tf2sosscale에 지정된 노름으로 섹션을 스케일링합니다. 임의의 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.

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

[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.

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

| | | | | |