주요 콘텐츠

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

cheby1

체비쇼프 유형 I 필터 설계

설명

[b,a] = cheby1(n,Rp,Wp)는 정규화된 통과대역 경계 주파수 WpRp(단위: 데시벨)의 피크 간 통과대역 리플을 갖는 n차 저역통과 디지털 체비쇼프 유형 I 필터를 설계합니다. cheby1 함수는 필터 전달 함수의 분자 및 분모 계수를 반환합니다.

예제

[b,a] = cheby1(n,Rp,Wp,fType)fType의 값과 Wp의 요소 개수에 따라 저역통과, 고역통과, 대역통과 또는 대역저지 디지털 체비쇼프 유형 I 필터를 설계합니다. 결과로 생성되는 대역통과 설계와 대역저지 설계는 차수가 2n입니다.

참고

전달 함수의 차수가 4 정도로 낮은 IIR 필터를 설계하는 경우 수치적 불안정성이 발생할 수 있습니다. 전달 함수를 구성하는 데 영향을 미치는 수치적 문제에 대한 자세한 내용은 전달 함수 및 CTF 항목을 참조하십시오.

예제

[z,p,k] = cheby1(___)은 디지털 체비쇼프 유형 I 필터를 설계하고 이 필터의 영점, 극점, 이득을 반환합니다. 이 구문은 위에 열거한 구문에 있는 어떤 입력 인수도 포함할 수 있습니다.

예제

[A,B,C,D] = cheby1(___)은 디지털 체비쇼프 유형 I 필터를 설계하고 이 필터의 상태공간 표현을 지정하는 행렬을 반환합니다.

예제

[___] = cheby1(___,"s")는 위에 열거된 구문의 입력 인수 또는 출력 인수를 사용하여 아날로그 체비쇼프 유형 I 필터를 설계합니다.

예제

[B,A] = cheby1(n,Rp,Wp,"ctf")는 2차 종속 연결 전달 함수(CTF)를 사용하여 저역통과 디지털 체비쇼프 유형 I 필터를 설계합니다. 이 함수는 필터 전달 함수의 분모 다항식 계수와 분자 다항식 계수를 나열하는 행렬을 반환하며, 이는 필터 섹션의 종속 연결로 표현됩니다. 이 방식은 단일 섹션형 전달 함수에 비해 수치적 안정성이 향상된 IIR 필터를 생성합니다. (R2024b 이후)

예제

[___] = cheby1(n,Rp,Wp,fType,"ctf")는 저역통과, 고역통과, 대역통과 또는 대역저지 디지털 체비쇼프 유형 I 필터를 설계하고 CTF 형식을 사용하여 필터 표현을 반환합니다. 결과로 생성된 설계 섹션은 2차(저역통과 및 고역통과 필터) 또는 4차(대역통과 및 대역저지 필터)입니다. (R2024b 이후)

[___,gS] = cheby1(___)은 시스템의 전체 이득도 반환합니다. gS를 반환하려면 "ctf"를 지정해야 합니다. (R2024b 이후)

예제

모두 축소

10dB의 통과대역 리플과, 1000Hz로 샘플링된 데이터에 대해 0.6π rad/sample에 해당하는 수치인 300Hz의 통과대역 경계 주파수를 갖는 6차 저역통과 체비쇼프 유형 I 필터를 설계합니다. 필터의 크기 응답과 위상 응답을 플로팅합니다. 이를 사용하여 1000개 샘플로 구성된 랜덤 신호를 필터링합니다.

fc = 300;
fs = 1000;

[b,a] = cheby1(6,10,fc/(fs/2));

freqz(b,a,[],fs)

subplot(2,1,1)
ylim([-100 20])

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Frequency (Hz), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Frequency (Hz), ylabel Magnitude (dB) contains an object of type line.

dataIn = randn(1000,1);
dataOut = filter(b,a,dataIn);

