poctave

Сгенерируйте октавный спектр

Описание

пример

p = poctave(x,fs) возвращает октавный спектр x сигнала произведенный на уровне fs. Октавный спектр является средней степенью по полосам октавы, как задано стандартом ANSI S1.11 [2]. Если x матрица, затем функция оценивает октавный спектр независимо для каждого столбца и возвращает результат в соответствующий столбец p.

p = poctave(xt) возвращает октавный спектр сигнала, сохраненного в MATLAB® расписание xt.

пример

p = poctave(pxx,fs,f) выполняет сглаживание октавы путем преобразования спектральной плотности мощности, pxx, к 1/b спектру мощности октавы, где b является количеством поддиапазонов в полосе октавы. Частоты в f соответствуйте оценкам PSD в pxx.

пример

p = poctave(___,type) задает вид спектрального анализа, выполняемого функцией. Задайте type как 'power' или 'spectrogram'.

пример

p = poctave(___,Name,Value) задает дополнительные опции для любого из предыдущих синтаксисов с помощью аргументов name-value.

[p,cf] = poctave(___) также возвращает центральные частоты полос октавы, по которым вычисляется октавный спектр.

[p,cf,t] = poctave(___) дополнительно возвращает временной вектор, t, соответствие центральным временам сегментов использовалось для расчета оценок спектра мощности когда type 'spectrogram'.

poctave(___) без выходных аргументов строит октавный спектр или спектрограмму в текущей фигуре. Если type задан как 'spectrogram', затем эта функция поддерживается только для одноканального входа.

Примеры

свернуть все

Сгенерировать 105 выборки белого Гауссова шума. Создайте сигнал псевдорозового шума путем фильтрации белого шума с фильтром, нули которого и полюса - все на положительной оси 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)

Figure contains an axes object. The axes object contains 3 objects of type line.

Создайте двухканальный сигнал, состоящий из бело-розового шума. Вычислите октавный спектр. Примите частоту дискретизации 44,1 кГц. Установите диапазон частот от 30 Гц до частоты Найквиста.

sg = [wn pn];

fs = 44100;

poctave(sg,fs,'FrequencyLimits',[30 fs/2])
legend('White noise','Pink noise','Location','SouthEast')

Figure contains an axes object. The axes object with title Octave Spectrum contains 2 objects of type stair. These objects represent White noise, Pink noise.

Белый шум имеет октавный спектр, который увеличивается с частотой. Октавный спектр розового шума является приблизительно постоянным в частотном диапазоне. Октавный спектр сигнала иллюстрирует, как человеческое ухо чувствует сигнал.

Сгенерировать 105 выборки белого Гауссова шума производятся на уровне 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%-е перекрытие между смежными сегментами, окно каждый сегмент с Окном Хэмминга, и используйте 4 096 точек ДПФ.

[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')

Figure contains an axes object. The axes object with title Welch Power Spectral Density Estimate contains 2 objects of type line. These objects represent White, Pink.

Вычислите и отобразите октавные спектры сигналов. Используйте тот же частотный диапазон в качестве в предыдущем графике. Задайте шесть полос на октаву и вычислите спектры с помощью фильтров 8-го порядка.

poctave(pxx,fs,f,'BandsPerOctave',6,'FilterOrder',8,'FrequencyLimits',[200 fs/2],'psd')
legend('White','Pink')

Figure contains an axes object. The axes object with title 1/6 - Octave Smoothing contains 2 objects of type stair. These objects represent 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')

Figure contains an axes object. The axes object with title 1/48 - Octave Spectrogram contains an object of type image.

Сгенерировать 105 выборки белого Гауссова шума производятся на уровне 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{:});

Figure contains an axes object. The axes object with title 1/3 - Octave Spectrum contains an object of type bar.

Вычислите октавный спектр сигнала с теми же настройками, но используйте C-взвешивание. Спектр C-weighted уменьшается на частотах выше 6 кГц.

hold on
poctave(pn,fs,opts{:},'Weighting','C')

Figure contains an axes object. The axes object with title 1/3 - Octave Spectrum contains 2 objects of type bar.

Вычислите октавный спектр снова, но теперь используйте A-взвешивание. Спектр A-weighted достигает максимума на уровне приблизительно 3 кГц и уменьшается выше 6 кГц и на более низком уровне диапазона частот.

poctave(pn,fs,opts{:},'Weighting','A')
hold off
legend('Pink noise','C-weighted','A-weighted','Location','SouthWest')

Figure contains an axes object. The axes object with title 1/3 - Octave Spectrum contains 3 objects of type bar. These objects represent Pink noise, C-weighted, A-weighted.

Входные параметры

свернуть все

