Измерьте уровень звукового давления звукового сигнала
splMeter
Система object™ вычисляет измерения уровня звукового давления. Объект возвращает измерения для:
взвешенные частотой уровни звука
быстро или медленные взвешенные временем уровни звука
эквивалентно-непрерывные уровни звука
пиковые уровни звука
максимальные уровни звука
Реализовывать измерение SPL:
Создайте splMeter
объект и набор его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?.
SPL = splMeter
создает Системный объект, SPL
, это выполняет измерение SPL.
SPL = splMeter(
наборы каждое свойство Name,Value
)Name
к заданному Value
. Незаданные свойства имеют значения по умолчанию.
SPL = splMeter('FrequencyWeighting','C-weighting','SampleRate',12000)
создает Системный объект, SPL
, это выполняет C-взвешивание и действует на уровне 12 кГц.Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и release
функция разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты.
Bandwidth
— Ширина аналитических полос'Full band'
(значение по умолчанию) | '1 octave'
| '2/3 octave'
| '1/3 octave'
Ширина аналитических полос в виде 'Full band'
, '1 octave'
, '2/3 octave'
, или '1/3 octave'
. Если Bandwidth
задан как 'Full band'
, метр SPL возвращает один набор измерений для целого диапазона частот. Если Bandwidth
задан как '1 octave'
, '2/3 octave'
, или '1/3 octave'
, метр SPL возвращает один набор измерений на полосу дробной октавы или октаву.
Настраиваемый: нет
Типы данных: char |
string
FrequencyRange
— Частотный диапазон набора фильтров (Гц)
(значение по умолчанию) | двухэлементный вектор-строка из положительных монотонно увеличивающих значенийЧастотный диапазон набора фильтров в Гц в виде двухэлементного вектора-строки из положительных монотонно увеличивающих значений. Диапазоны частот сосредоточены выше SampleRate
/2 исключены.
Настраиваемый: нет
Чтобы включить это свойство, установите Bandwidth
к '1 octave'
, '2/3 octave'
, или '1/3 octave'
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
OctaveFilterOrder
— Порядок фильтра октавы
(значение по умолчанию) | даже целое числоПорядок октавы фильтрует в виде ровного целого числа.
Настраиваемый: нет
Чтобы включить это свойство, установите Bandwidth
к '1 octave'
, '2/3 octave'
, или '1/3 octave'
.
Типы данных: single
| double
FrequencyWeighting
— Взвешивание частоты применяется к входному'A-weighting'
(значение по умолчанию) | 'C-weighting'
| 'Z-weighting'
(никакое взвешивание)Взвешивание частоты, примененное к входному в виде 'A-weighting'
, 'C-weighting'
, или 'Z-weighting'
, где Z-взвешивание не соответствует никакому взвешиванию. Взвешивание частоты спроектировано и реализовало использование weightingFilter
Системный объект.
Настраиваемый: нет
Типы данных: char |
string
TimeWeighting
— Взвешивание (взвешивания) времени'Fast'
(значение по умолчанию) | 'Slow'
Время взвесив, в секундах, для вычисления взвешенного временем уровня звука и максимума взвешенный временем уровень звука в виде 'Fast'
или 'Slow'
. TimeWeighting
свойство используется, чтобы задать коэффициент фильтра lowpass.
'Fast'
– 1/8
'Slow'
– 1
Настраиваемый: да
Типы данных: char |
string
PressureReference
— Ссылочное давление для вычислений дБ (Па)2e-5
(значение по умолчанию) | положительная скалярная величинаСсылочное давление для вычислений дБ в Па в виде положительной скалярной величины.
Настраиваемый: да
Типы данных: single
| double
TimeInterval
— Временной интервал для создания отчетов об измерениях (измерениях) уровня
(значение по умолчанию) | положительная скалярная величинаВременной интервал, в секундах, чтобы сообщить об эквивалентно-непрерывных, пиковых, и максимальных взвешенных временем уровнях звука в виде положительного скалярного целого числа.
Настраиваемый: нет
Типы данных: single
| double
CalibrationFactor
— Калибровочный фактор умножается на входСкаляр (моно вход) или вектор (многоканальный вход) калибровочный фактор, умноженный на вход.
Чтобы установиться калибровочный коэффициент использование ссылочного тона, использовать calibrate
.
Настраиваемый: нет
Типы данных: single
| double
SampleRate
— Введите частоту дискретизации (Гц)
(значение по умолчанию) | положительная скалярная величинаВведите частоту дискретизации в Гц в виде положительной скалярной величины.
Настраиваемый: нет
Типы данных: single
| double
audioIn
— Аудиовход к метру SPLАудиовход к метру SPL в виде вектор-столбца или матрицы. Столбцы матрицы обработаны как независимые звуковые каналы.
Типы данных: single
| double
Lt
— Взвешенный временем уровень звука (дБ)Взвешенный временем уровень звука в дБ, возвращенном как вектор-столбец, матрица или трехмерный массив тот же тип как audioIn
.
Размер и интерпретация выходных параметров зависят от того, во что установлено свойство Bandwidth:
'Full band'
(значение по умолчанию) – Lt
, Leq
, Lpeak
, и Lmax
возвращены как вектор-столбцы или матрицы тот же размер как audioIn
.
'1 octave'
, '2/3 octave'
, или '1/3 octave'
<
, Leq
, Lpeak
, и Lmax
возвращены как L-by-B-by-C массивы.
L Количество строк в audioIn
B Количество полос октавы
C Количество столбцов в audioIn
Типы данных: single
| double
Leq
— Эквивалентно-непрерывный уровень звука (дБ)Эквивалентно-непрерывный уровень звука в дБ, возвращенном как вектор-столбец, матрица или трехмерный массив тот же тип как audioIn
.
Размер и интерпретация выходных параметров зависят от того, во что установлено свойство Bandwidth:
'Full band'
(значение по умолчанию) – Lt
, Leq
, Lpeak
, и Lmax
возвращены как вектор-столбцы или матрицы тот же размер как audioIn
.
'1 octave'
, '2/3 octave'
, или '1/3 octave'
<
, Leq
, Lpeak
, и Lmax
возвращены как L-by-B-by-C массивы.
L Количество строк в audioIn
B Количество полос октавы
C Количество столбцов в audioIn
Типы данных: single
| double
Lpeak
— Пиковый уровень звука (дБ)Пиковый уровень звука в дБ, возвращенном как вектор-столбец, матрица или трехмерный массив тот же тип как audioIn
.
Размер и интерпретация выходных параметров зависят от того, во что установлено свойство Bandwidth:
'Full band'
(значение по умолчанию) – Lt
, Leq
, Lpeak
, и Lmax
возвращены как вектор-столбцы или матрицы тот же размер как audioIn
.
'1 octave'
, '2/3 octave'
, или '1/3 octave'
<
, Leq
, Lpeak
, и Lmax
возвращены как L-by-B-by-C массивы.
L Количество строк в audioIn
B Количество полос октавы
C Количество столбцов в audioIn
Типы данных: single
| double
Lmax
— Максимум взвешенный временем уровень звука (дБ)Максимум взвешенный временем уровень звука в дБ, возвращенном как вектор-столбец, матрица или трехмерный массив тот же тип как audioIn
.
Размер и интерпретация выходных параметров зависят от того, во что установлено свойство Bandwidth:
'Full band'
(значение по умолчанию) – Lt
, Leq
, Lpeak
, и Lmax
возвращены как вектор-столбцы или матрицы тот же размер как audioIn
.
'1 octave'
, '2/3 octave'
, или '1/3 octave'
<
, Leq
, Lpeak
, и Lmax
возвращены как L-by-B-by-C массивы.
L Количество строк в audioIn
B Количество полос октавы
C Количество столбцов в audioIn
Типы данных: single
| double
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
calibrate | Калибруйте метр с помощью калибровочного тона с известным уровнем |
getCenterFrequencies | Центральные частоты фильтров |
Используйте splMeter
Система object™, чтобы измерить уровень звукового давления A-weighted сигнала передачи потокового аудио. Задайте двухсекундный временной интервал для создания отчетов и быстрого взвешивания времени. Визуализируйте измерения SPL с помощью timescope
объект.
Создайте dsp.AudioFileReader
возразите, чтобы читать в системе координат звукового файла системой координат. Создайте audioDeviceWriter
объект слушать звуковой сигнал. Создайте timescope
объект визуализировать измерения SPL. Создайте splMeter
измерять уровень звукового давления звукового файла. Используйте калибровочный фактор по умолчанию 1.
source = dsp.AudioFileReader('Ambiance-16-44p1-mono-12secs.wav'); fs = source.SampleRate; player = audioDeviceWriter('SampleRate',fs); scope = timescope('SampleRate',fs, ... 'TimeSpanOverrunAction','Scroll', ... 'TimeSpanSource','Property','TimeSpan',3,'ShowGrid',true, ... 'YLimits',[20 110],'AxesScaling','Auto', ... 'ShowLegend',true,'BufferLength',4*3*fs, ... 'ChannelNames', ... {'Lt_AF','Leq_A','Lpeak_A','Lmax_AF'}, ... 'Name','Sound Pressure Level Meter'); SPL = splMeter('TimeWeighting','Fast', ... 'FrequencyWeighting','A-weighting', ... 'SampleRate',fs, ... 'TimeInterval',2);
В цикле аудиопотока:
Читайте в системе координат звукового сигнала.
Проигрывайте звуковой сигнал к своему устройству вывода.
Вызовите метр SPL, чтобы возвратить взвешенные временем, эквивалентно-непрерывные, пиковые, и максимальные взвешенные временем уровни звука в дБ.
Отобразите уровни звука с помощью осциллографа.
Как лучшая практика, выпустите свои объекты однажды завершенный.
while ~isDone(source) x = source(); player(x); [Lt,Leq,Lpeak,Lmax] = SPL(x); scope([Lt,Leq,Lpeak,Lmax]) end release(source) release(player) release(SPL) release(scope)
splMeter
позволяет вам контролировать уровень звукового давления для полос дробной октавы и октавы. В этом примере вы контролируете эквивалентно-непрерывный уровень звукового давления 1/3-octave полос.
Создайте dsp.AudioFileReader
возразите, чтобы читать в системе координат звукового файла системой координат. Создайте audioDeviceWriter
возразите, таким образом, можно слушать звуковой сигнал. Создайте splMeter
измерять уровень звукового давления октавы звукового файла. Используйте калибровочный фактор по умолчанию 1. Создайте dsp.ArrayPlot
объект визуализировать эквивалентно-непрерывный SPL для каждой полосы октавы.
source = dsp.AudioFileReader('JetAirplane-16-11p025-mono-16secs.wav'); fs = source.SampleRate; player = audioDeviceWriter('SampleRate',fs); SPL = splMeter( ... 'Bandwidth','1/3 octave', ... 'SampleRate',fs); centerFrequencies = getCenterFrequencies(SPL); scope = dsp.ArrayPlot(... 'XDataMode','Custom', ... 'CustomXData',centerFrequencies, ... 'XLabel','Octave Band Center Frequencies (Hz)', ... 'YLabel','Equivalent-Continuous Sound Level (dB)', ... 'YLimits',[20 90], ... 'ShowGrid',true, ... 'Name','Sound Pressure Level Meter');
В цикле аудиопотока:
Читайте в системе координат звукового сигнала.
Проигрывайте звуковой сигнал к своему устройству вывода.
Вызовите метр SPL, чтобы возвратить эквивалентно-непрерывный уровень звукового давления в дБ.
Отобразите уровни звука с помощью осциллографа. Обновите осциллограф только, когда эквивалентно-непрерывный уровень звукового давления изменится.
Как лучшая практика, выпустите свои объекты однажды завершенный.
LeqPrevious = zeros(size(centerFrequencies)); while ~isDone(source) x = source(); player(x); [~,Leq] = SPL(x); for i = 1:size(Leq,1) if LeqPrevious ~= Leq(i,:) scope(Leq(i,:)') LeqPrevious = Leq(i,:); end end end release(source) release(player) release(SPL) release(scope)
Вычисления уровня звукового давления следуют алгоритмам, описанным в [1]. Можно задать значения свойств, чтобы соответствовать стандартам [2] и [3].
С учетом эффектов экологического и устройства ввода данных в измерениях SPL аудиовход умножается на калибровочный фактор:
CalibrationFactor
свойство может быть установлено непосредственно, или при помощи calibrate
функция, которая сравнивает известный уровень с полученными данными. Известный уровень определяется с помощью физического калибратора.
A-, C-или взвешивание Z-частоты применяются. Взвешивание частоты реализовано с помощью weightingFilter
Системный объект.
Если вы задаете Bandwidth
свойство как '1 octave'
, '2/3 octave'
или '1/3 octave'
, затем вычисления SPL применяются к каждой октаве или полосе дробной октавы. Эти аналитические полосы определяются после взвешивания частоты.
Взвешенный временем уровень звука задан как отношение взвешенного временем корневого среднеквадратического звукового давления к ссылочному звуковому давлению, преобразованному в дБ. Таким образом,
h (y 2) может быть интерпретирован как свертка y 2 с фильтром с импульсной характеристикой . y является выход взвешивающего частоту фильтра. Импульсная характеристика соответствует фильтру lowpass формы . Используя импульсную инвариантность, дискретный фильтр может быть интерпретирован как,
τ задан взвешивающим время коэффициентом как 0,125 (если TimeWeighting
установлен в 'Fast'
) или 1 (если TimeWeighting
установлен to'Slow'
).
fs является частотой дискретизации, заданной SampleRate
свойство.
Эквивалентно-непрерывный уровень звука также называется средним во времени уровнем звука. Это задано как отношение корневого среднеквадратического звукового давления к ссылочному звуковому давлению, преобразованному в дБ. Таким образом,
где
y является выход взвешивающего частоту фильтра.
p o является ссылочным звуковым давлением, заданным PressureReference
свойство.
Пиковый уровень звука задан как отношение пикового звукового давления к ссылочному звуковому давлению, преобразованному в дБ. Таким образом,
где
y является выход взвешивающего частоту фильтра.
p o является ссылочным звуковым давлением, заданным PressureReference
свойство.
Максимум взвешенный временем уровень звука задан как самый большой взвешенный временем уровень звука в установленном временном интервале.
[1] Харрис, Сирил М. Руководство Акустических Измерений и Шумового Управления. 3-й американский Институт редактора Физики, 1998.
[2] Международная электротехническая комиссия. Электроакустика - метры Уровня звука - Часть 1: Технические требования. 61672-1:2013 IEC.
[3] Американский национальный институт стандартов. ANSI S1.4: спецификация для метров уровня звука. 1983.
Указания и ограничения по применению:
Системные объекты в Генерации кода MATLAB (MATLAB Coder)
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.