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

bilinear

아날로그에서 디지털로의 필터 변환을 위한 쌍선형 변환 방법

설명

[zd,pd,kd] = bilinear(z,p,k,fs)z, p, k와 샘플 레이트 fs로 지정된 극점-영점 형식의 s 영역 전달 함수를 이에 상응하는 이산 함수로 변환합니다.

[numd,dend] = bilinear(num,den,fs)는 분자 num과 분모 den으로 지정된 s 영역 전달 함수를 이에 상응하는 이산 함수로 변환합니다.

예제

[Ad,Bd,Cd,Dd] = bilinear(A,B,C,D,fs)A, B, C, D 행렬로 표현된 연속시간 상태공간 시스템을 이산시간 시스템으로 변환합니다.

예제

[___] = bilinear(___,fp)는 파라미터 fp를 "일치" 주파수로 사용하여 사전굽힘(Prewarping)을 지정합니다.

예제

모두 축소

3dB의 통과대역 리플을 갖는 10차 체비쇼프 유형 I 대역통과 필터의 프로토타입을 설계합니다. 프로토타입을 상태공간 형식으로 변환합니다.

[z,p,k] = cheb1ap(10,3);
[A,B,C,D] = zp2ss(z,p,k);  

lp2bp에 사용할 수 있도록, 샘플 레이트 fs=2kHz, 사전 굽힘이 적용된 대역 경계 u1u2(단위: rad/s), 대역폭 Bw=u2-u1, 중심 주파수 Wo=u1u2인 아날로그 필터를 만듭니다. 통과대역 경계 주파수를 100Hz와 500Hz로 지정합니다.

Fs = 2e3;
u1 = 2*Fs*tan(100*(2*pi/Fs)/2);   
u2 = 2*Fs*tan(500*(2*pi/Fs)/2); 
Bw = u2 - u1;                     
Wo = sqrt(u1*u2);                 
[At,Bt,Ct,Dt] = lp2bp(A,B,C,D,Wo,Bw);
[b,a] = ss2tf(At,Bt,Ct,Dt);        

freqs를 사용하여 아날로그 필터의 주파수 응답을 계산합니다. 크기 응답과 사전 굽힘이 적용된 주파수 대역 경계를 플로팅합니다.

[h,w] = freqs(b,a);     
plot(w,mag2db(abs(h)))
hold on
ylim([-165 5])
[U1,U2] = meshgrid([u1 u2],ylim);
plot(U1,U2)
legend('Magnitude response','Lower Passband Edge','Upper Passband Edge')
hold off
xlabel('Angular Frequency (rad/s)')
ylabel('Magnitude (dB)')
grid

bilinear를 사용하여 샘플 레이트 fs, 하한 대역 경계 100Hz인 디지털 대역통과 필터를 만듭니다. ss2tf를 사용하여 디지털 필터를 상태공간 형식에서 전달 함수 형식으로 변환합니다.

[Ad,Bd,Cd,Dd] = bilinear(At,Bt,Ct,Dt,Fs);

[bz,az] = ss2tf(Ad,Bd,Cd,Dd);

fvtool을 사용하여 디지털 필터의 크기 응답을 플로팅합니다.

fvtool(bz,az,'Fs',Fs)

3dB의 통과대역 리플과 90dB의 저지대역 감쇠량을 갖는 6차 타원 아날로그 저역통과 필터를 설계합니다. 차단 주파수를 fc=20Hz로, 샘플 레이트를 fs=200Hz로 설정합니다.

clear
Fc = 20;
Fs = 200;                             
[z,p,k] = ellip(6,3,90,2*pi*Fc,'s');
[num,den] = zp2tf(z,p,k);

아날로그 타원 필터의 크기 응답을 계산합니다. 아날로그 필터를 시각화합니다.

[h,w] = freqs(num,den);
plot(w/(2*pi),mag2db(abs(h)))
hold on
xlim([0 50])
[l1,l2] = meshgrid(Fc,[-120 0]);
plot(l1,l2)
grid
legend('Magnitude response','Passband Edge')
xlabel('Frequency (Hz)')
ylabel('Magnitude (dB)')

bilinear를 사용하여 이를 이산시간 IIR 필터로 변환합니다. 일치 주파수를 fp=20Hz로 설정합니다.

[numd,dend] = bilinear(num,den,Fs,20);

fvtool을 사용하여 필터를 시각화합니다.

fvtool(numd,dend,'Fs',Fs)                     

입력 인수

모두 축소

