Сгенерируйте октавный спектр
возвращает октавный спектр сигнала p
= poctave(x
,fs
)x
дискретизация по скорости fs
. Октавный спектр является средней степенью над октавными полосами, как определено стандартом ANSI S1.11 [2]. Если x
является матрицей, затем функция оценивает октавный спектр независимо для каждого столбца и возвращает результат в соответствующем столбце p
.
задает дополнительные опции для любого из предыдущих синтаксисов, используя аргументы пары "имя-значение".p
= poctave(___,Name,Value
)
poctave(___)
без выходных аргументов строит графики октавного спектра или спектрограммы на текущей фигуре. Если type
задается как 'spectrogram'
, тогда эта функция поддерживается только для одноканального входа.
Произвести выборки белого Гауссова шума. Создайте сигнал псевдопинкового шума путем фильтрации белого шума с помощью фильтра, нули и полюса которого все находятся на положительной оси X. Визуализируйте нули и полюса.
N = 1e5; wn = randn(N,1); z = [0.982231570015379 0.832656605953720 0.107980893771348]'; p = [0.995168968915815 0.943841773712820 0.555945259371364]'; [b,a] = zp2tf(z,p,1); pn = filter(b,a,wn); zplane(z,p)
Создайте двухканальный сигнал, состоящий из белого и розового шума. Вычислите октавный спектр. Примите частоту дискретизации 44,1 кГц. Установите полосу частот от 30 Гц до частоты Найквиста.
sg = [wn pn]; fs = 44100; poctave(sg,fs,'FrequencyLimits',[30 fs/2]) legend('White noise','Pink noise','Location','SouthEast')
Белый шум имеет октавный спектр, который увеличивается с частотой. Октавный спектр розового шума приблизительно постоянен во всей частотной области значений. Октавный спектр сигнала иллюстрирует, как человеческое ухо воспринимает сигнал.
Произвести выборки белого Гауссова шума, отобранные при 44,1 кГц. Создайте сигнал розового шума путем фильтрации белого шума с помощью фильтра, нули и полюса которого все находятся на положительной оси X.
N = 1e5; fs = 44.1e3; wn = randn(N,1); z = [0.982231570015379 0.832656605953720 0.107980893771348]'; p = [0.995168968915815 0.943841773712820 0.555945259371364]'; [b,a] = zp2tf(z,p,1); pn = filter(b,a,wn);
Вычислите оценку Уэлча спектральной плотности степени для обоих сигналов. Разделите сигналы на сегменты с 2048 выборками, задайте 50% перекрытия между смежными сегментами, окончите каждый сегмент окном Хэмминга и используйте 4096 точек ДПФ.
[pxx,f] = pwelch([wn pn],hamming(2048),1024,4096,fs);
Отобразите спектральные плотности в полосе частот от 200 Гц до частоты Найквиста. Используйте логарифмическую шкалу для оси частоты.
pwelch([wn pn],hamming(2048),1024,4096,fs) ax = gca; ax.XScale = 'log'; xlim([200 fs/2]/1000) legend('White','Pink')
Вычислите и отобразите октавные спектры сигналов. Используйте ту же частотную область значений, что и на предыдущем графике. Задайте шесть полос на октаву и вычислите спектры с помощью фильтров 8-го порядка.
poctave(pxx,fs,f,'BandsPerOctave',6,'FilterOrder',8,'FrequencyLimits',[200 fs/2],'psd') legend('White','Pink')
Считайте аудиозапись электронной зубной щетки в MATLAB ®. Зубная щетка включается примерно на 1,75 секунде и остается на протяжении примерно 2 секунд.
[y,fs] = audioread('toothbrush.m4a');
Вычислите октавную спектрограмму аудиосигнала. Задайте 48 полосы на октаву и 82% перекрытия. Ограничьте общую область значений от 100 Гц до fs
/ 2 Гц и использовать C-взвешивание.
poctave(y,fs,'spectrogram','BandsPerOctave',48,'OverlapPercent',82,'FrequencyLimits',[100 fs/2],'Weighting','C')
Произвести выборки белого Гауссова шума, отобранные при 44,1 кГц. Создайте сигнал розового шума путем фильтрации белого шума с помощью фильтра, нули и полюса которого все находятся на положительной оси X.
N = 1e5; fs = 44.1e3; wn = randn(N,1); z = [0.982231570015379 0.832656605953720 0.107980893771348]'; p = [0.995168968915815 0.943841773712820 0.555945259371364]'; [b,a] = zp2tf(z,p,1); pn = filter(b,a,wn);
Вычислите октавный спектр сигнала. Задайте три полосы на октаву и ограничьте общую частотную область значений от 200 Гц до 20 кГц. Сохраните пары "имя-значение" в массиве ячеек для дальнейшего использования. Отобразите спектр.
flims = [200 20e3]; bpo = 3; opts = {'FrequencyLimits',flims,'BandsPerOctave',bpo}; poctave(pn,fs,opts{:});
Вычислите октавный спектр сигнала с теми же настройками, но используйте C-взвешивание. Взвешенный по C спектр падает на частотах выше 6 кГц.
hold on poctave(pn,fs,opts{:},'Weighting','C')
Снова вычислите октавный спектр, но теперь используйте A-взвешивание. Спектр, взвешенный А, достигает максимума приблизительно 3 кГц и падает выше 6 кГц и на нижнем конце полосы частот.
poctave(pn,fs,opts{:},'Weighting','A') hold off legend('Pink noise','C-weighted','A-weighted','Location','SouthWest')
x
- Входной сигналВходной сигнал, заданный как вектор или матрица. Если x
является вектором, тогда poctave
рассматривает его как единый канал. Если x
является матрицей, тогда poctave
вычисляет октавный спектр или спектрограмму независимо для каждого столбца и возвращает результат в соответствующий столбец p
. Если type
установлено в 'spectrogram'
функция конкатенирует спектрограммы по третьей размерности p
.
Пример: sin(2*pi*(0:127)/16)+randn(1,128)/100
задает шумную синусоиду.
Пример: [2 1].*sin(2*pi*(0:127)'./[16 64])
задает двухканальную синусоиду.
Типы данных: single
| double
fs
- Частота дискретизацииЧастота дискретизации, заданная как положительная скалярная величина, выраженная в герцах. Частота дискретизации не может быть ниже 7 Гц.
xt
- Входное расписаниеВходное расписание. xt
должно содержать увеличивающиеся, конечные, равномерно разнесенные строки. Если xt
представляет многоканальный сигнал, тогда он должен иметь либо одну переменную, содержащую матрицу, либо несколько переменных, состоящих из векторов.
Если расписание имеет отсутствующие или повторяющиеся точки времени, можно исправить его с помощью советов в разделе «Чистое расписание с пропущенными, повторяющимися или неоднородными временами».
Пример: timetable(seconds(0:4)',randn(5,1))
задает случайный процесс, дискретизированный с частотой дискретизации 1 Гц в течение 4 секунд.
pxx
- Спектральная плотность степениСпектральная плотность степени (PSD), заданная в виде вектора или матрицы с действительными неотрицательными элементами. Спектральная плотность степени должна быть выражена в линейных модулях, а не децибелах. Использовать db2pow
для преобразования значений децибеля в значения мощности. Если type
является 'spectrogram'
, затем каждый столбец в pxx
рассматривается как PSD для определенного временного окна или выборки.
Пример: [pxx,f] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2))
задает оценку PSD периодограммы зашумленной двухканальной синусоиды, выбранной на 2, Гц, и частоты, на которых она вычисляется.
f
- частоты PSDЧастоты PSD, заданные как вектор. f
должна быть конечной, строго увеличивающейся и равномерно разнесенной в линейной шкале.
Пример: [pxx,f] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2))
задает оценку PSD периодограммы зашумленной двухканальной синусоиды, выбранной на 2, Гц, и частоты, на которых она вычисляется.
type
- Тип спектра для вычисления'power'
(по умолчанию) | 'spectrogram'
Тип спектра для вычисления, заданный как 'power'
или 'spectrogram'
.
'power'
- Вычислите октавный спектр степени входа.
'spectrogram'
- Вычислите октавную спектрограмму входа. Функция делит вход на сегменты и возвращает кратковременный спектр октавной степени каждого сегмента.
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'Weighting','A','FilterOrder',8
вычисляет октавный спектр с использованием фильтров А-взвешивания и 8-го порядка.'BandsPerOctave'
- Количество поддиапазонов в октавной полосе1
(по умолчанию) | 3/2
| 2
| 3
| 6
| 12
| 24
| 48
| 96
Количество поддиапазонов в октавной полосе, заданное как разделенная разделенными запятой парами, состоящая из 'BandsPerOctave'
и 1, 3/2, 2, 3, 6, 12, 24, 48 или 96. Этот параметр диктует ширину дробно-октавной полосы. В такой полосе частот частота верхнего ребра является частотой нижнего ребра, умноженной на 21/b, где b количество поддиапазонов.
Типы данных: single
| double
'FilterOrder'
- Порядок полосно-пропускающих фильтров6
(по умолчанию) | положительное четное целое числоПорядок полосно-пропускающих фильтров, заданный как разделенная запятыми пара, состоящая из 'FilterOrder'
и положительное четное целое число.
Типы данных: single
| double
'FrequencyLimits'
- Диапазон частот[max
(3,3* fs
/48e3) fs
/2]
(по умолчанию) | двухэлементный векторЧастотные полосы, заданные как разделенная запятой пара, состоящие из 'FrequencyLimits'
и увеличивающийся двухэлементный вектор, экспрессируемый в Гц. Нижнее значение вектора должно быть не менее 3 Гц. Верхнее значение вектора должно быть меньше или равно частоте Найквиста. Если вектор не содержит октавного центра, poctave
может возвращать центральную частоту за пределы заданных пределов. Чтобы гарантировать стабильное создание фильтра, фактический минимальный достижимый предел частоты увеличивается до 3
если частота дискретизации превышает 48 кГц. Если этот аргумент не задан, * fs
/48e3poctave
использует интервал [
.max
(3,3* fs
/48e3) fs
/2]
Типы данных: single
| double
'Weighting'
- Взвешивание частот'none'
(по умолчанию) | 'A'
| 'C'
| вектор | матрица | массив ячеек 1 на 2 | digitalFilter
объектВзвешивание частот, заданное как разделенная разделенными запятой парами, состоящая из 'Weighting'
и одно из следующих:
'none'
— poctave
не выполняет никакого взвешивания частоты на входе.
'A'
— poctave
выполняет A-взвешивание на входе. Стандарт S1.42 ANSI задает кривую А-взвешивания. Стандарт МЭК 61672-1 определяет минимальные и максимальные пределы ослабления для А-взвешивающего фильтра. Стандарт S1.42.2001 ANSI задает кривую взвешивания путем определения аналоговых полюсов и нулей.
'C'
— poctave
выполняет C-взвешивание на входе. Стандарт S1.42 ANSI задает кривую C-взвешивания. Стандарт МЭК 61672-1 определяет минимальные и максимальные пределы ослабления для С-взвешивающего фильтра. Стандарт S1.42.2001 ANSI задает кривую взвешивания путем определения аналоговых полюсов и нулей.
Вектор - poctave
обрабатывает вход как вектор коэффициентов, которые задают фильтр с конечной импульсной характеристикой (КИХ).
Матрица - poctave
обрабатывает вход как матрицу коэффициентов секции второго порядка, которые задают фильтр с бесконечной импульсной характеристикой (БИХ). Матрица должна иметь как минимум две строки и ровно шесть столбцов.
массив ячеек 1 на 2 - poctave
обрабатывает вход как коэффициенты числителя и знаменателя в этом порядке, которые определяют передаточную функцию БИХ.
digitalFilter
объект - poctave
обрабатывает вход как фильтр, который был разработан с использованием designfilt
.
Этот аргумент поддерживается только, когда вход является сигналом. Октавное сглаживание не поддерживает частотное взвешивание.
Пример: 'Weighting',fir1(30,0.5)
задает КИХ-фильтр 30-го порядка с нормализованной частотой среза 0,5 π рад/образец.
Пример: 'Weighting',[2 4 2 6 0 2;3 3 0 6 0 0]
задает фильтр Баттерворта третьего порядка с нормированной частотой 3-dB 0,5 π рад/выборка.
Пример: 'Weighting',{[1 3 3 1]/6 [3 0 1]/3}
задает фильтр Баттерворта третьего порядка с нормированной частотой 3-dB 0,5 π рад/выборка.
Пример: 'Weighting',designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.5)
задает фильтр Баттерворта третьего порядка с нормированной частотой 3-dB 0,5 π рад/выборка.
Типы данных: single
| double
| char
| string
| cell
'MinThreshold'
- нижняя граница для ненулевых значений-Inf
(по умолчанию) | действительный скалярНижняя граница для ненулевых значений, заданная как разделенная разделенными запятой парами, состоящая из 'MinThreshold'
и настоящий скаляр. Функция устанавливает эти элементы p
таким образом 10 лог10 (p
) ≤ <reservedrangesplaceholder0>
в нуль. Задайте 'MinThreshold'
в децибелах.
Типы данных: single
| double
'WindowLength'
- Длина сегментов данныхДлина сегментов данных, заданная как разделенная разделенными запятой парами, состоящая из 'WindowLength'
и неотрицательное целое число. 'WindowLength'
должен быть меньше или равен длине входного сигнала. Если не указано, длина сегментов данных вычисляется на основе размера входного сигнала. Этот вход действителен только при type
является 'spectrogram'
.
Типы данных: single
| double
'OverlapPercent'
- Процент перекрытия между смежными сегментамиПроцент перекрытия между смежными сегментами, заданный как разделенная разделенными запятой парами, состоящая из 'OverlapPercent'
и действительный скаляр в интервале [0, 100). Если не указано, 'OverlapPercent'
равен нулю. Этот вход действителен только при type
является 'spectrogram'
.
Типы данных: single
| double
p
- Октавный спектр или спектрограммаОктавный спектр или спектрограмма, возвращенная в виде вектора, матрицы или трехмерные массивы. Третья размерность, если оно присутствует, соответствует входным каналам.
cf
- Центральные частотыЦентральные частоты, возвращенные как вектор. cf
содержит список центральных частот октавных полос, над которыми poctave
оценили октавный спектр. cf
содержит модули герца.
[1] Smith, Julius Orion, III. «Example: Synthesis of 1/F Noise (Pink Noise)». В спектральной обработке аудиосигнала. https://ccrma.stanford.edu/~jos/sasp/.
[2] Спецификация для аналоговых и цифровых фильтров Octave-Band и Fractional-Octave-Band. Стандартные S1.11-2004 ANSI. Melville, NY: Acoustical Society of America, 2004.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.