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 матрицы или трехмерные массивы, в зависимости от obj.

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

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

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

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

расширить все

Поведение изменено в R2020b

Введенный в R2019a