s 영역 전달 함수의 영점으로, 열 벡터로 지정됩니다.

s 영역 전달 함수의 극점으로, 열 벡터로 지정됩니다.

s 영역 전달 함수의 이득으로, 스칼라로 지정됩니다.

샘플 레이트로, 양의 스칼라로 지정됩니다.

아날로그 전달 함수의 분자 계수로, 행 벡터로 지정됩니다.

아날로그 전달 함수의 분모 계수로, 행 벡터로 지정됩니다.

s 영역에 있는 상태 행렬로, 행렬로 지정됩니다. 시스템이 p개 입력값과 q개 출력값을 갖고 n개 상태 변수로 설명될 경우 A는 nxn입니다.

데이터형: single | double

s 영역에 있는 입력-상태 행렬로, 행렬로 지정됩니다. 시스템이 p개 입력값과 q개 출력값을 갖고 n개 상태 변수로 설명될 경우 B는 nxp입니다.

데이터형: single | double

s 영역에 있는 상태-출력 행렬로, 행렬로 지정됩니다. 시스템이 p개 입력값과 q개 출력값을 갖고 n개 상태 변수로 설명될 경우 C는 qxn입니다.

데이터형: single | double

s 영역에 있는 피드스루 행렬로, 행렬로 지정됩니다. 시스템이 p개 입력값과 q개 출력값을 갖고 n개 상태 변수로 설명될 경우 D는 qxp입니다.

데이터형: single | double

일치 주파수로, 양의 스칼라로 지정됩니다.

출력 인수

모두 축소

z 영역 전달 함수의 영점으로, 열 벡터로 지정됩니다.

z 영역 전달 함수의 극점으로, 열 벡터로 지정됩니다.

z 영역 전달 함수의 이득으로, 스칼라로 지정됩니다.

디지털 전달 함수의 분자 계수로, 행 벡터로 지정됩니다.

디지털 전달 함수의 분모 계수로, 행 벡터로 지정됩니다.

z 영역에 있는 상태 행렬로, 행렬로 반환됩니다. 시스템이 n개 상태 변수로 설명될 경우 Ad는 nxn입니다.

데이터형: single | double

z 영역에 있는 입력-상태 행렬로, 행렬로 반환됩니다. 시스템이 n개 상태 변수로 설명될 경우 Bd는 nx1입니다.

데이터형: single | double

z 영역에 있는 상태-출력 행렬로, 행렬로 반환됩니다. 시스템이 q개 출력값을 갖고 n개 상태 변수로 설명될 경우 Cd는 qxn입니다.

데이터형: single | double

z 영역에 있는 피드스루 행렬로, 행렬로 반환됩니다. 시스템이 q개 출력값을 가질 경우 Dd는 qx1입니다.

데이터형: single | double

진단

bilinear에서는 분자 차수가 분모 차수보다 크지 않아야 합니다. 그렇지 않을 경우 bilinear가 다음 메시지를 표시합니다.

Numerator cannot be higher order than denominator.

bilinear가 영점-극점-이점 선형 시스템 형식과 전달 함수 선형 시스템 형식을 구분할 수 있도록, 이러한 경우 처음 두 개의 입력 파라미터가 방향이 동일한 벡터여야 합니다. 그렇지 않을 경우 bilinear가 다음 메시지를 표시합니다.

First two arguments must have the same orientation.

알고리즘

모두 축소

쌍선형 변환은 변수에 대한 수학적 매핑입니다. 디지털 필터링에서 이는 아날로그 평면 s를 디지털 평면 z에 매핑하는 표준 방법입니다. 이는 고전적인 필터 설계 기법을 사용하여 설계된 아날로그 필터를 이에 상응하는 이산 필터로 변환합니다.

쌍선형 변환은 다음과 같이 s 평면을 z 평면에 매핑합니다.

H(z)=H(s)|s=2fsz1z+1.

이 변환은 다음과 같이 jΩ 축(범위: Ω= –∞ ~ +∞)을 단위원(ejw, 범위: ω = –π ~ π) 주위에 반복해서 매핑합니다.

ω=2tan1(Ω2fs).

bilinear는 사전 굽힘(Prewarping)을 지정하는 옵션 파라미터 Fp를 받을 수 있습니다. fp(단위: 헤르츠)는 매핑 전의 주파수 응답과 매핑 후의 주파수 응답에 정확히 일치하는 주파수인 “일치” 주파수를 나타냅니다. 사전 굽힘이 적용된 모드에서 쌍선형 변환은 다음을 사용하여 s 평면을 z 평면에 매핑합니다.

