Расчетный откос низкочастотного или высокопрочного фильтра БИХ
[ указывает параметры, использующие один или несколько B,A] = designVarSlopeFilter(___,Name,Value)Name,Value аргументы пары.
Проектирование двух низкочастотных IIR-фильтров второго порядка (SOS) с использованием designVarSlopeFilter.
Укажите частоту дискретизации, наклон и нормированную частоту отсечения для двух фильтров БИХ нижних частот. Частота дискретизации в Гц. Наклон в дБ/октаве.
Fs = 48e3; slope = 18; Fc1 = 10e3/(Fs/2); Fc2 = 16e3/(Fs/2);
Создайте коэффициенты фильтра с использованием заданных параметров.
[B1,A1] = designVarSlopeFilter(slope,Fc1,"Orientation","row"); [B2,A2] = designVarSlopeFilter(slope,Fc2,"Orientation","row");
Визуализация конструкции фильтра.
fvtool([B1,A1],[B2,A2],"Fs",Fs,"FrequencyScale","Log"); legend("Fc = 10 kHz", ... "Fc = 16 kHz", ... "Location","SouthWest");

Проектирование фильтра нижних частот IIR секции второго порядка (SOS) с использованием designVarSlopeFilter. Используйте фильтр нижних частот для обработки звукового сигнала.
Создание объектов чтения аудиофайлов и записи аудиоустройств. Используйте частоту выборки устройства чтения в качестве частоты выборки устройства записи.
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)
Создайте фильтр нижних частот с наклоном 12 дБ/октава и нормированной частотой отсечения 0,15.
slope = 12; cutoff = 0.15; [B,A] = designVarSlopeFilter(slope,cutoff);
Визуализация конструкции фильтра. Для вывода коэффициентов фильтра, подходящих для fvtool, звонок designVarSlopeFilter снова с теми же проектными спецификациями, но с Orientation установить в значение "row".
[Bvisualize,Avisualize] = designVarSlopeFilter(slope,cutoff,"Orientation","row"); fvtool([Bvisualize,Avisualize],"Fs",sampleRate);

Создайте биквадратный фильтр.
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','Filtered Signal'});
Воспроизведение отфильтрованного звукового сигнала и визуализация исходного и отфильтрованного спектров.
count = 0; while count < 2500 originalSignal = fileReader(); filteredSignal = myFilter(originalSignal,B,A); scope([originalSignal(:,1),filteredSignal(:,1)]); deviceWriter(filteredSignal); count = count + 1; end
Рекомендуется деблокировать объекты после их завершения.
release(deviceWriter) release(fileReader) release(scope)

Спроектировать два фильтра IIR высокого класса второго порядка (SOS) с использованием designVarSlopeFilter.
Укажите частоту дискретизации в Гц, наклон в дБ/октаве и нормированную частоту отсечения.
Fs = 48e3; slope1 = 18; slope2 = 36; Fc = 4000/(Fs/2);
Создайте коэффициенты фильтра с использованием заданных параметров.
[B1,A1] = designVarSlopeFilter(slope1,Fc,"hi","Orientation","row"); [B2,A2] = designVarSlopeFilter(slope2,Fc,"hi","Orientation","row");
Визуализация конструкции фильтра.
fvtool([B1,A1],[B2,A2],... "Fs",Fs,... "FrequencyScale","Log"); legend("slope = 18 dB/octave", ... "slope = 36 dB/octave", ... "Location","NorthWest")

