exponenta event banner

designParamEQ

Расчетный параметрический эквалайзер

Описание

пример

[B,A] = designParamEQ(N,gain,centerFreq,bandwidth) проектирует NПараметрический эквалайзер третьего порядка с заданным коэффициентом усиления, центральной частотой и полосой пропускания. B и A - матрицы числительных и знаменательных коэффициентов, столбцы которых соответствуют каскадным фильтрам секции второго порядка (SOS).

пример

[B,A] = designParamEQ(N,gain,centerFreq,bandwidth,mode) указывает, реализован ли параметрический эквалайзер с секциями второго или четвертого порядка (FOS).

[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]);

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 an object of type line.

Проектирование параметрического эквалайзера секций второго порядка (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");

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 an object of type line.

Создайте биквадратный фильтр.

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)

Figure Spectrum Analyzer contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes with title Original and Equalized Signals contains 2 objects of type line. These objects represent Original Signal, Equalized Signal.

Проектирование параметрического эквалайзера секций четвертого порядка (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)

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 an object of type line.

Создайте анализатор спектра для визуализации исходного аудиосигнала и аудиосигнала, проходящего через параметрический эквалайзер.

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)

Figure Spectrum Analyzer contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes with title Original and Equalized Signals contains 2 objects of type line. These objects represent Original Signal, Equalized Signal.

Входные аргументы

свернуть все

Порядок фильтрации, заданный как скаляр или вектор строки той же длины, что и centerFreq. Элементы вектора должны быть четными целыми числами.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Пиковое усиление в дБ, указанное как скалярный вектор или вектор строки той же длины, что и centerFreq. Элементы вектора должны быть вещественными.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Нормализованная центральная частота полос эквалайзера, заданная как скалярный или строчный вектор вещественных значений в диапазоне от 0 до 1, где 1 соответствует частоте Найквиста (δ рад/выборка). Если centerFreq задается в виде вектора строки, для каждого элемента которого предназначены отдельные эквалайзеры centerFreq.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Нормализованная полоса пропускания, заданная как скалярный вектор или вектор строки той же длины, что и centerFreq. Элементы вектора задаются как вещественные значения в диапазоне от 0 до 1, где 1 соответствует частоте Найквиста (δ рад/выборка).

Нормализованная полоса пропускания измеряется при усилении/2 дБ. Если коэффициент усиления установлен в -Inf (фильтр-пробка), нормализованная полоса пропускания измеряется в точке затухания 3 дБ: 10 × log10 (0,5).

Чтобы преобразовать октавную полосу пропускания в нормализованную, вычислите соответствующий Q-фактор как

Q = 2 (октавная полоса пропускания) 2 (октавная полоса пропускания) − 1.

Затем преобразуйте в полосу пропускания

bandwidth = startFreqQ.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Режим проектирования, указанный как 'sos' или 'fos'.

  • 'sos' - Реализует ваш эквалайзер в виде каскадных фильтров второго порядка.

  • 'fos' - Реализует ваш эквалайзер в виде каскадных фильтров четвертого порядка. Поскольку секции четвертого порядка не требуют вычисления корней, они, как правило, более эффективны с точки зрения вычислений.

Типы данных: char | string

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'Orientation',"row"

Ориентация возвращаемых коэффициентов фильтра, определяемая как разделенная запятыми пара, состоящая из 'Orientation' и "column" или "row":

Типы данных: char | string

Выходные аргументы

свернуть все

Коэффициенты числительного фильтра, возвращаемые в виде матрицы. Размер и толкование 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 зависит от 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.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2016a