exponenta event banner

coeffs

Получить коэффициенты фильтра

Описание

пример

[B,A] = coeffs(obj) возвращает коэффициенты фильтров, созданных obj.

Примеры

свернуть все

Каскадная структура

Создать graphicEQ а затем позвонить coeffs чтобы получить его коэффициенты. Коэффициенты возвращаются в виде секций второго порядка. Размеры 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);

Сравните выходные данные filter функция с использованием коэффициентов B и A с выходом graphicEQ. Для простоты сравните выходные данные только из пятого канала.

channelToCompare = 5;
y = x;
for section = 1:equalizer.EQOrder/2
     for i = 1:numel(equalizer.Gains)
        y = filter(B(:,i*section),[1;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. Axes 1 with title graphicEQ contains an object of type line. Axes 2 with title Filter function contains an object of type line.

Создать значение по умолчанию gammatoneFilterBank, а затем позвоните coeffs чтобы получить его коэффициенты. Каждый фильтр гамматона представляет собой фильтр БИХ восьмого порядка, состоящий из каскада из четырех секций второго порядка. Размер 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);

Сравните выходные данные filter функция с использованием коэффициентов B и A с выходом gammaFiltBank. Для простоты сравните выходные данные только с восьмого канала.

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. Axes 1 with title Gammatone Filter Bank contains an object of type line. Axes 2 with title Filter Function contains an object of type line.

Создать значение по умолчанию octaveFilterBank, а затем позвоните coeffs чтобы получить его коэффициенты. Коэффициенты возвращаются в виде секций второго порядка. Размеры B и A T-by-3-by-M, где T - количество сечений, а M - количество фильтров.

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

octFiltBank = octaveFilterBank('SampleRate',fs);

[B,A] = coeffs(octFiltBank);

Сравните выходные данные filter функция с использованием коэффициентов B и A с выходом octaveFilterBank. Для простоты сравните выходные данные только из пятого канала.

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. Axes 1 with title Octave Filter Bank contains an object of type line. Axes 2 with title Filter Function contains an object of type line.

Входные аргументы

свернуть все

Объект для получения коэффициентов фильтра, указанный как объект gammatoneFilterBank, octaveFilterBank, или graphicEQ.

Выходные аргументы

свернуть все

Коэффициенты числительного фильтра, возвращаемые в виде матрицы 2-D или массива 3-D, в зависимости от obj.

Типы данных: single | double

Коэффициенты числительного фильтра, возвращаемые в виде матрицы 2-D или массива 3-D, в зависимости от obj.

Типы данных: single | double

Вопросы совместимости

развернуть все

В R2020b изменилось поведение

Представлен в R2019a