exponenta event banner

Перекрестные фильтры динамиков

В этом примере показано, как создать простую модель цифрового трехходового громкоговорителя. Система разделяет входной аудиосигнал на низко-, средне- и высокочастотные диапазоны, которые соответствуют, соответственно, вуферу, драйверу среднего диапазона и твиттеру. Типичными значениями нормированных частот пересечения, которые ограничивают полосы, являются 0,136δ рад/образец и 0,317δ рад/образец.

Создание низкочастотных, полосовых и высокоскоростных фильтров для формирования низкочастотных, среднечастотных и высокочастотных диапазонов. Укажите частоты.

lo = 0.136;
hi = 0.317;

Для каждого фильтра используйте конструкцию типа I Чебышева 6-го порядка. Укажите пульсацию полосы пропускания 1 дБ, превышающую значение для реальных динамиков. cheby1 функция удваивает порядок полосовых конструкций. Сделайте так, чтобы все фильтры имели одинаковый порядок, уменьшив порядок полосового фильтра вдвое. Возвращает нули, полюса и коэффициент усиления каждого фильтра.

ord = 6;
rip = 1;

[zw,pw,kw] = cheby1(ord,rip,lo);
[zm,pm,km] = cheby1(ord/2,rip,[lo hi]);
[zt,pt,kt] = cheby1(ord,rip,hi,'high');

Визуализируйте нули и полюса фильтров.

zplane([zw zm zt],[pw pm pt])
lg = legend('Woofer','Midrange','Tweeter');
lg.Box = 'off';

Figure contains an axes. The axes contains 11 objects of type line, text. These objects represent Woofer, Midrange, Tweeter.

  • Woofer: нули при z = -1 подавляют высокие частоты. Полюса усиливают амплитудную характеристику между 0 и нижней частотой пересечения.

  • Средний диапазон: нули при z = 0 и z = 1 подавляют высокие и низкие частоты. Полюса усиливают амплитудную характеристику между более низкой и более высокой частотами пересечения.

  • Твиттер: нули при z = 1 подавляют низкие частоты. Полюса усиливают амплитудную характеристику между более высокой частотой пересечения и δ.

Постройте график откликов величины на единичной окружности, чтобы увидеть влияние различных полюсов и нулей. Используйте линейные единицы измерения. Представить фильтры как разделы второго порядка.

sw = zp2sos(zw,pw,kw);
sm = zp2sos(zm,pm,km);
st = zp2sos(zt,pt,kt);

nf = 1024;
[hw,fw] = freqz(sw,nf,'whole');
hm = freqz(sm,nf,'whole');
ht = freqz(st,nf,'whole');

plot3(cos(fw),sin(fw),[abs(hw) abs(hm) abs(ht)])
xlabel('Real')
ylabel('Imaginary')
view(75,30)
grid

Figure contains an axes. The axes contains 3 objects of type line.

Постройте график откликов величины в дБ с помощью fvtool.

hfvt = fvtool(sw,sm,st);
legend(hfvt,'Woofer','Mid-range','Tweeter')

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 3 objects of type line. These objects represent Woofer, Mid-range, Tweeter.

Загрузите аудиофайл, содержащий фрагмент «Hallelujah Chorus» Генделя с частотой 8192 Гц. Разделение сигнала на три полосы частот с помощью фильтрации. Постройте графики полос.

load handel                % To hear, type soundsc(y,Fs)

yw = sosfilt(sw,y);        % To hear, type soundsc(yw,Fs)
ym = sosfilt(sm,y);        % To hear, type soundsc(ym,Fs)
yt = sosfilt(st,y);        % To hear, type soundsc(yt,Fs)

plot((0:length(y)-1)/Fs,[yw ym yt])
xlabel('Time (s)')

Figure contains an axes. The axes contains 3 objects of type line.

% To hear all the frequency ranges, type soundsc(yw+ym+yt,Fs)

Ссылки

Orfanidis, Sophocles J. Введение в обработку сигналов. Энглвуд Клиффс, Нью-Джерси: Прентис Холл, 1996.

См. также

| | | | |