Разработайте параметрический эквалайзер
[B,A] =
designParamEQ(N,gain,centerFreq,bandwidth)
[B,A] =
designParamEQ(N,gain,centerFreq,bandwidth,mode)
[
разрабатывает параметрический эквалайзер th-порядка B
,A
] =
designParamEQ(N
,gain
,centerFreq
,bandwidth
)N
с заданным усилением, центральной частотой и пропускной способностью. B
и A
являются матрицами числителя и коэффициентов знаменателя со столбцами, соответствующими каскадным фильтрам раздела второго порядка (SOS).
Укажите, что порядок фильтра, пиковое усиление в дБ, нормировал центральные частоты и нормировал пропускную способность полос вашего параметрического эквалайзера.
N = [2,4]; gain = [6,-4]; centerFreq = [0.25,0.75]; bandwidth = [0.12,0.10];
Сгенерируйте коэффициенты фильтра с помощью заданных параметров.
[B,A] = designParamEQ(N,gain,centerFreq,bandwidth);
Создайте матрицу фильтра, совместимую с fvtool
.
SOS = [B',[ones(sum(N)/2,1),A']];
Визуализируйте свой проект фильтра.
fvtool(SOS)
Разработайте параметрический эквалайзер разделов второго порядка (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.
N = [4,4]; gain = [-25,35]; centerFreq = [0.01,0.5]; bandwidth = [0.35,0.5]; [B,A] = designParamEQ(N,gain,centerFreq,bandwidth);
Визуализируйте свой проект фильтра.
SOS = [B',[ones(4,1),A']]; fvtool(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 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(scope) release(deviceWriter) release(fileReader)
Разработайте параметрический эквалайзер разделов четвертого порядка (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);
Создайте БИХ-фильтры FOS.
section1 = dsp.IIRFilter('Numerator',B(:,1)','Denominator',[1,A(:,1)']); section2 = dsp.IIRFilter('Numerator',B(:,2)','Denominator',[1,A(:,2)']);
Визуализируйте частотную характеристику своего параметрического эквалайзера.
[H1,w] = freqz(section1,8192,sampleRate); H2 = freqz(section2,8192,sampleRate); H = 20.*log10(abs(H1.*H2)); semilogx(w,H); title('Magnitude Response (dB)') xlabel('Frequency (Hz)') ylabel('Magnitude (dB)') grid on
Создайте спектр, анализатор, чтобы визуализировать исходный звуковой сигнал и звуковой сигнал прошел через ваш параметрический эквалайзер.
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 = section1(x); z = section2(y); scope([x(:,1),z(:,1)]); deviceWriter(z); 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
пропускная способность
Нормированная пропускная способностьНормированная пропускная способность, заданная как скалярный или вектор - строка та же длина как centerFreq
. Элементы вектора указаны как действительные значения в области значений от 0 до 1, где 1 соответствует частоте Найквиста (π рад/выборка).
Нормированная пропускная способность измеряется на уровне дБ усиления/2. Если усиление установлено в -Inf
(фильтр метки), нормированная пропускная способность измеряется в точке затухания на 3 дБ: .
Чтобы преобразовать пропускную способность октавы в нормированную пропускную способность, вычислите связанный Q - фактор как
Затем преобразуйте в пропускную способность
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
режим
Режим проектирования'sos'
(значение по умолчанию) | 'fos'
Режим проектирования, заданный как 'sos'
или 'fos'
.
'sos'
– Реализует ваш эквалайзер как расположенные каскадом фильтры второго порядка.
'fos'
– Реализует ваш эквалайзер как расположенные каскадом фильтры четвертого порядка. Поскольку разделы четвертого порядка не требуют вычисления корней, они обычно более в вычислительном отношении эффективны.
Типы данных: char | string
B
Коэффициенты фильтра числителяКоэффициенты фильтра числителя, возвращенные как матрица. Каждый столбец B
соответствует коэффициентам числителя различного второго порядка или разделу четвертого порядка вашего каскадного эквалайзера.
A
Коэффициенты фильтра знаменателяКоэффициенты фильтра знаменателя, возвращенные как матрица. Каждый столбец A
соответствует коэффициентам знаменателя различного второго порядка или разделу четвертого порядка вашего каскадного эквалайзера.
A
не включает ведущий коэффициент единицы для каждого раздела.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.