0.2π rad/sample 및 0.6π rad/sample의 정규화된 경계 주파수와 5dB의 통과대역 리플을 갖는 6차 체비쇼프 유형 I 대역저지 필터를 설계합니다. 필터의 크기 응답과 위상 응답을 플로팅합니다. 이를 사용하여 랜덤 데이터를 필터링합니다.

[b,a] = cheby1(3,5,[0.2 0.6],'stop');
freqz(b,a)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Magnitude (dB) contains an object of type line.

dataIn = randn(1000,1);
dataOut = filter(b,a,dataIn);

0.5dB의 통과대역 리플과, 1000Hz로 샘플링된 데이터에 대해 0.6π rad/sample에 해당하는 수치인 300Hz의 통과대역 경계 주파수를 갖는 9차 고역통과 체비쇼프 유형 I 필터를 설계합니다. 영점, 극점, 이득을 2차섹션형(SOS)으로 변환합니다. 필터의 크기 응답과 위상 응답을 플로팅합니다.

[z,p,k] = cheby1(9,0.5,300/500,'high');
sos = zp2sos(z,p,k);
freqz(sos)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Magnitude (dB) contains an object of type line.

400Hz의 저역 통과대역 주파수와 560Hz의 고역 통과대역 주파수를 갖는 20차 체비쇼프 유형 I 대역통과 필터를 설계합니다. 3dB의 통과대역 리플과 1500Hz의 샘플 레이트를 지정합니다. 상태공간 표현을 사용합니다.

fs = 1500;

[A,B,C,D] = cheby1(10,3,[400 560]/(fs/2));

상태공간 표현을 2차섹션형(SOS)으로 변환하고 필터 응답을 시각화합니다.

sos = ss2sos(A,B,C,D);
freqz(sos,[],fs)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Frequency (Hz), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Frequency (Hz), ylabel Magnitude (dB) contains an object of type line.

designfilt를 사용하여 동일한 필터를 설계합니다. 필터 응답을 시각화합니다.

d = designfilt("bandpassiir",FilterOrder=20, ...
    PassbandFrequency1=400,PassbandFrequency2=560, ...
    PassbandRipple=3,SampleRate=fs);
freqz(d,[],fs)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Frequency (Hz), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Frequency (Hz), ylabel Magnitude (dB) contains an object of type line.

2GHz의 차단 주파수를 갖는 5차 아날로그 버터워스 저역통과 필터를 설계합니다. 2π를 곱하여 주파수를 초당 라디안 값으로 변환합니다. 4096개 점에서 필터의 주파수 응답을 계산합니다.

n = 5;
wc = 2*pi*2e9;
w = 2*pi*1e9*logspace(-2,1,4096)';

[zb,pb,kb] = butter(n,wc,"s");
[bb,ab] = zp2tf(zb,pb,kb);
[hb,wb] = freqs(bb,ab,w);
gdb = -diff(unwrap(angle(hb)))./diff(wb);

동일한 경계 주파수와 3dB의 통과대역 리플을 갖는 5차 체비쇼프 유형 I 필터를 설계합니다. 필터의 주파수 응답을 계산합니다.

[z1,p1,k1] = cheby1(n,3,wc,"s");
[b1,a1] = zp2tf(z1,p1,k1);
[h1,w1] = freqs(b1,a1,w);
gd1 = -diff(unwrap(angle(h1)))./diff(w1);

동일한 경계 주파수와 30dB의 저지대역 감쇠량을 갖는 5차 체비쇼프 유형 II 필터를 설계합니다. 필터의 주파수 응답을 계산합니다.

[z2,p2,k2] = cheby2(n,30,wc,"s");
[b2,a2] = zp2tf(z2,p2,k2);
[h2,w2] = freqs(b2,a2,w);
gd2 = -diff(unwrap(angle(h2)))./diff(w2);

