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