주요 콘텐츠

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

impz

디지털 필터의 임펄스 응답

설명

[h,t] = impz(b,a)는 지정된 디지털 필터의 임펄스 응답을 반환합니다. 분자 계수 b와 분모 계수 a를 갖는 디지털 필터를 지정합니다. 이 함수는 샘플의 개수를 선택하고 응답 계수를 h에, 샘플 시간을 t에 반환합니다.

예제

[h,t] = impz(B,A,"ctf")는 분자 계수 B와 분모 계수 A를 갖는 Cascaded Transfer Functions(CTF)로 표현되는 디지털 필터의 임펄스 응답을 반환합니다. (R2024b 이후)

예제

[h,t] = impz({B,A,g},"ctf")는 디지털 필터의 임펄스 응답을 CTF 형식으로 반환합니다. 분자 계수 B, 분모 계수 A, 필터 섹션의 스케일링 값 g를 갖는 필터를 지정합니다. (R2024b 이후)

예제

[h,t] = impz(d)는 디지털 필터 d의 임펄스 응답을 반환합니다. designfilt를 사용하여 주파수-응답 사양을 기반으로 d를 생성합니다.

예제

[h,t] = impz(sos)는 2차섹션형(SOS) 행렬 sos로 지정된 필터의 임펄스 응답을 반환합니다.

[h,t] = impz(___,n)은 계산할 임펄스-응답 샘플을 지정합니다. 위에 열거된 구문 중 하나를 사용하여 필터를 지정할 수 있습니다.

예제

[h,t] = impz(___,n,fs)는 간격이 1/fs 단위인 연속 샘플로 구성된 벡터 t를 반환합니다.

예제

impz(___)에 출력 인수를 지정하지 않으면 필터의 임펄스 응답을 플로팅합니다.

예제

예제

모두 축소

정규화된 통과대역 주파수 0.4 rad/sample을 갖는 4차 저역통과 타원 필터를 설계합니다. 통과대역 리플을 0.5dB로 지정하고 저지대역 감쇠량을 20dB로 지정합니다. 임펄스 응답의 처음 50개 샘플을 플로팅합니다.

[b,a] = ellip(4,0.5,20,0.4);
impz(b,a,50)

Figure contains an axes object. The axes object with title Impulse Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

designfilt를 사용하여 동일한 필터를 설계합니다. 이 필터에 대한 임펄스 응답의 처음 50개 샘플을 플로팅합니다.

d = designfilt('lowpassiir','DesignMethod','ellip','FilterOrder',4, ...
               'PassbandFrequency',0.4, ...
               'PassbandRipple',0.5,'StopbandAttenuation',20);
p = impz(d,50);
stem(p,"Filled")

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

β=4인 카이저 윈도우를 사용하여 차수가 18인 FIR 고역통과 필터를 설계합니다. 샘플 레이트를 100Hz, 차단 주파수를 30Hz로 지정합니다. 필터의 임펄스 응답을 표시합니다.

b = fir1(18,30/(100/2),'high',kaiser(19,4));
impz(b,1,[],100)

Figure contains an axes object. The axes object with title Impulse Response, xlabel nT (ms), ylabel Amplitude contains an object of type stem.

designfilt를 사용하여 동일한 필터를 설계하고 필터의 임펄스 응답을 플로팅합니다.

d = designfilt('highpassfir','FilterOrder',18,'SampleRate',100, ...
               'CutoffFrequency',30,'Window',{'kaiser',4});
[p,t] = impz(d,[],100);
stem(t,p,"filled")

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

R2024b 이후

저지대역 경계 주파수가 0.4이고 저지대역 감쇠량이 50dB인 40차 저역통과 체비쇼프 유형 II 디지털 필터를 설계합니다. CTF 형식의 필터 계수를 사용하여 필터 임펄스 응답의 처음 64개 샘플을 플로팅합니다.

[B,A] = cheby2(40,50,0.4,"ctf");

impz(B,A,"ctf",64)

Figure contains an axes object. The axes object with title Impulse Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

통과대역 경계 주파수가 0.3 및 0.7이고 통과대역 리플이 0.1dB이며 저지대역 감쇠량이 50dB인 30차 대역통과 타원 디지털 필터를 설계합니다. CTF 형식의 필터 계수와 이득을 사용하여 필터 임펄스 응답의 처음 64개 샘플을 플로팅합니다.

[B,A,g] = ellip(30,0.1,50,[0.3 0.7],"ctf");
impz({B,A,g},"ctf",64)

Figure contains an axes object. The axes object with title Impulse Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

입력 인수

모두 축소

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

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

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

데이터형: double | single
복소수 지원 여부:

R2024b 이후

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

B의 크기는 L×(m + 1)이어야 하고 A의 크기는 L×(n + 1)이어야 합니다. 여기서,

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

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

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

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

참고

A(:,1)의 요소 중 하나라도 1과 같지 않으면 impz 함수는 필터 계수를 A(:,1)로 정규화합니다. 이 경우 A(:,1)은 0이 아니어야 합니다.

데이터형: double | single
복소수 지원 여부:

R2024b 이후

