coeffs

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

Синтаксис

Описание

пример

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

Примеры

свернуть все

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

Создайте graphicEQ и затем вызовите coeffs получить его коэффициенты. Коэффициенты возвращены как секции второго порядка. Размерности B 3-by-(M * EQOrder / 2), где M количество полосовых эквалайзеров. Размерности A 2-by-(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 получить его коэффициенты. Каждый фильтр gammatone является БИХ-фильтром восьмого порядка, состоявшим из каскада четырех секций второго порядка. Размер 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 3 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.

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

свернуть все

Коэффициенты фильтра числителя, возвращенные как 2D матрица или трехмерный массив, в зависимости от obj.

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

Коэффициенты фильтра числителя, возвращенные как 2D матрица или трехмерный массив, в зависимости от obj.

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

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

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

Поведение изменяется в R2020b

Смотрите также

| |

Введенный в R2019a