H(z)=H(s)|s=2πfptan(πfpfs)z1z+1.

사전 굽힘 옵션을 사용하면 bilinear가 다음과 같이 jΩ 축(범위: Ω = –∞ ~ +∞)을 단위원(e, 범위: ω = –π ~ π) 주위에 반복해서 매핑합니다.

ω=2tan1(Ωtan(πfpfs)2πfp).

사전 굽힘이 적용된 모드에서 bilinear는 s 평면의 주파수 2πfp(단위: 초당 라디안)를 z 평면의 정규화 주파수 2πfp/fs(단위 초당 라디안)와 일치시킵니다.

bilinear 함수는 영점-극점-이득 형식, 전달 함수 형식, 상태공간 형식 등 세 가지 각기 다른 선형 시스템 표현에 대해 사용할 수 있습니다.

bilinear는 사용자가 제공하는 입력 선형 시스템의 형식에 따라 두 알고리즘 중 하나를 사용합니다. 한 알고리즘은 영점-극점-이득 형식에서 작동하고 다른 알고리즘은 상태공간 형식에서 작동합니다. 전달 함수 표현에 대해 bilinear는 이를 상태공간 형식으로 전환하고, 변환을 수행한 후 결과로 생성된 상태공간 시스템을 다시 전달 함수 형식으로 전환합니다.

영점-극점-이득 알고리즘

영점-극점-이득 형식의 시스템에 대해 bilinear는 다음 4단계를 수행합니다.

  1. fp가 존재하는 경우 다음과 같이 사전 굽힘을 수행합니다.

    fp = 2*pi*fp;
    fs = fp/tan(fp/fs/2)
    

    그렇지 않으면 fs = 2*fs입니다.

  2. 다음을 사용하여 ±∞에서 모든 영점을 제거합니다.

    z = z(finite(z));
    
  3. 다음을 사용하여 영점, 극점, 이득을 변환합니다.

    pd = (1+p/fs)./(1-p/fs);    % Do bilinear transformation
    zd = (1+z/fs)./(1-z/fs);
    kd = real(k*prod(fs-z)./prod(fs-p));
    
  4. -1에 영점을 추가하여 결과로 생성되는 시스템이 이에 상응하는 분자 차수와 분모 차수를 갖도록 합니다.

상태공간 알고리즘

상태공간 형식의 아날로그 시스템은 다음과 같이 표현됩니다.

x˙=Ax+Buy=Cx+Du

. 이 시스템은 다음과 같이 상태공간 방정식을 사용하여 이산 형식으로 변환됩니다.

x[n+1]=Adx[n]+Bdu[n],y[n]     =Cdx[n]+Ddu[n].

상태공간 형식의 아날로그 시스템을 변환하기 위해 bilinear는 다음 2단계를 수행합니다.

  1. fp가 존재할 경우

    λ=πfptan(πfp/fs).

    이고, fp가 존재하지 않을 경우 λ=fs입니다.

  2. 다음을 사용하여 A, B, C, DAd, Bd, Cd, Dd를 계산합니다.

    Ad=(IA12λ)1(I+A12λ),Bd=1λ(IA12λ)1B,Cd=1λC(IA12λ)1,Dd=12λC(IA12λ)1B+D.

전달 함수

전달 함수 형식의 시스템에 대해 bilinearnumden으로 주어진 s 영역 전달 함수를 이에 상응하는 이산 함수로 변환합니다. 행 벡터 numden은 각각s의 지수 내림차순으로 분자와 분모의 계수를 지정합니다. B(s)를 분자 다항식으로 지정하고 A(s)를 분모 다항식으로 지정합니다. 전달 함수는 다음과 같습니다.

B(s)A(s)=B(1)sn++B(n)s+B(n+1)A(1)sm++A(m)s+A(m+1)

fs는 헤르츠 단위의 샘플 레이트입니다. bilinear는 상응하는 이산함수를 z의 지수 내림차순(z–1의 지수 오름차순)으로 정렬된 행 벡터 numddend로 반환합니다. fp는 선택 사항이며 사전 굽힘에 사용되는 헤르츠 단위의 일치 주파수입니다.

참고 문헌

[1] Parks, Thomas W., and C. Sidney Burrus. Digital Filter Design. New York: John Wiley & Sons, 1987, pp. 209–213.

[2] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice Hall, 1999, pp. 450–454.

참고 항목

| | | |

R2006a 이전에 개발됨