스케일 값으로, 실수 값 스칼라 또는 L + 1개의 요소를 가진 실수 값 벡터로 지정됩니다. 여기서 L은 CTF 섹션의 개수입니다. 스케일 값은 종속 연결 필터 표현의 섹션에 걸친 필터 이득의 분포를 나타냅니다.

impz 함수는 g를 지정하는 방법에 따라 scaleFilterSections 함수를 사용하여 필터 섹션에 이득을 적용합니다.

  • 스칼라 — 함수는 모든 필터 섹션에 걸쳐 이득을 균일하게 분배합니다.

  • 벡터 — 함수는 처음 L개의 이득 값을 해당 필터 섹션에 적용하고 마지막 이득 값을 모든 필터 섹션에 균일하게 분배합니다.

데이터형: double | single

디지털 필터로, digitalFilter 객체로 지정됩니다. designfilt를 사용하여 주파수 응답 사양을 기반으로 하여 디지털 필터를 생성합니다.

예: d = designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.5)는 0.5π rad/sample의 정규화된 3dB 주파수를 갖는 3차 버터워스 필터를 지정합니다.

2차섹션형 계수로, 행렬로 지정됩니다. sosK×6 행렬이며, 여기서 섹션 개수 K는 2보다 크거나 같아야 합니다. 섹션 개수가 2보다 작으면 함수는 입력값을 분자 벡터로 간주합니다. sos의 각 행은 2차(바이쿼드) 필터의 계수에 대응됩니다. sosi번째 행은 [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)]에 대응됩니다.

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

데이터형: double | single
복소수 지원 여부:

응답을 계산할 지점 개수로, 양의 정수, 음이 아닌 정수로 구성된 벡터 또는 빈 벡터로 지정됩니다.

  • n이 양의 정수인 경우 impz는 임펄스 응답의 처음 n개 샘플을 계산하고 t(0:n-1)'로 반환합니다.

  • n이 음이 아닌 정수로 구성된 벡터인 경우 impz는 벡터에 지정된 위치에서 임펄스 응답을 계산합니다.

  • n이 빈 벡터인 경우 impz는 샘플 개수를 자동으로 계산합니다. 자세한 내용은 알고리즘 항목을 참조하십시오.

예: impz([2 4 2 6 0 2;3 3 0 6 0 0],5)는 버터워스 필터의 임펄스 응답의 처음 5개 샘플을 계산합니다.

예: impz([2 4 2 6 0 2;3 3 0 6 0 0],[0 3 2 1 4 5])는 버터워스 필터의 임펄스 응답의 처음 6개 샘플을 계산합니다.

예: impz([2 4 2 6 0 2;3 3 0 6 0 0],[],5e3)은 5kHz로 샘플링된 신호를 필터링하도록 설계된 버터워스 필터의 임펄스 응답을 계산합니다.

샘플 레이트로, 양의 스칼라로 지정됩니다. 시간 단위가 초이면 fs는 헤르츠로 표현됩니다.

데이터형: double

출력 인수

모두 축소

임펄스 응답 계수로, 열 벡터로 반환됩니다.

샘플 시간으로, 열 벡터로 반환됩니다.

세부 정보

모두 축소

  • 스케일링 이득을 포함한 CTF 형식의 필터를 구할 수 있습니다. butter, cheby1, cheby2, ellip와 같은 디지털 IIR 필터 설계 함수의 출력값을 사용하십시오. 이들 함수에서 "ctf" 필터 유형 인수를 지정하고 B, A, g를 반환하도록 지정하여 스케일 값을 구합니다. (R2024b 이후)

알고리즘

impz는 다음을 사용하여 길이가 n인 임펄스 시퀀스에 필터를 적용합니다.

filter(b,a,[1 zeros(1,n-1)])

그리고 stem을 사용하여 결과를 플로팅합니다.

참고

impz에 대한 입력값이 단정밀도인 경우 함수는 단정밀도 연산방식을 사용하여 임펄스 응답을 계산하고 단정밀도 출력값을 반환합니다.

impzn을 자동으로 계산하는 경우 알고리즘은 필터의 속성에 따라 달라집니다.

  • FIR 필터 — nb의 길이입니다.

  • IIR 필터 — impz는 먼저 roots를 사용하여 전달 함수의 극점을 구합니다.

    • 필터가 불안정한 경우, 가장 큰 극점에 해당하는 항이 원래 값의 106배가 되는 지점으로 n이 선택됩니다.

    • 필터가 안정적인 경우, 진폭이 가장 큰 극점에 해당하는 항이 원래 진폭의 5 × 10–5배가 되는 지점으로 n이 선택됩니다.

    • 필터가 단위원에만 극점이 있는 진동인 경우, impz는 가장 느린 진동의 5개 주기를 계산합니다.

    • 진동하는 항과 감쇠하는 항을 둘 다 가진 필터의 경우, 가장 느린 진동의 5개 주기를 갖는 지점과 가장 큰 극점에 해당하는 항이 원래 진폭의 5 × 10–5배가 되는 지점 중 더 큰 값으로 n이 선택됩니다.

또한, impz는 분자 다항식에서 지연을 허용합니다. 지연 개수는 샘플 개수의 계산에 포함되어 있습니다.

참고 문헌

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

확장 기능

모두 확장

버전 내역

R2006a 이전에 개발됨

모두 확장

참고 항목

함수