주요 콘텐츠

freqz

디지털 필터의 주파수 응답

설명

[h,w] = freqz(b,a,n)은 지정된 디지털 필터의 주파수 응답을 반환합니다. 분자 계수 b와 분모 계수 a를 갖는 디지털 필터를 지정합니다. 이 함수는 n개 점을 가진 주파수 응답 벡터를 h에 반환하고 이에 대응하는 각주파수 벡터 w를 반환합니다.

예제

[h,w] = freqz(B,A,"ctf",n)은 분자 계수 B와 분모 계수 A를 갖는 Cascaded Transfer Functions(CTF)로 표현되는 디지털 필터의 n개 점을 가진 주파수 응답을 반환합니다. (R2024b 이후)

예제

[h,w] = freqz({B,A,g},"ctf",n)은 디지털 필터의 n개 점을 가진 주파수 응답을 CTF 형식으로 반환합니다. 분자 계수 B, 분모 계수 A, 필터 섹션의 스케일링 값 g를 갖는 필터를 지정합니다. (R2024b 이후)

예제

[h,w] = freqz(d,n)은 디지털 필터 d에 대해 n개 점을 가진 복소 주파수 응답을 반환합니다.

예제

[h,w] = freqz(sos,n)은 2차섹션형(SOS) 행렬 sos에 대응하는 n개 점을 가진 복소 주파수 응답을 반환합니다.

예제

[h,w] = freqz(___,n,"whole")은 전체 단위원 원주상의 n개 샘플 점에서 주파수 응답을 반환합니다.

[h,f] = freqz(___,n,fs)는 레이트 fs로 샘플링된 신호를 필터링하도록 설계된 디지털 필터에 대해 주파수 응답 벡터 h와 이에 대응하는 물리적 주파수 벡터 f를 반환합니다.

[h,f] = freqz(___,n,"whole",fs)는 0에서 fs 사이에 있는 n개 점에서 주파수 벡터를 반환합니다.

h = freqz(___,w)w로 주어진 정규화 주파수에서 계산된 주파수 응답 벡터 h를 반환합니다.

h = freqz(___,f,fs)f로 주어진 물리적 주파수에서 계산된 주파수 응답 벡터 h를 반환합니다.

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

예제

예제

모두 축소

다음 전달 함수로 표현되는 3차 IIR 저역통과 필터의 크기 응답을 계산하고 표시합니다.

H(z)=0.05634(1+z-1)(1-1.0166z-1+z-2)(1-0.683z-1)(1-1.4461z-1+0.7957z-2).

다항식 컨벌루션으로 분자와 분모를 표현합니다. 전체 단위원에 걸쳐 있는 2001개 점에서 주파수 응답을 구합니다.

b0 = 0.05634;
b1 = [1  1];
b2 = [1 -1.0166 1];
a1 = [1 -0.683];
a2 = [1 -1.4461 0.7957];

b = b0*conv(b1,b2);
a = conv(a1,a2);

[h,w] = freqz(b,a,'whole',2001);

데시벨을 단위로 하는 크기 응답을 플로팅합니다.

plot(w/pi,20*log10(abs(h)))
ax = gca;
ax.YLim = [-100 20];
ax.XTick = 0:.5:2;
xlabel('Normalized Frequency (\times\pi rad/sample)')
ylabel('Magnitude (dB)')

Figure contains an axes object. The axes object with xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude (dB) contains an object of type line.

R2024b 이후

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

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

freqz(B,A,"ctf")

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.

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

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

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.

β=8인 카이저 윈도우를 사용하여 차수가 80인 FIR 저역통과 필터를 설계합니다. 0.5π rad/sample의 정규화된 차단 주파수를 지정합니다. 필터의 크기 응답과 위상 응답을 표시합니다.

b = fir1(80,0.5,kaiser(81,8));
freqz(b,1)

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.

designfilt를 사용하여 동일한 필터를 설계합니다. 필터의 크기 응답과 위상 응답을 표시합니다.

d = designfilt("lowpassfir",FilterOrder=80, ...
    CutoffFrequency=0.5,Window={"kaiser",8});
freqz(d)

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.

0.35π rad/sample과 0.8π rad/sample 사이의 통과대역과 3dB의 리플을 갖는 FIR 대역통과 필터를 설계합니다. 첫 번째 저지대역은 0 rad/sample부터 0.1π rad/sample까지이며 40dB의 감쇠량을 가집니다. 두 번째 저지대역은 0.9π rad/sample부터 나이퀴스트 주파수까지이며 30dB의 감쇠량을 가집니다. 주파수 응답을 계산합니다. 주파수 응답의 크기를 선형 단위와 데시벨로 플로팅합니다. 통과대역을 강조 표시합니다.

sf1 = 0.1;
pf1 = 0.35;
pf2 = 0.8;
sf2 = 0.9;
pb = linspace(pf1,pf2,1e3)*pi;

bp = designfilt("bandpassfir", ...
    StopbandAttenuation1=40,StopbandFrequency1=sf1, ...
    PassbandFrequency1=pf1,PassbandRipple=3, ...
    PassbandFrequency2=pf2,StopbandFrequency2=sf2, ...
    StopbandAttenuation2=30);

[h,w] = freqz(bp,1024);
hpb = freqz(bp,pb);

subplot(2,1,1)
plot(w/pi,abs(h),pb/pi,abs(hpb),'.-')
axis([0 1 -1 2])
legend("Response","Passband",Location="south")
ylabel("Magnitude")

subplot(2,1,2)
plot(w/pi,db(h),pb/pi,db(hpb),".-")
axis([0 1 -60 10])
xlabel("Normalized Frequency (\times\pi rad/sample)")
ylabel("Magnitude (dB)")

