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

gammatoneFilterBank КоэффициентыСоздать значение по умолчанию 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')

octaveFilterBank КоэффициентыСоздать значение по умолчанию 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')

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