Входной сигнал в виде вектора или матрицы. Если 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

Частота дискретизации в виде положительной скалярной величины описывается в герц. Частота дискретизации не может быть ниже, чем 7 Гц.

Введите расписание. xt должен содержать увеличение, конечные, однородно расположенные с интервалами времена строки. Если xt представляет многоканальный сигнал, затем он должен иметь или одну переменную, содержащую матрицу или несколько переменных, состоящих из векторов.

Если расписание имеет пропавших без вести или дублирующиеся моменты времени, можно зафиксировать его с помощью советов в Чистом Расписании с Пропавшими без вести, Копией, или Неоднородные Времена.

Пример: timetable(seconds(0:4)',randn(5,1)) задает вероятностный процесс, произведенный на уровне 1 Гц в течение 4 секунд.

Спектральная плотность мощности (PSD) в виде вектора или матрицы с действительными неотрицательными элементами. Спектральная плотность мощности должна быть описана в линейных модулях, не децибелах. Использование db2pow преобразовывать значения децибела, чтобы привести в действие значения. Если type 'spectrogram', затем каждый столбец в pxx считается PSD для окна определенного времени или выборки.

Пример: [pxx,f] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2)) задает периодограмму оценка PSD шумной двухканальной синусоиды, произведенной в 2π Гц и частоты, на которых это вычисляется.

Частоты PSD в виде вектора. f должно быть конечным, строго увеличение, и однородно распределенный в линейной шкале.

Пример: [pxx,f] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2)) задает периодограмму оценка PSD шумной двухканальной синусоиды, произведенной в 2π Гц и частоты, на которых это вычисляется.

Тип спектра, чтобы вычислить в виде 'power' или 'spectrogram'.

  • 'power' — Вычислите спектр мощности октавы входа.

  • 'spectrogram' — Вычислите спектрограмму октавы входа. Функция делит вход на сегменты и возвращает кратковременный спектр мощности октавы каждого сегмента.

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Weighting','A','FilterOrder',8 вычисляет октавный спектр с помощью фильтров 8-го порядка и A-взвешивания.

Количество поддиапазонов в полосе октавы в виде 1, 3/2, 2, 3, 6, 12, 24, 48, или 96. Этот параметр диктует ширину полосы дробной октавы. В таком диапазоне частот верхняя частота ребра является более низкими временами частоты ребра 21/b, где b является количеством поддиапазонов.

Типы данных: single | double

Порядок полосовых фильтров в виде положительного даже целое число.

Типы данных: single | double

Диапазон частот в виде увеличивающегося двухэлементного вектора описывается в герц. Нижнее значение вектора должно составить по крайней мере 3 Гц. Верхнее значение вектора должно быть меньшим, чем или равным частоте Найквиста. Если вектор не содержит центр октавы, poctave может возвратить центральную частоту вне заданных пределов. Чтобы гарантировать устойчивое создание фильтра, фактический минимальный достижимый предел частоты увеличивается до 3*fs/48e3 если частота дискретизации превышает 48 кГц. Если этот аргумент не задан, poctave использует интервал [max(3,3*fs/48e3) fs/2].

Типы данных: single | double

Взвешивание частоты в виде одного из них:

  • 'none'poctave не выполняет взвешивания частоты на входе.

  • 'A'poctave выполняет A-взвешивание на входе. Стандарт ANSI S1.42 задает кривую A-взвешивания. IEC 61672-1 стандарт задает минимальные и максимальные пределы затухания для фильтра A-взвешивания. Стандарт ANSI S1.42.2001 задает кривую взвешивания путем определения аналоговых полюсов и нулей.

  • 'C'poctave выполняет C-взвешивание на входе. Стандарт ANSI S1.42 задает кривую C-взвешивания. IEC 61672-1 стандарт задает минимальные и максимальные пределы затухания для фильтра C-взвешивания. Стандарт ANSI S1.42.2001 задает кривую взвешивания путем определения аналоговых полюсов и нулей.

  • Вектор — poctave обрабатывает вход как вектор из коэффициентов, которые задают фильтр конечной импульсной характеристики (FIR).

  • Матрица — poctave обрабатывает вход как матрицу коэффициентов секции второго порядка, которые задают фильтр бесконечной импульсной характеристики (IIR). Матрица должна иметь по крайней мере две строки и точно шесть столбцов.

  • 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 дБ 0.5π рад/отсчет.

Пример: 'Weighting',{[1 3 3 1]/6 [3 0 1]/3} задает третий порядок Фильтр Баттерворта с нормированной частотой на 3 дБ 0.5π рад/отсчет.

Пример: 'Weighting',designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.5) задает третий порядок Фильтр Баттерворта с нормированной частотой на 3 дБ 0.5π рад/отсчет.

