poctave

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

Описание

пример

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

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

пример

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

пример

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

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

poctave(___) без выходных аргументов строит октавный спектр в текущей фигуре.

Примеры

свернуть все

Сгенерировать 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)

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

sg = [wn pn];

fs = 44100;

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

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

Сгенерировать 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{:});

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

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

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

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

Сгенерировать 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')

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

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

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

свернуть все

Входной сигнал в виде вектора или матрицы. Если x вектор, затем poctave обработки это как один канал. Если x матрица, затем poctave вычисляет октавный спектр независимо для каждого столбца и возвращает результат в соответствующий столбец 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 представляет многоканальный сигнал, затем он должен иметь или одну переменную, содержащую матрицу или несколько переменных, состоящих из векторов.

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

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

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

Пример: [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π Гц и частоты, на которых это вычисляется.

Аргументы в виде пар имя-значение

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

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

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

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

Порядок полосовых фильтров в виде разделенной запятой пары, состоящей из 'FilterOrder' и положительное даже целое число.

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

Диапазон частот в виде разделенной запятой пары, состоящей из 'FrequencyLimits' и двухэлементный вектор. Нижнее значение вектора должно составить по крайней мере 3 Гц. Более высокое значение вектора должно быть меньшим, чем или равным частоте Найквиста. Для некоторых комбинаций частот центра полосы октавы и ширин, более высокое значение вектора должно быть, по крайней мере, макс. (3,3*fs/48e3) гарантировать устойчивость фильтра.

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

Взвешивание частоты в виде разделенной запятой пары, состоящей из 'Weighting' и одно из следующего:

  • '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

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

свернуть все

Октавный спектр, возвращенный как вектор или матрица.

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

Ссылки

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

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

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

Введенный в R2018a