designShelvingEQ

Разработайте отлогий эквалайзер

Синтаксис

[B,A] = designShelvingEQ(gain,slope,Fc)
[B,A] = designShelvingEQ(gain,slope,Fc,type)

Описание

пример

[B,A] = designShelvingEQ(gain,slope,Fc) разрабатывает эквалайзер низкой полки с заданным усилением, наклоном, и частотой среза, Fc. Эквалайзер возвращен как расположенные каскадом БИХ-фильтры раздела второго порядка (SOS).

пример

[B,A] = designShelvingEQ(gain,slope,Fc,type) задает тип проекта как низко откладывающий или высоко откладывающий эквалайзер.

Примеры

свернуть все

Разработайте три БИХ-эквалайзера низкой полки второго порядка с помощью designShelvingEQ. Три отлогих эквалайзера используют три отдельных наклонных спецификации.

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

Fs = 44.1e3;

gain = 5;

slope1 = 0.5;
slope2 = 0.75;
slope3 = 1;

Fc = 1000/(Fs/2);

Разработайте коэффициенты фильтра с помощью заданных параметров.

[B1,A1] = designShelvingEQ(gain,slope1,Fc);
[B2,A2] = designShelvingEQ(gain,slope2,Fc);
[B3,A3] = designShelvingEQ(gain,slope3,Fc);

Создайте матрицы фильтра, совместимые с fvtool.

SOS1 = [B1',[1,A1']];
SOS2 = [B2',[1,A2']];
SOS3 = [B3',[1,A3']];

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

fvtool(...
    dsp.BiquadFilter('SOSMatrix',SOS1),...
    dsp.BiquadFilter('SOSMatrix',SOS2),...
    dsp.BiquadFilter('SOSMatrix',SOS3),...
    'Fs',Fs,...
    'FrequencyScale','Log');

legend('slope = 0.1',...
    'slope = 0.5',...
    'slope = 1');

Разработайте эквалайзер низкой полки, и затем используйте его, чтобы отфильтровать звуковой сигнал.

Создайте считывающее устройство звукового файла и объекты средства записи аудио устройства. Используйте частоту дискретизации читателя как частота дискретизации средства записи. Вызовите 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 = step(fileReader);
    play(deviceWriter,audio);
    count = count+1;
end
reset(fileReader)

Разработайте эквалайзер низкой полки разделов второго порядка (SOS).

gain = 10;
slope = 3;
Fc = 0.025;

[B,A] = designShelvingEQ(gain,slope,Fc);

Визуализируйте свой проект эквалайзера.

SOS = [B',[1,A']];
fvtool(dsp.BiquadFilter('SOSMatrix',SOS),...
    '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 Signal',...
    '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(fileReader)
release(scope)
release(deviceWriter)

Разработайте трех БИХ второго порядка высокие эквалайзеры полки с помощью designShelvingEQ. Три отлогих эквалайзера используют три отдельных спецификации усиления.

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

Fs = 44.1e3;

gain1 = -6;
gain2 = 6;
gain3 = 12;

slope = 0.8;

Fc = 18000/(Fs/2);

Разработайте коэффициенты фильтра с помощью заданных параметров.

[B1,A1] = designShelvingEQ(gain1,slope,Fc,'hi');
[B2,A2] = designShelvingEQ(gain2,slope,Fc,'hi');
[B3,A3] = designShelvingEQ(gain3,slope,Fc,'hi');

Создайте матрицы фильтра, совместимые с fvtool.

SOS1 = [B1',[1,A1']];
SOS2 = [B2',[1,A2']];
SOS3 = [B3',[1,A3']];

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

fvtool(dsp.BiquadFilter('SOSMatrix',SOS1),...
    dsp.BiquadFilter('SOSMatrix',SOS2),...
    dsp.BiquadFilter('SOSMatrix',SOS3),...
    'Fs',Fs);
legend('gain = -6 dB',...
    'gain = 6 dB',...
    'gain = 12 dB',...
    'Location','NorthWest')

Входные параметры

свернуть все

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

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

Наклонный коэффициент, заданный как действительный скаляр в области значений от 0 до 5.

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

Нормированная частота среза, заданная как действительный скаляр в области значений от 0 до 1, где 1 соответствует частоте Найквиста (π рад/выборка).

Нормированная частота среза реализована как половина отлогого усиления фильтра или gain/2 дБ.

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

Отфильтруйте тип, заданный как 'lo' или 'hi'.

  • 'lo' – Низко откладывание эквалайзера

  • 'hi' – Высоко откладывание эквалайзера

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

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

свернуть все

Коэффициенты фильтра числителя разработанного БИХ-фильтра второго порядка, повторно настроенного как трехэлементный вектор-столбец.

Коэффициенты фильтра знаменателя разработанного БИХ-фильтра второго порядка, возвращенного как двухэлементный вектор-столбец. A не включает ведущий коэффициент единицы.

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

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

Введенный в R2016a