Расчетный параметрический эквалайзер
[ проектирует B,A] = designParamEQ(N,gain,centerFreq,bandwidth)NПараметрический эквалайзер третьего порядка с заданным коэффициентом усиления, центральной частотой и полосой пропускания. B и A - матрицы числительных и знаменательных коэффициентов, столбцы которых соответствуют каскадным фильтрам секции второго порядка (SOS).
[ указывает параметры, использующие один или несколько B,A] = designParamEQ(___,Name,Value)Name,Value аргументы пары.
Укажите порядок фильтрации, пиковый коэффициент усиления в дБ, нормализованные центральные частоты и нормализованную полосу пропускания диапазонов параметрического эквалайзера.
N = [2, ...
4]; gain = [
6, ...
-4]; centerFreq = [
0.25, ...
0.75]; bandwidth = [
0.12, ...
0.1];
Создайте коэффициенты фильтра, используя указанные параметры.
[B,A] = designParamEQ(N,gain,centerFreq,bandwidth,"Orientation","row");
Визуализация конструкции фильтра.
fvtool([B,A]);

Проектирование параметрического эквалайзера секций второго порядка (SOS) с использованием designParamEQ и фильтрация аудиопотока.
Создание системных объектов для чтения аудиофайлов и записи аудиоустройств. Используйте частоту выборки устройства чтения в качестве частоты выборки устройства записи.
frameSize = 256; fileReader = dsp.AudioFileReader("RockGuitar-16-44p1-stereo-72secs.wav","SamplesPerFrame",frameSize); sampleRate = fileReader.SampleRate; deviceWriter = audioDeviceWriter("SampleRate",sampleRate);
Воспроизведение звукового сигнала через устройство.
count = 0; while count < 2500 audio = fileReader(); deviceWriter(audio); count = count + 1; end reset(fileReader)
Проектирование параметрического эквалайзера SOS, подходящего для использования с dsp.BiquadFilter.
N = [4,4]; gain = [-25,35]; centerFreq = [0.01,0.5]; bandwidth = [0.35,0.5]; [B,A] = designParamEQ(N,gain,centerFreq,bandwidth);
Визуализация конструкции фильтра. Звонить designParamEQ с теми же проектными спецификациями. Укажите ориентацию вывода как "row" чтобы он был пригоден для использования с fvtool.
[Bvisualize,Avisualize] = designParamEQ(N,gain,centerFreq,bandwidth,"Orientation","row"); fvtool([Bvisualize,Avisualize], ... "Fs",fileReader.SampleRate, ... "FrequencyScale","Log");

Создайте биквадратный фильтр.
myFilter = dsp.BiquadFilter( ... "SOSMatrixSource","Input port", ... "ScaleValuesInputPort",false);
Создайте анализатор спектра для визуализации исходного аудиосигнала и аудиосигнала, проходящего через параметрический эквалайзер.
scope = dsp.SpectrumAnalyzer( ... "SampleRate",sampleRate, ... "PlotAsTwoSidedSpectrum",false, ... "FrequencyScale","Log", ... "FrequencyResolutionMethod","WindowLength", ... "WindowLength",frameSize, ... "Title","Original and Equalized Signals", ... "ShowLegend",true, ... "ChannelNames",{'Original Signal','Equalized Signal'});
Воспроизведение отфильтрованного звукового сигнала и визуализация исходного и отфильтрованного спектров.
count = 0; while count < 2500 originalSignal = fileReader(); equalizedSignal = myFilter(originalSignal,B,A); scope([originalSignal(:,1),equalizedSignal(:,1)]); deviceWriter(equalizedSignal); count = count + 1; end
Рекомендуется деблокировать объекты после их завершения.
release(deviceWriter) release(fileReader) release(scope)

Проектирование параметрического эквалайзера секций четвертого порядка (FOS) с использованием designParamEQ и фильтрация аудиопотока.
Создание системных объектов для чтения аудиофайлов и записи аудиоустройств. Используйте частоту выборки устройства чтения в качестве частоты выборки устройства записи.
frameSize = 256; fileReader = dsp.AudioFileReader( ... "RockGuitar-16-44p1-stereo-72secs.wav", ... "SamplesPerFrame",frameSize); sampleRate = fileReader.SampleRate; deviceWriter = audioDeviceWriter( ... "SampleRate",sampleRate);
Воспроизведение звукового сигнала через устройство.
count = 0; while count < 2500 x = fileReader(); deviceWriter(x); count = count + 1; end reset(fileReader)
Проектирование коэффициентов параметрического эквалайзера FOS.
N = [2,4]; gain = [5,10]; centerFreq = [0.025,0.65]; bandwidth = [0.025,0.35]; mode = "fos"; [B,A] = designParamEQ(N,gain,centerFreq,bandwidth,mode,"Orientation","row");
Создайте фильтры FOS IIR.
myFilter = dsp.FourthOrderSectionFilter(B,A);
Визуализируйте частотную характеристику параметрического эквалайзера.
fvtool(myFilter)