Плозивы - созвучные звуки, возникающие в результате внезапного высвобождения воздушного потока. Они наиболее выражены в словах, начинающихся со звуков p, d и g. Плосивы могут быть подчеркнуты в процессе записи и часто неудивительны, чтобы услышать. В этом примере сведение к минимуму спозивов речевого сигнала осуществляется с помощью фильтрации верхних частот и низкополосного сжатия.
Создать dsp.AudioFileReader объект и audioDeviceWriter объект для считывания звукового сигнала из файла и записи звукового сигнала в устройство. Воспроизведение необработанного сигнала. Затем отпустите средство чтения файлов и устройство записи.
fileReader = dsp.AudioFileReader('audioPlosives.wav'); deviceWriter = audioDeviceWriter('SampleRate',fileReader.SampleRate); while ~isDone(fileReader) audioIn = fileReader(); deviceWriter(audioIn); end release(deviceWriter) release(fileReader)
Проектирование фильтра верхних частот с крутым накатом всех частот ниже 120 Гц. Использовать dsp.BiquadFilter изобретение позволяет реализовать конструкцию фильтра верхних частот. Создайте перекрестный фильтр с одним перекрестным фильтром на частоте 250 Гц. Перекрестный фильтр позволяет разделить интересующую полосу для обработки. Создайте компрессор динамического диапазона, чтобы сжать динамический диапазон плозивных звуков. Чтобы не применять прирост подпитки, установите MakeUpGainMode комуProperty" и используйте 0 дБ по умолчанию MakeUpGain значение свойства. Создайте область времени для визуализации обработанного и необработанного аудиосигнала.
[B,A] = designVarSlopeFilter(48,120/(fileReader.SampleRate/2),"hi"); biquadFilter = dsp.BiquadFilter( ... "SOSMatrixSource","Input port", ... "ScaleValuesInputPort",false); crossFilt = crossoverFilter( ... "SampleRate",fileReader.SampleRate, ... "NumCrossovers",1, ... "CrossoverFrequencies",250, ... "CrossoverSlopes",48); dRCompressor = compressor( ... "Threshold",-35, ... "Ratio",10, ... "KneeWidth",20, ... "AttackTime",1e-4, ... "ReleaseTime",3e-1, ... "MakeUpGainMode","Property", ... "SampleRate",fileReader.SampleRate); scope = timescope( ... "SampleRate",fileReader.SampleRate, ... "TimeSpanSource","property","TimeSpan",3, ... "BufferLength",fileReader.SampleRate*3*2, ... "YLimits",[-1 1], ... "ShowGrid",true, ... "ShowLegend",true, ... "ChannelNames",{'Original','Processed'});
В цикле аудиопотока:
Чтение в кадре аудиофайла.
Примените фильтрацию верхних частот с помощью биквад-фильтра.
Разделение звукового сигнала на две полосы.
Примените динамическое сжатие диапазона к нижней полосе.
Переделать каналы.
Запишите обработанный аудиосигнал на аудиоустройство для прослушивания.
Визуализация обработанных и необработанных сигналов во временном диапазоне.
Рекомендуется деблокировать объекты после их завершения.
while ~isDone(fileReader) audioIn = fileReader(); audioIn = biquadFilter(audioIn,B,A); [band1,band2] = crossFilt(audioIn); band1compressed = dRCompressor(band1); audioOut = band1compressed + band2; deviceWriter(audioOut); scope([audioIn audioOut]) end
Рекомендуется деблокировать объекты после их завершения.
release(deviceWriter) release(fileReader) release(crossFilt) release(dRCompressor) release(scope)

slope - Наклон фильтра (дБ/октава)Наклон фильтра в дБ/октаве, заданный как действительный скаляр в диапазоне [0:6:48]. Значения, не кратные 6, округляются.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Fc - Нормированная частота отсечкиНормализованная частота отсечения, заданная как действительный скаляр в диапазоне от 0 до 1, где 1 соответствует частоте Найквиста (δ рад/выборка).
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
type - Тип фильтра'lo' (по умолчанию) | 'hi'Тип фильтра, указанный как 'lo' или 'hi'.
'lo'-- Фильтр нижних частот
'hi'-- Фильтр верхних частот
Типы данных: 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:
Если 'Orientation' имеет значение "column", то B возвращается в виде матрицы 3 на 4. Каждый столбец B соответствует числительным коэффициентам другой секции второго порядка каскадного БИХ-фильтра.
Если 'Orientation' имеет значение "row", то B возвращается в виде матрицы 4 на 3. Каждая строка B соответствует числительным коэффициентам другой секции второго порядка каскадного БИХ-фильтра.
A - Коэффициенты фильтра знаменателяКоэффициенты фильтра знаменателя, возвращаемые в виде матрицы. Размер и толкование A зависит от Orientation:
Если 'Orientation' имеет значение "column", то A возвращается в виде матрицы 2 на 4. Каждый столбец A соответствует коэффициентам знаменателя другой секции второго порядка каскадного фильтра БИХ. A не включает начальный единичный коэффициент для каждого раздела.
Если 'Orientation' имеет значение "row", то B возвращается в виде матрицы 4 на 3. Каждая строка B соответствует коэффициентам знаменателя другой секции второго порядка каскадного фильтра БИХ.
[1] Орфанидис, Софокл Дж. «Дизайн цифрового параметрического эквалайзера высокого порядка». Журнал Общества аудиотехники. том 53, ноябрь 2005, стр. 1026-1046.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.