Figure contains 2 axes objects. Axes object 1 with ylabel Magnitude contains 2 objects of type line. These objects represent Response, Passband. Axes object 2 with xlabel Normalized Frequency (\times\pi rad/sample), ylabel Magnitude (dB) contains 2 objects of type line.

다음 전달 함수로 표현되는 3차 IIR 저역통과 필터의 크기 응답을 계산하고 표시합니다.

H(z)=0.05634(1+z-1)(1-1.0166z-1+z-2)(1-0.683z-1)(1-1.4461z-1+0.7957z-2).

2차섹션형으로 전달 함수를 표현합니다. 전체 단위원에 걸쳐 있는 2001개 점에서 주파수 응답을 구합니다.

b0 = 0.05634;
b1 = [1  1];
b2 = [1 -1.0166 1];
a1 = [1 -0.683];
a2 = [1 -1.4461 0.7957];

sos1 = [b0*[b1 0] [a1 0]];
sos2 = [b2 a2];

[h,w] = freqz([sos1;sos2],'whole',2001);

데시벨을 단위로 하는 크기 응답을 플로팅합니다.

plot(w/pi,20*log10(abs(h)))
ax = gca;
ax.YLim = [-100 20];
ax.XTick = 0:.5:2;
xlabel('Normalized Frequency (\times\pi rad/sample)')
ylabel('Magnitude (dB)')

Figure contains an axes object. The axes object with xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Magnitude (dB) contains an object of type line.

입력 인수

모두 축소

전달 함수 계수로, 벡터로 지정됩니다. 이 전달 함수를 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 이상의 양의 정수 스칼라로 지정됩니다. n이 지정되지 않은 경우 디폴트 값은 512입니다. 최상의 결과를 얻으려면 n을 필터 차수보다 큰 값으로 설정하십시오.

R2024b 이후

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

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

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

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

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

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

참고

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

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

R2024b 이후

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

freqz 함수는 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
복소수 지원 여부:

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

데이터형: double

각주파수로, 벡터로 지정되고 rad/sample로 표현됩니다. w는 적어도 2개의 요소를 가져야 합니다. 그러지 않으면 함수가 w를 n으로 해석합니다. w = π는 나이퀴스트 주파수에 대응됩니다.

주파수로, 벡터로 지정됩니다. f는 적어도 2개의 요소를 가져야 합니다. 그러지 않으면 함수가 f를 n으로 해석합니다. 시간 단위가 초이면 f는 헤르츠로 표현됩니다.

데이터형: double

출력 인수

모두 축소

주파수 응답으로, 벡터로 반환됩니다. n을 지정하면 h의 길이는 n이 됩니다. n을 지정하지 않거나 n을 빈 벡터로 지정하면 h의 길이는 512입니다.

freqz에 대한 입력값이 단정밀도인 경우 함수는 단정밀도 연산방식을 사용하여 주파수 응답을 계산합니다. 이에 대한 출력값 h는 단정밀도입니다.

각주파수로, 벡터로 반환됩니다. w는 0부터 π까지의 범위에 속하는 값을 가집니다. 입력값에 'whole'을 지정하면 w의 값 범위는 0부터 2π까지입니다. n을 지정하면 w의 길이는 n이 됩니다. n을 지정하지 않거나 n을 빈 벡터로 지정하면 w의 길이는 512입니다.

주파수로, 벡터로 반환되고 헤르츠 단위로 표현됩니다. f는 0부터 fs/2Hz까지의 범위에 속하는 값을 가집니다. 입력값에 'whole'을 지정하면 f의 값 범위는 0부터 fsHz까지입니다. n을 지정하면 f의 길이는 n이 됩니다. n을 지정하지 않거나 n을 빈 벡터로 지정하면 f의 길이는 512입니다.

세부 정보

모두 축소

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

  • 축소할 수 없는 멀티레이트 필터가 있는 경우 freqzmr (DSP System Toolbox) 함수를 사용하여 주파수 영역에서 필터를 분석합니다. 축소할 수 없는 멀티레이트 필터에 대한 자세한 내용은 Overview of Multirate Filters (DSP System Toolbox) 항목을 참조하십시오. (R2024a 이후)

  • freqzmr (DSP System Toolbox) 함수를 사용하려면 DSP System Toolbox™가 필요합니다. (R2024a 이후)

알고리즘

디지털 필터의 주파수 응답은 z = e에서 계산되는 전달 함수로 해석될 수 있습니다 [1].

freqz는 사용자가 지정한 (실수 또는 복소수) 분자 다항식과 분모 다항식에서 전달 함수를 결정하고 디지털 필터의 복소 주파수 응답 H(e)를 반환합니다. 주파수 응답은 사용자가 선택한 구문에 의해 결정되는 샘플 점에서 계산됩니다.

사용자가 주파수로 구성된 벡터를 입력 인수로 제공하지 않으면 freqz는 일반적으로 FFT 알고리즘을 사용하여 주파수 응답을 계산합니다. 이는 원하는 길이만큼 0으로 채워진 변환된 분자 및 분모 계수의 비율로 주파수 응답을 계산합니다.

사용자가 주파수로 구성된 벡터를 입력값으로 제공하면 freqz는 각 주파수 점에서 다항식을 계산하고 분자 응답을 분모 응답으로 나눕니다. 다항식을 계산할 때 함수는 호너의 방법을 사용합니다.

참고 문헌

[1] Oppenheim, Alan V., and Ronald W. Schafer, with John R. Buck. Discrete-Time Signal Processing. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.

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

확장 기능

모두 확장

버전 내역

R2006a 이전에 개발됨

모두 확장

참고 항목

함수