동일한 경계 주파수, 3dB의 통과대역 리플, 30dB의 저지대역 감쇠량을 갖는 5차 타원 필터를 설계합니다. 필터의 주파수 응답을 계산합니다.

[ze,pe,ke] = ellip(n,3,30,wc,"s");
[be,ae] = zp2tf(ze,pe,ke);
[he,we] = freqs(be,ae,w);
gde = -diff(unwrap(angle(he)))./diff(we);

동일한 경계 주파수를 갖는 5차 베셀 필터를 설계합니다. 필터의 주파수 응답을 계산합니다.

[zf,pf,kf] = besself(n,wc);
[bf,af] = zp2tf(zf,pf,kf);
[hf,wf] = freqs(bf,af,w);
gdf = -diff(unwrap(angle(hf)))./diff(wf);

감쇠량(단위: 데시벨)을 플로팅합니다. 주파수를 기가헤르츠 단위로 표현합니다. 필터를 비교합니다.

fGHz = [wb w1 w2 we wf]/(2e9*pi);
plot(fGHz,mag2db(abs([hb h1 h2 he hf])))
axis([0 5 -45 5])
grid on
xlabel("Frequency (GHz)")
ylabel("Attenuation (dB)")
legend(["butter" "cheby1" "cheby2" "ellip" "besself"])

Figure contains an axes object. The axes object with xlabel Frequency (GHz), ylabel Attenuation (dB) contains 5 objects of type line. These objects represent butter, cheby1, cheby2, ellip, besself.

샘플의 군지연을 플로팅합니다. 주파수를 기가헤르츠 단위로, 군지연을 나노초 단위로 표현합니다. 필터를 비교합니다.

gdns = [gdb gd1 gd2 gde gdf]*1e9;
gdns(gdns<0) = NaN;
loglog(fGHz(2:end,:),gdns)
grid on
xlabel("Frequency (GHz)")
ylabel("Group delay (ns)")
legend(["butter" "cheby1" "cheby2" "ellip" "besself"])

Figure contains an axes object. The axes object with xlabel Frequency (GHz), ylabel Group delay (ns) contains 5 objects of type line. These objects represent butter, cheby1, cheby2, ellip, besself.

버터워스 필터와 체비쇼프 유형 II 필터는 평탄한 통과대역과 넓은 천이 대역을 가집니다. 체비쇼프 유형 I 필터와 타원 필터는 더 빨리 롤오프되지만 통과대역 리플을 가집니다. 체비쇼프 유형 II 설계 함수에 대한 주파수 입력값은 통과대역의 끝값이 아니라 저지대역의 시작값을 설정합니다. 베셀 필터는 통과대역에서 거의 일정한 군지연을 가집니다.

차단 주파수가 300Hz이고 샘플링 레이트가 1000Hz인 9차 고역통과 체비쇼프 유형 I 필터를 설계합니다. 통과대역 리플은 5dB입니다. 필터 시스템의 계수를 2차 섹션형의 종속 연결로 반환합니다.

Wn = 300/(1000/2);
[B,A] = cheby1(9,5,Wn,"high","ctf")
B = 5×3

    0.1336   -0.1336         0
    0.1336   -0.2671    0.1336
    0.1336   -0.2671    0.1336
    0.1336   -0.2671    0.1336
    0.1336   -0.2671    0.1336

A = 5×3

    1.0000    0.9022         0
    1.0000    1.6117    0.8336
    1.0000    1.1993    0.8788
    1.0000    0.8296    0.9291
    1.0000    0.6335    0.9767

필터의 크기 응답을 플로팅합니다.

filterAnalyzer(B,A)

입력 인수

모두 축소

필터 차수로, 500보다 작거나 같은 정수 스칼라로 지정됩니다. 대역통과 및 대역저지 설계의 경우, n은 필터 차수의 절반을 나타냅니다.

데이터형: double

피크 간 통과대역 리플로, 양의 스칼라로 지정됩니다(단위: 데시벨).