Создайте анализатор спектра для визуализации исходного аудиосигнала и аудиосигнала, проходящего через параметрический эквалайзер.
scope = dsp.SpectrumAnalyzer( ... "SampleRate",sampleRate, ... "PlotAsTwoSidedSpectrum",false, ... "FrequencyScale","Log", ... "FrequencyResolutionMethod","WindowLength", ... "WindowLength",frameSize, ... "Title","Original and Equalized Signals", ... "ShowLegend",true, ... "ChannelNames",{'Original Signal','Equalized Signal'});
Воспроизведение отфильтрованного звукового сигнала и визуализация исходного и отфильтрованного спектров.
count = 0; while count < 2500 x = fileReader(); y = myFilter(x); scope([x(:,1),y(:,1)]); deviceWriter(y); count = count + 1; end
Рекомендуется деблокировать объекты после их завершения.
release(fileReader) release(deviceWriter) release(scope)

N - Порядок фильтрацииПорядок фильтрации, заданный как скаляр или вектор строки той же длины, что и centerFreq. Элементы вектора должны быть четными целыми числами.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
gain - Пиковое усиление (дБ)Пиковое усиление в дБ, указанное как скалярный вектор или вектор строки той же длины, что и centerFreq. Элементы вектора должны быть вещественными.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
centerFreq - Нормированная центральная частота диапазонов эквалайзераНормализованная центральная частота полос эквалайзера, заданная как скалярный или строчный вектор вещественных значений в диапазоне от 0 до 1, где 1 соответствует частоте Найквиста (δ рад/выборка). Если centerFreq задается в виде вектора строки, для каждого элемента которого предназначены отдельные эквалайзеры centerFreq.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
bandwidth - Нормализованная полоса пропусканияНормализованная полоса пропускания, заданная как скалярный вектор или вектор строки той же длины, что и centerFreq. Элементы вектора задаются как вещественные значения в диапазоне от 0 до 1, где 1 соответствует частоте Найквиста (δ рад/выборка).
Нормализованная полоса пропускания измеряется при усилении/2 дБ. Если коэффициент усиления установлен в -Inf (фильтр-пробка), нормализованная полоса пропускания измеряется в точке затухания 3 дБ: 0,5).
Чтобы преобразовать октавную полосу пропускания в нормализованную, вычислите соответствующий Q-фактор как
) − 1.
Затем преобразуйте в полосу пропускания
.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
mode - Режим проектирования'sos' (по умолчанию) | 'fos'Режим проектирования, указанный как 'sos' или 'fos'.
'sos' - Реализует ваш эквалайзер в виде каскадных фильтров второго порядка.
'fos' - Реализует ваш эквалайзер в виде каскадных фильтров четвертого порядка. Поскольку секции четвертого порядка не требуют вычисления корней, они, как правило, более эффективны с точки зрения вычислений.
Типы данных: char | string
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'Orientation',"row"'Orientation' - Ориентация возвращаемых коэффициентов фильтра"column" (по умолчанию) | "row"Ориентация возвращаемых коэффициентов фильтра, определяемая как разделенная запятыми пара, состоящая из 'Orientation' и "column" или "row":
Набор 'Orientation' кому "row" для совместимости с FVTool, dsp.DynamicFilterVisualizer, и dsp.FourthOrderSectionFilter.
Набор 'Orientation' кому "column" для совместимости с dsp.BiquadFilter.
Типы данных: char | string
B - Коэффициенты числительного фильтраКоэффициенты числительного фильтра, возвращаемые в виде матрицы. Размер и толкование B зависит от Orientation и mode:
Если 'Orientation' имеет значение "column" и mode имеет значение "sos", то B возвращается в виде матрицы L-by-3. Каждый столбец соответствует числительным коэффициентам каскадных секций второго порядка.
Если 'Orientation' имеет значение "column" и mode имеет значение "fos", то B возвращается в виде матрицы L-by-5. Каждый столбец соответствует числительным коэффициентам каскадных секций четвертого порядка.
Если 'Orientation' имеет значение "row" и mode имеет значение "sos", то B возвращается в виде матрицы 3-by-L. Каждая строка соответствует числительным коэффициентам каскадных секций второго порядка.
Если 'Orientation' имеет значение "row" и mode имеет значение "fos", то B возвращается в виде матрицы 5-by-L. Каждая строка соответствует числительным коэффициентам каскадных секций четвертого порядка.
A - Коэффициенты фильтра знаменателяКоэффициенты фильтра знаменателя, возвращаемые в виде матрицы. Размер и толкование A зависит от Orientation и mode:
Если 'Orientation' имеет значение "column" и mode имеет значение "sos", то A возвращается в виде матрицы L-by-2. Каждый столбец соответствует коэффициентам знаменателя каскадных секций второго порядка. A не включает начальные единичные коэффициенты.
Если 'Orientation' имеет значение "column" и mode имеет значение "fos", то A возвращается в виде матрицы L-by-4. Каждый столбец соответствует коэффициентам знаменателя каскадных секций четвертого порядка. A не включает начальные единичные коэффициенты.
Если 'Orientation' имеет значение "row" и mode имеет значение "sos", то A возвращается в виде матрицы 3-by-L. Каждая строка соответствует коэффициентам знаменателя каскадных секций второго порядка.
Если 'Orientation' имеет значение "row" и mode имеет значение "fos", то A возвращается в виде матрицы 5-by-L. Каждая строка соответствует коэффициентам знаменателя каскадных секций четвертого порядка.
[1] Орфанидис, Софокл Дж. «Дизайн цифрового параметрического эквалайзера высокого порядка». Журнал Общества аудиотехники. том 53, ноябрь 2005, стр. 1026-1046.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.