Main Content

impz

디지털 필터의 임펄스 응답

설명

예제

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

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

예제

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

예제

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

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

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

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

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

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

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

입력 인수

모두 축소

전달 함수 계수로, 벡터로 지정됩니다. 이 전달 함수를 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
복소수 지원 여부:

2차섹션형 계수로, 행렬로 지정됩니다. sos는 K×6 행렬이며, 여기서 섹션 개수 K는 2보다 크거나 같아야 합니다. 섹션 개수가 2보다 작으면 함수는 입력값을 분자 벡터로 간주합니다. sos의 각 행은 2차(바이쿼드) 필터의 계수에 대응됩니다. sos의 i번째 행은 [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
복소수 지원 여부:

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

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

샘플 번호로, 양의 정수, 음이 아닌 정수로 구성된 벡터 또는 빈 벡터로 지정됩니다.

  • 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

출력 인수

모두 축소

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

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

알고리즘

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는 분자 다항식에서 지연을 허용합니다. 지연 개수는 샘플 개수의 계산에 포함되어 있습니다.

확장 기능

버전 내역

R2006a 이전에 개발됨

모두 확장

참고 항목

함수