Получите коэффициенты фильтра
graphicEQ КоэффициентыКаскадная структура
Создайте 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 КоэффициентыСоздайте 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')

octaveFilterBank КоэффициентыСоздайте 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')

obj — Объект получить коэффициенты фильтра отgammatoneFilterBank | octaveFilterBank | graphicEQОбъект получить коэффициенты фильтра от в виде объекта gammatoneFilterBank, octaveFilterBank, или graphicEQ.
B — Коэффициенты фильтра числителяКоэффициенты фильтра числителя, возвращенные как 2D матрица или трехмерный массив, в зависимости от obj.
Типы данных: single | double
A — Коэффициенты фильтра знаменателяКоэффициенты фильтра числителя, возвращенные как 2D матрица или трехмерный массив, в зависимости от obj.
Типы данных: single | double
octaveFilterBankПоведение изменяется в R2020b
coeffs функция octaveFilterBank теперь возвращает фильтр в секциях второго порядка (SOS) вместо разделов четвертого порядка (FOS). Этот новый формат отражает обновленное внутреннее представление, которое было улучшено, чтобы остаться устойчивым в очень низких частотах.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.