주요 콘텐츠

coeffs

필터 계수 가져오기

설명

[B,A] = coeffs(obj)obj에 의해 생성된 필터의 계수를 반환합니다.

예제

예제

모두 축소

graphicEQ를 생성한 다음 coeffs를 호출하여 계수를 가져옵니다. 계수는 2차섹션형(SOS)으로 반환됩니다. B의 차원은 3×(M * EQOrder / 2)입니다. 여기서 M은 대역통과 이퀄라이저의 개수입니다. A의 차원은 2×(M * EQOrder / 2)입니다.

fs = 44.1e3;
x = 0.1*randn(fs*5,1);
equalizer = graphicEQ('SampleRate',fs, ...
                      'Gains',[-10,-10,10,10,-10,-10,10,10,-10,-10], ...
                      'EQOrder',2);

[B,A] = coeffs(equalizer);

계수 BA를 사용하는 filter 함수의 출력값을 graphicEQ의 출력값과 비교합니다.

y = x;
for section = 1:equalizer.EQOrder/2
     for i = 1:numel(equalizer.Gains)
        y = filter(B(:,i*section),A(:,i*section),y);
     end
end
audioOut_filter = y;

audioOut = equalizer(x);

subplot(2,1,1)
plot(abs(fft(audioOut)))
title('graphicEQ')
ylabel('Magnitude Response')

subplot(2,1,2)
plot(abs(fft(audioOut_filter)))
title('Filter function')
xlabel('Bin')
ylabel('Magnitude Response')

Figure contains 2 axes objects. Axes object 1 with title graphicEQ, ylabel Magnitude Response contains an object of type line. Axes object 2 with title Filter function, xlabel Bin, ylabel Magnitude Response contains an object of type line.

디폴트 gammatoneFilterBank를 생성한 다음 coeffs를 호출하여 계수를 가져옵니다. 각 감마톤 필터는 4개의 2차섹션형(SOS)의 종속 연결로 구성된 8차 IIR 필터입니다. B의 크기는 4×3×NumFilters입니다. A의 크기는 4×2×NumFilters입니다.

[audioIn,fs] = audioread('Counting-16-44p1-mono-15secs.wav');

gammaFiltBank = gammatoneFilterBank('SampleRate',fs);

[B,A] = coeffs(gammaFiltBank);

계수 BA를 사용하는 filter 함수의 출력값을 gammaFiltBank의 출력값과 비교합니다. 단순히 보기 위해 채널 8의 출력값만 비교합니다.

channelToCompare = 8;
y1 = filter(B(1,:,channelToCompare),[1,A(1,:,channelToCompare)],audioIn);
y2 = filter(B(2,:,channelToCompare),[1,A(2,:,channelToCompare)],y1);
y3 = filter(B(3,:,channelToCompare),[1,A(3,:,channelToCompare)],y2);
audioOut_filter = filter(B(4,:,channelToCompare),[1,A(4,:,channelToCompare)],y3);

audioOut = gammaFiltBank(audioIn);

t = (0:(size(audioOut,1)-1))'/fs;

subplot(2,1,1)
plot(t,audioOut(:,channelToCompare))
title('Gammatone Filter Bank')
ylabel('Amplitude')

subplot(2,1,2)
plot(t,audioOut_filter)
title('Filter Function')
xlabel('Time (s)')
ylabel('Amplitude')

Figure contains 2 axes objects. Axes object 1 with title Gammatone Filter Bank, ylabel Amplitude contains an object of type line. Axes object 2 with title Filter Function, xlabel Time (s), ylabel Amplitude contains an object of type line.

디폴트 octaveFilterBank를 생성한 다음 coeffs를 호출하여 계수를 가져옵니다. 계수는 2차섹션형(SOS)으로 반환됩니다. B와 A의 차원은 T×3×M입니다. 여기서 T는 섹션 수이고 M은 필터 개수입니다.

[audioIn,fs] = audioread('Counting-16-44p1-mono-15secs.wav');

octFiltBank = octaveFilterBank('SampleRate',fs);

[B,A] = coeffs(octFiltBank);

계수 BA를 사용하는 filter 함수의 출력값을 octaveFilterBank의 출력값과 비교합니다. 단순히 보기 위해 채널 5의 출력값만 비교합니다.

channelToCompare = 5;

audioOut_filter = filter(B(1,:,channelToCompare),A(1,:,channelToCompare),audioIn);
audioOut = octFiltBank(audioIn);

subplot(2,1,1)
plot(audioOut(:,channelToCompare))
title('Octave Filter Bank')

subplot(2,1,2)
plot(audioOut_filter)
title('Filter Function')

Figure contains 2 axes objects. Axes object 1 with title Octave Filter Bank contains an object of type line. Axes object 2 with title Filter Function contains an object of type line.

입력 인수

모두 축소

필터 계수를 가져올 객체로, gammatoneFilterBank, octaveFilterBank, graphicEQ 또는 shelvingFilter 객체로 지정됩니다.

출력 인수

모두 축소

분자 필터 계수로, obj에 따라 2차원 행렬 또는 3차원 배열로 반환됩니다.

데이터형: single | double

분모 필터 계수로, obj에 따라 2차원 행렬 또는 3차원 배열로 반환됩니다.

데이터형: single | double

버전 내역

R2019a에 개발됨

모두 확장