사양 ℓ이 선형 단위인 경우 Rp = 40log10((1+ℓ)/(1–ℓ))을 사용하여 데시벨로 변환할 수 있습니다.

데이터형: double

통과대역 경계 주파수로, 스칼라나 요소를 2개 가진 벡터로 지정됩니다. 통과대역 경계 주파수는 필터의 크기 응답이 –Rp(단위:데시벨)인 주파수입니다. 통과대역 리플 Rp의 값이 작을수록 천이 대역의 폭이 넓어집니다.

  • Wp가 스칼라인 경우, cheby1은 경계 주파수 Wp를 갖는 저역통과 필터나 고역통과 필터를 설계합니다.

    Wp가 요소를 2개 가진 벡터 [w1 w2](여기서 w1 < w2)이면 cheby1은 하한 경계 주파수 w1과 상한 경계 주파수 w2를 갖는 대역통과 필터나 대역저지 필터를 설계합니다.

  • 디지털 필터의 경우, 통과대역 경계 주파수는 0과 1 사이에 있어야 합니다. 여기서 1은 샘플 레이트의 절반, 즉 π rad/sample인 나이퀴스트 레이트에 해당합니다.

    아날로그 필터의 경우, 통과대역 경계 주파수는 초당 라디안으로 표현되어야 하고 모든 양의 값을 받을 수 있습니다.

데이터형: double

필터 유형으로, 다음 중 하나로 지정됩니다.

  • "low"는 통과대역 경계 주파수 Wp를 갖는 저역통과 필터를 지정합니다. "low"는 스칼라 Wp의 디폴트 값입니다.

  • "high"는 통과대역 경계 주파수 Wp를 갖는 고역통과 필터를 지정합니다.

  • "bandpass"Wp가 요소를 2개 가진 벡터인 경우 차수가 2n인 대역통과 필터를 지정합니다. "bandpass"Wp가 2개의 요소를 가지는 경우 디폴트 값입니다.

  • "stop"Wp가 요소를 2개 가진 벡터인 경우 차수가 2n인 대역저지 필터를 지정합니다.

출력 인수

모두 축소

필터의 전달 함수 계수로, 행 벡터로 반환됩니다. 필터 차수 n이 주어지면, 함수는 r개의 샘플을 갖는 ba를 반환합니다. 여기서 저역통과 필터 및 고역통과 필터의 경우 r = n+1이고, 대역통과 필터 및 대역저지 필터의 경우 r = 2*n+1입니다.

전달 함수는 다음 중 하나와 같이 b = [b1 b2br]a = [a1 a2ar]로 표현됩니다.

  • 디지털 필터의 경우 H(z)=b1+b2z1++brz(r1)a1+a2z1++arz(r1).

  • 아날로그 필터의 경우 H(s)=b1sr1+b2sr2++bra1sr1+a2sr2++ar.

데이터형: double

필터의 영점, 극점, 이득으로, 두 개의 열 벡터와 하나의 스칼라로 반환됩니다. 필터 차수 n이 주어지면, 함수는 r개의 샘플을 갖는 zp를 반환합니다. 여기서 저역통과 필터 및 고역통과 필터의 경우 r = n이고, 대역통과 필터 및 대역저지 필터의 경우 r = 2*n입니다.

전달 함수는 다음 중 하나와 같이z = [z1 z2zr], p = [p1 p2pr], k로 표현됩니다.

  • 디지털 필터의 경우 H(z)=k(1z1z1)(1z2z1)(1zrz1)(1p1z1)(1p2z1)(1prz1).

  • 아날로그 필터의 경우 H(s)=k(sz1)(sz2)(szr)(sp1)(sp2)(spr).

데이터형: double

필터의 상태공간 표현으로, 행렬로 반환됩니다. 저역통과 설계와 고역통과 설계에 대해 r = n이고 대역통과 필터와 대역저지 필터에 대해 r = 2n이면 Ar × r, Br × 1, C는 1 × r, 그리고 D는 1 × 1입니다.

