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

Создайте 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