Типы данных: single | double | char | string | cell

Нижняя граница для ненулевых значений в виде действительного скаляра. Функция устанавливает те элементы p таким образом, что 10 log10 (p) ≤ 'MinThreshold' обнулять. Задайте 'MinThreshold' в децибелах.

Типы данных: single | double

Длина сегментов данных в виде неотрицательного целого числа. 'WindowLength' должно быть меньше чем или равно длине входного сигнала. Если не заданный, длина сегментов данных вычисляется на основе размера входного сигнала. Этот вход допустим только когда type 'spectrogram'.

Типы данных: single | double

Перекройте процент между смежными сегментами в виде действительного скаляра в интервале [0, 100). Если не заданный, 'OverlapPercent' нуль. Этот вход допустим только когда type 'spectrogram'.

Типы данных: single | double

Выходные аргументы

свернуть все

Октавный спектр или спектрограмма, возвращенная как вектор, матрица или трехмерный массив. Третья размерность, если есть соответствует входным каналам.

Центральные частоты, возвращенные как вектор. cf содержит список центральных частот полос октавы по который poctave оцененный октавный спектр. cf имеет модули герц.

Центральные времена, возвращенные как вектор. Если вход является PSD, то t представляет демонстрационные индексы, соответствующие столбцам pxx. Этот аргумент применяется только когда type 'spectrogram'.

Алгоритмы

свернуть все

Octave analysis используется, чтобы идентифицировать звук или уровни вибрации через широкий частотный диапазон в процессе, который напоминает, как человеческое ухо чувствует звук. Спектр сигнала разделен в полосы дробной октавы или октаву. Предел частоты каждой полосы является дважды более низким пределом частоты, таким образом увеличения полосы пропускания на более высоких частотах.

Используя фильтры октавы

Выполнять анализ октавы, poctave функция создает набор фильтров параллельных полосовых фильтров. Каждый цифровой полосовой фильтр сопоставлен с эквивалентным Баттервортом аналоговый фильтр lowpass [3]. Аналоговый фильтр сопоставлен назад с цифровым полосовым фильтром с помощью полосовой версии bilinear преобразование и результат возвращены как каскад разделов четвертого порядка.

Более низкими и верхними частотами ребра каждой полосы октавы дают

fl=cf(G1/2b)

fu=cf(G1/2b)

где fc является центральной частотой каждой полосы, заданной стандартом ANSI S1.11-2004 [2], и возвратился в cf, G является постоянным преобразованием (103/10), и b является количеством полос на октаву.

Для получения дополнительной информации о разработке и реализации фильтров октавы смотрите Создание цифровых фильтров (Audio Toolbox).

Используя сглаживание октавы

poctave функция вычисляет среднюю степень по каждой полосе октавы путем интеграции спектральной плотности мощности (PSD) сигнала в полосе, использующей прямоугольный метод. Средняя степень полосы октавы представляет уровень сигнала на частоте центра полосы.

  • Когда ребро полосы находится в пределах интервала, функциональных присвоений к полосе только часть степени, соответствующей проценту интервала частоты, который занимает полоса. Например, эта схема показывает полосу октавы, ребра которой находятся в пределах двух различных интервалов частоты, представленных оранжевыми и синими пунктирными прямоугольниками. Степень в теневых областях вычисляется для данной полосы октавы.

    Fractional octave smoothing when band edge falls within a bin

  • Когда ребро полосы падает на 0 или на частоте Найквиста, f Найквист, функциональные присвоения к полосе два раза часть степени, соответствующей проценту интервала частоты, который занимает полоса. Это дублирование составляет половину степени интервала, которая присутствует в области значений [–w/2, 0] и [f Найквист, f Найквист + w/2], где w является шириной интервала. Например, эта схема показывает полосу октавы, правый край которой падает на частоту Найквиста. Степень в теневой области вычисляется для данной полосы октавы.

    Fractional octave smoothing when band edge falls at the Nyquist frequency

Ссылки

[1] Смит, Джулиус Орайон, III. "Примеров: Синтез 1/F Шума (Розовый Шум)". В Спектральной Обработке Звукового сигнала. https://ccrma.stanford.edu / ~ jos/sasp/.

[2] Спецификация для аналога полосы октавы и Дробной Полосы октавы и цифровых фильтров. Стандарт ANSI S1.11-2004. Мелвилл, Нью-Йорк: акустическое общество Америки, 2004.

[3] Orfanidis, Софокл Дж. Введение в обработку сигналов. Englewood Cliffs, NJ: Prentice Hall, 2010.

Расширенные возможности

Смотрите также

Введенный в R2018a