designParamEQ

Проектируйте параметрический эквалайзер

Описание

пример

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

пример

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

[B,A] = designParamEQ(___,Name,Value) задает опции с использованием одного или нескольких Name,Value аргументы в виде пар.

Примеры

свернуть все

Задайте порядок фильтра, пиковый коэффициент усиления в дБ, нормализованные центральные частоты и нормированную полосу пропускания полос вашего параметрического эквалайзера.

N = [2, ...
     4];
 
коэффициент усиления = [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.

Создайте фильтр 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'});

Воспроизведение фильтрованного аудиосигнала и визуализация исходного и фильтрованного спектров.

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");

Создайте фильтры БИХ ФОС.

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 -factor как

Q=2(octavebandwidth)2(octavebandwidth)1.

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

bandwidth=centerFreqQ.

Типы данных: 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- L. Каждая строка соответствует коэффициентам числителя ваших каскадных секций второго порядка.

  • Если 'Orientation' установлено в "row" и mode установлено в "fos", затем B возвращается как 5-бай- 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- L. Каждая строка соответствует коэффициентам знаменателя ваших каскадных секций второго порядка.

  • Если 'Orientation' установлено в "row" и mode установлено в "fos", затем A возвращается как 5-бай- L матрица. Каждая строка соответствует коэффициентам знаменателя ваших каскадных разделов четвертого порядка.

Ссылки

[1] Orfanidis, Sophocles J. «High-Order Digital Parametric Equalizer Design». Журнал Общества аудиотехники. Том 53, ноябрь 2005, стр. 1026-1046.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2016a