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

Спроектируйте параметрический эквалайзер секций второго порядка (SOS) с помощью designParamEQ и отфильтруйте аудиопоток.
Создайте считывающее устройство звукового файла и Системные объекты средства записи аудио устройства. Используйте частоту дискретизации читателя как частота дискретизации средства записи. Вызовите setup уменьшать вычислительную загрузку инициализации в цикле аудиопотока.
frameSize = 256; fileReader = dsp.AudioFileReader("RockGuitar-16-44p1-stereo-72secs.wav","SamplesPerFrame",frameSize); sampleRate = fileReader.SampleRate; deviceWriter = audioDeviceWriter("SampleRate",sampleRate); setup(fileReader) setup(deviceWriter,ones(frameSize,2))
Проигрывайте звуковой сигнал через свое устройство.
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");

Создайте фильтр biquad.
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'});
Проигрывайте отфильтрованный звуковой сигнал и визуализируйте исходные и отфильтрованные спектры.
setup(scope,ones(frameSize,2)) 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 и отфильтруйте аудиопоток.
Создайте считывающее устройство звукового файла и Системные объекты средства записи аудио устройства. Используйте частоту дискретизации читателя как частота дискретизации средства записи. Вызовите setup уменьшать вычислительную загрузку инициализации в цикле аудиопотока.
frameSize = 256; fileReader = dsp.AudioFileReader( ... "RockGuitar-16-44p1-stereo-72secs.wav", ... "SamplesPerFrame",frameSize); sampleRate = fileReader.SampleRate; deviceWriter = audioDeviceWriter( ... "SampleRate",sampleRate); setup(fileReader) setup(deviceWriter,ones(frameSize,2))
Проигрывайте звуковой сигнал через свое устройство.
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.
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'});
Проигрывайте отфильтрованный звуковой сигнал и визуализируйте исходные и отфильтрованные спектры.
setup(scope,ones(frameSize,2)); 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 дБ: .
Чтобы преобразовать пропускную способность октавы в нормированную пропускную способность, вычислите связанный Q - фактор как
Затем преобразуйте в пропускную способность
Типы данных: 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 L матрицей. Каждая строка соответствует коэффициентам числителя ваших каскадных секций второго порядка.
Если 'Orientation' установлен в "row" и mode установлен в "fos", затем B возвращен как 5 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 L матрицей. Каждая строка соответствует коэффициентам знаменателя ваших каскадных секций второго порядка.
Если 'Orientation' установлен в "row" и mode установлен в "fos", затем A возвращен как 5 L матрицей. Каждая строка соответствует коэффициентам знаменателя ваших каскадных разделов четвертого порядка.
[1] Orfanidis, Софокл Дж. "Старший Цифровой Проект Параметрического эквалайзера". Журнал Общества звукоинженеров. Издание 53, ноябрь 2005, стр 1026–1046.
designShelvingEQ | designVarSlopeFilter | dsp.BiquadFilter | multibandParametricEQ
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.