Генерировать октавный спектр
возвращает октавный спектр сигнала 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 точек DFT.
[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-взвешивание. Взвешенный С-спектр падает на частотах выше 6 кГц.
hold on poctave(pn,fs,opts{:},'Weighting','C')

Вычислите октавный спектр еще раз, но теперь используйте А-взвешивание. А-взвешенный спектр достигает пика при частоте около 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, указанные как вектор. 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 на входе. Стандарт ANSI S1.42 определяет кривую A-взвешивания. Стандарт IEC 61672-1 определяет минимальные и максимальные пределы затухания для фильтра A-weighting. Стандарт ANSI S1.42.2001 определяет весовую кривую путем указания аналоговых полюсов и нулей.
'C' — poctave выполняет взвешивание C на входе. Стандарт ANSI S1.42 определяет кривую весового коэффициента C. Стандарт IEC 61672-1 определяет минимальные и максимальные пределы ослабления для фильтра С-весов. Стандарт ANSI S1.42.2001 определяет весовую кривую путем указания аналоговых полюсов и нулей.
Вектор - poctave обрабатывает входной сигнал как вектор коэффициентов, которые задают фильтр конечной импульсной характеристики (FIR).
Матрица - poctave обрабатывает входной сигнал как матрицу коэффициентов сечения второго порядка, которые задают фильтр с бесконечной импульсной характеристикой (БИХ). Матрица должна содержать не менее двух строк и ровно шесть столбцов.
массив ячеек 1 на 2 - poctave обрабатывает входные данные как числительные и знаменательные коэффициенты в таком порядке, которые определяют передаточную функцию БИХ-фильтра.
digitalFilter объект - poctave обрабатывает входные данные как фильтр, который был разработан с использованием designfilt.
Этот аргумент поддерживается только в том случае, если вход является сигналом. Сглаживание октавы не поддерживает взвешивание частоты.
Пример: 'Weighting',fir1(30,0.5) задает фильтр FIR 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 log10 (p) ≤ 'MinThreshold' до нуля. Определить 'MinThreshold' в децибелах.
Типы данных: single | double
'WindowLength' - Длина сегментов данныхДлина сегментов данных, указанная как разделенная запятыми пара, состоящая из 'WindowLength' и неотрицательное целое число. 'WindowLength' должна быть меньше или равна длине входного сигнала. Если не указано, то длина сегментов данных вычисляется на основе размера входного сигнала. Этот ввод допустим только в том случае, если type является 'spectrogram'.
Типы данных: single | double
'OverlapPercent' - Процент перекрытия между соседними сегментамиПроцент перекрытия между соседними сегментами, определяемый как пара, разделенная запятыми, состоящая из 'OverlapPercent' и действительный скаляр в интервале [0, 100). Если не указано, 'OverlapPercent' равно нулю. Этот ввод допустим только в том случае, если type является 'spectrogram'.
Типы данных: single | double
p - Октавный спектр или спектрограммаОктавный спектр или спектрограмма, возвращаемые как вектор, матрица или 3-D массив. Третье измерение, если оно имеется, соответствует входным каналам.
cf - Центральные частотыЦентральные частоты, возвращаемые в виде вектора. cf содержит список центральных частот октавных полос, над которыми poctave оценивали октавный спектр. cf содержит единицы герца.
[1] Смит, Джулиус Орион, III. «Пример: синтез 1/F шума (розовый шум)». При обработке спектрального аудиосигнала. https://ccrma.stanford.edu/~jos/sasp/.
[2] Спецификация для октавных и дробных октавных аналоговых и цифровых фильтров. Стандарт ANSI S1.11-2004. Мелвилл, Нью-Йорк: Акустичное общество Америки, 2004.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.