coefs

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

Синтаксис

[B,A] = coeffs(obj)

Описание

пример

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

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

Создайте octaveFilterBank по умолчанию, и затем вызовите coeffs, чтобы получить его коэффициенты. Коэффициенты возвращены как разделы четвертого порядка. Размерности B и A являются T 5 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;
y1 = filter(B(1,:,channelToCompare),A(1,:,channelToCompare),audioIn);
audioOut_filter = y1;

audioOut = octFiltBank(audioIn);

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

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

Входные параметры

свернуть все

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

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

свернуть все

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

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

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

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

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

| |

Введенный в R2019a