Измерьте уровень звукового давления звукового сигнала
Система splMeter
object™ вычисляет измерения уровня звукового давления. Объект возвращает измерения для:
взвешенные частотой уровни звука
быстро или медленные взвешенные временем уровни звука
эквивалентно-непрерывные уровни звука
пиковые уровни звука
максимальные уровни звука
Реализовывать измерение SPL:
Создайте объект splMeter
и установите его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
SPL = splMeter
SPL = splMeter(Name,Value)
SPL = splMeter
создает Системный объект, SPL
, который выполняет измерение SPL.
SPL = splMeter(
наборы каждое свойство Name,Value
)Name
к заданному Value
. Незаданные свойства имеют значения по умолчанию.
SPL = splMeter('FrequencyWeighting','C-weighting','SampleRate',12000)
создает Системный объект, SPL
, который выполняет C-взвешивание и действует на уровне 12 кГц.Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и функция release
разблокировала их.
Если свойство является настраиваемым, можно изменить его значение в любое время.
Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).
Пропускная способность
Ширина аналитических полос'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
OctaveFilterOrder
— Порядок фильтра октавы2
(значение по умолчанию) | даже целое числоПорядок фильтра октавы, заданного как ровное целое число.
Настраиваемый: нет
Чтобы включить это свойство, установите Пропускную способность на '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
— Ссылочное давление для вычислений дБ (Pa)2e-5
(значение по умолчанию) | положительная скалярная величинаСсылочное давление для вычислений дБ в Pa, заданном как положительная скалярная величина.
Настраиваемый: да
Типы данных: single | double
TimeInterval
— Временной интервал для создания отчетов об измерениях (измерениях) уровня1
(значение по умолчанию) | положительная скалярная величинаВременной интервал, в секундах, чтобы сообщить об эквивалентно-непрерывных, пиковых, и максимальных взвешенных временем уровнях звука, заданных как положительное скалярное целое число.
Настраиваемый: нет
Типы данных: single | double
CalibrationFactor
— Скалярный калибровочный фактор умножается на входСкалярный калибровочный фактор умножается на вход.
Чтобы установить калибровочный фактор использование ссылочного тона, используйте calibrate
.
Настраиваемый: нет
Типы данных: single | double
SampleRate
— Введите частоту дискретизации (Гц)44100
(значение по умолчанию) | положительная скалярная величинаВведите частоту дискретизации в Гц, заданном как положительная скалярная величина.
Настраиваемый: нет
Типы данных: single | double
[Lt,Leq,Lpeak,Lmax]
= SPL(audioIn)
audioIn
— Аудиовход к метру SPLАудиовход к метру SPL, заданному как вектор-столбец или матрица. Столбцы матрицы обработаны как независимые звуковые каналы.
Типы данных: single | double
<
Взвешенный временем уровень звука (дБ)Взвешенный временем уровень звука в дБ, возвращенном как вектор-столбец, матрица или трехмерный массив тот же тип как audioIn
.
Размер и интерпретация выходных параметров зависят от того, во что установлено свойство Bandwidth:
'Full band'
(значение по умолчанию) – Lt
, Leq
, Lpeak
и Lmax
возвращены как вектор-столбцы или матрицы тот же размер как audioIn
.
'1 octave'
, '2/3 octave'
или '1/3 octave'
– Lt
, 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'
– Lt
, 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'
– Lt
, 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'
– Lt
, 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 с помощью Системного объекта dsp.TimeScope
.
Создайте объект dsp.AudioFileReader
читать в кадре звукового файла кадром. Создайте объект audioDeviceWriter
слушать звуковой сигнал. Создайте объект dsp.TimeScope
визуализировать измерения SPL. Создайте splMeter
, чтобы измерить уровень звукового давления звукового файла. Используйте калибровочный фактор по умолчанию 1.
source = dsp.AudioFileReader('Ambiance-16-44p1-mono-12secs.wav'); fs = source.SampleRate; player = audioDeviceWriter('SampleRate',fs); scope = dsp.TimeScope('SampleRate',fs, ... 'TimeSpanOverrunAction','Scroll', ... '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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.