상태공간 행렬은 상태 벡터 x, 입력값 u, 출력값 y와 다음 연립방정식 중 하나와 같은 관계를 가집니다.

  • 디지털 필터의 경우:

    x(k+1)=Ax(k)+Bu(k)y(k)=Cx(k)+Du(k).

  • 아날로그 필터의 경우:

    x˙=Ax+Buy=Cx+Du.

데이터형: double

R2024b 이후

종속 연결 전달 함수(CTF) 계수로, 행 벡터 또는 행렬로 반환됩니다. BA는 각각 종속 연결 전달 함수의 분자 및 분모 계수를 나열합니다.

BA의 크기는 각각 L×(m+1) 및 L×(n+1)입니다. 이 함수는 A의 첫 번째 열을 1로 반환하므로 A가 행 벡터인 경우 A(1)=1입니다.

  • L은 필터 섹션의 개수를 나타냅니다.

  • m은 필터 분자의 차수를 나타냅니다.

  • n은 필터 분모의 차수를 나타냅니다.

cheby1 함수는 다음과 같은 차수 사양을 가진 CTF 계수를 반환합니다.

  • 저역통과 필터 및 고역통과 필터의 경우 m = n = 2.

  • 대역통과 필터 및 대역저지 필터의 경우 m = n = 4.

참고

CTF 계수에서 다른 차수를 설정하거나 이득 스케일링을 사용자 지정하려는 경우와 같이 CTF 계수 계산을 사용자 지정하려면, z,p,k를 반환하도록 지정한 다음 zp2ctf를 사용하여 B,A를 구하십시오.

종속 연결 전달 함수 형식과 계수 행렬에 대한 자세한 내용은 CTF 형식으로 디지털 필터 반환하기 항목을 참조하십시오.

R2024b 이후

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

  • gS를 반환하도록 지정하면 cheby1 함수는 분자 계수를 정규화하여 B의 첫 번째 열이 1이 되도록 하고 전체 시스템 이득을 gS로 반환합니다.

  • gS를 반환하도록 지정하지 않으면 cheby1 함수는 scaleFilterSections 함수를 사용하여 모든 시스템 섹션에 시스템 이득을 균일하게 분배합니다.

세부 정보

모두 축소

알고리즘

체비쇼프 유형 I 필터는 통과대역에서 등리플이고 저지대역에서 단조적입니다. 유형 I 필터는 유형 II 필터보다 더 빨리 롤오프되지만, 통과대역에서 단위 이득과의 편차가 더 큽니다.

cheby1은 다음 5단계의 알고리즘을 사용합니다.

  1. 함수 cheb1ap를 사용하여 저역통과 아날로그 프로토타입 극점, 영점, 이득을 구합니다.

  2. 극점, 영점, 이득을 상태공간 형식으로 변환합니다.

  3. 필요한 경우, 상태공간 변환을 사용하여 원하는 주파수 제약 조건을 갖는 고역통과 필터, 대역통과 필터 또는 대역저지 필터로 저역통과 필터를 변환합니다.

  4. 디지털 필터 설계의 경우, bilinear를 사용하여 주파수 사전 워핑을 사용한 쌍선형 변환을 통해 아날로그 필터를 디지털 필터로 변환합니다. 주파수를 세심하게 조정하여 아날로그 필터와 디지털 필터가 Wp 또는 w1w2에서 동일한 주파수 응답 크기를 가지도록 할 수 있습니다.

  5. 필요한 경우, 상태공간 필터를 다시 전달 함수나 영점-극점-이득 형식으로 변환합니다.

참고 문헌

[1] Lyons, Richard G. Understanding Digital Signal Processing. Upper Saddle River, NJ: Prentice Hall, 2004.

확장 기능

모두 확장

버전 내역

R2006a 이전에 개발됨

모두 확장