cqt

Постоянный-Q неустановившийся Габор преобразовывает

Синтаксис

cfs = cqt(x)
[cfs,f] = cqt(x)
[cfs,f,g,fshifts] = cqt(x)
[cfs,f,g,fshifts,fintervals] = cqt(x)
[cfs,f,g,fshifts,fintervals,bw] = cqt(x)
[___] = cqt(___,Name,Value)
cqt(___)

Описание

пример

cfs = cqt(x) возвращает постоянное-Q преобразование (CQT), cfs, входного сигнала x.

  • Если x является вектором, то cqt возвращает матрицу, соответствующую CQT.

  • Если x является матрицей, то cqt получает CQT для каждого столбца (независимый канал) x. Функция возвращает многомерный массив, соответствующий максимально избыточной версии CQT.

пример

[cfs,f] = cqt(x) возвращает аппроксимированные полосовые центральные частоты, f, соответствуя строкам cfs. Частоты упорядочены от 0 до 1 и находятся в циклах/выборке.

[cfs,f,g,fshifts] = cqt(x) возвращает кадры Габора, g, используемый в анализе x и сдвигов частоты, fshifts, в интервалах дискретного преобразования Фурье (DFT) между полосами пропускания в строках cfs.

cfs, g и fshifts требуются входные параметры для инверсии CQT с icqt.

[cfs,f,g,fshifts,fintervals] = cqt(x) возвращает интервалы частоты, fintervals, соответствующий строки cfs. k th элемент fshifts является частотой, переключают интервалы ДПФ на нижний регистр между ((k-1) mod N) and (k mod N) элемент fintervals с k = 0,1,2,...,N-1, где N является количеством сдвигов частоты. Поскольку индексы MATLAB® от 1, fshifts(1) содержит сдвиг частоты между fintervals{end} и fintervals{1}, fshifts(2) содержит сдвиг частоты между fintervals{1} и fintervals{2} и так далее.

[cfs,f,g,fshifts,fintervals,bw] = cqt(x) возвращает пропускную способность, bw, в интервалах ДПФ интервалов частоты, fintervals.

пример

[___] = cqt(___,Name,Value) возвращает CQT с дополнительными опциями, заданными одним или несколькими аргументами пары Name,Value, с помощью любого из предыдущих синтаксисов.

пример

cqt(___) без выходных аргументов строит CQT в текущей фигуре. Графический вывод поддерживается для векторных входных параметров только. Если входной сигнал действителен, и Fs является частотой дискретизации, CQT построен в области значений [0,Fs/2]. Если сигнал является комплексным, CQT построен в области значений [0,Fs).

Примеры

свернуть все

Загрузите сигнал и получите постоянное-Q преобразование.

load noisdopp
cfs = cqt(noisdopp);

Загрузите сигнал с действительным знаком и получите постоянное-Q преобразование. Возвратите аппроксимированные полосовые центральные частоты.

load handel
[cfs,f] = cqt(y);

Постройте на логарифмическом масштабе полосовые центральные частоты через частоту Найквиста.

lfreq = length(f);
nyquistBin = floor(lfreq/2)+1;
plot(f(1:nyquistBin))
title('Bandpass Center Frequencies')
grid on
set(gca,'yscale','log')

Чтобы подтвердить отношения последовательных пар частот являются постоянными, строят отношения. Поскольку cqt использует 12 интервалов на октаву по умолчанию, отношение должно равняться 21/12. Поскольку DC и частоты Найквиста не являются членами геометрической последовательности центральных частот, но включены в вектор частоты, исключают их из графика.

figure
plot(f(3:nyquistBin-1)./f(2:nyquistBin-2))
grid on
title(['Ratio: ',num2str(2^(1/12))])

Получите минимально избыточное постоянное-Q преобразование звукового сигнала. Используйте окно Блэкмен-Харриса в качестве прототипной функции для кадров Габора.

load handel
df = Fs/numel(y);
[cfs,f,g,fshifts,fintervals,bw] = cqt(y,'SamplingFrequency',Fs,'TransformType',"sparse",'Window',"blackmanharris");

cfs является массивом ячеек, где каждый элемент в массиве соответствует полосовой центральной частоте и кадру Габора. Постройте кадр Габора, сопоставленный с частотой Найквиста.

lf = length(f);
ind = floor(lf/2)+1;
gFrame = fftshift(g{ind});
fvec = f(ind-1):df:f(ind+1)-df;
plot(fvec,gFrame)
xlabel('Frequency (Hz)')
grid on
title({['Gabor Frame - Freq: ',num2str(f(ind)),' Hz'];['Bandwidth ',num2str(bw(ind)*Fs/numel(y)),' Hz']})

В постоянном-Q преобразовании кадры Габора применяются к дискретному преобразованию Фурье входного сигнала, и обратное дискретное преобразование Фурье выполняется. k-th кадр Габора применяется к k-th интервалу частоты, заданному в fintervals. Возьмите дискретное преобразование Фурье сигнала и постройте его спектр значения. Используйте fintervals, чтобы указать, по которому коэффициенты Фурье являются кадром Габора, сопоставленным с частотой Найквиста, применяются.

yDFT = fft(y);
lyDFT = length(yDFT);
plot(Fs*(0:lyDFT-1)/lyDFT,abs(yDFT))
grid on
fIntervalGabor = fintervals{ind};
mx = max(abs(yDFT));
hold on
plot([df*fIntervalGabor(1) df*fIntervalGabor(1)],[0 mx],'r-','LineWidth',2)
plot([df*fIntervalGabor(end) df*fIntervalGabor(end)],[0 mx],'r-','LineWidth',2)
str = sprintf('Gabor Frame Interval (Hz): [%3.2f, %3.2f]',df*fIntervalGabor(1),df*fIntervalGabor(end));
title(str)

Окно коэффициенты Фурье в интервале с кадром Габора, и берет обратное дискретное преобразование Фурье. Нормируйте результат, и сравните с вычисленными постоянными-Q коэффициентами и подтвердите, что они равны.

lGframe = length(gFrame);
indx = 1:lGframe;
indx = fftshift(indx);
winDFT(indx) = yDFT(fIntervalGabor).*fftshift(gFrame(indx));
cqCoefs = ifft(winDFT);
cqCoefs = (2*lGframe/length(y))*cqCoefs;
max(abs(cqCoefs(:)-cfs{ind}(:)))
ans = 0

Загрузите звуковой сигнал. График константа-Q преобразовывает использование максимально избыточной версии преобразования и использования 12 интервалов на октаву.

load handel
cqt(y,'SamplingFrequency',Fs)

Выполните CQT того же сигнала с помощью 48 интервалов на октаву. Установите частотный диапазон, по которому CQT имеет логарифмическую частотную характеристику, чтобы быть минимальной допустимой частотой к 2 кГц.

minFreq = Fs/length(y);
maxFreq = 2000;
figure
cqt(y,'SamplingFrequency',Fs,'BinsPerOctave',48,'FrequencyLimits',[minFreq maxFreq])

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

свернуть все

Входной сигнал, заданный как вектор действительных чисел или комплексный вектор или матрица. x должен иметь по крайней мере четыре выборки.

Поддержка комплексного числа: Да

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

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

Пример: 'SamplingFrequency',20,'BinsPerOctave',15

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

Количество интервалов на октаву, чтобы использовать в CQT, заданном как положительное целое число от 1 до 96.

Тип постоянного-Q преобразования, чтобы выполнить, заданный как пара, разделенная запятой, состоящая из 'TransformType' и 'full' или 'sparse'. Разреженное преобразование является минимально избыточной версией постоянного-Q преобразования.

Частота ограничивает, по которому CQT имеет логарифмическую частотную характеристику с конкретным количеством интервалов частоты на октаву, заданную как пара, разделенная запятой 'FrequencyLimits' и двухэлементный вектор действительных чисел.

  • Первый элемент должен быть больше, чем или равным Fs/N, где Fs является частотой дискретизации, и N является длиной сигнала.

  • Второй элемент должен быть строго меньше, чем частота Найквиста.

Окно, чтобы использовать в качестве прототипа функционирует для неустановившихся кадров Габора, заданных как 'hann', 'hamming', 'blackmanharris', 'itersine' или 'bartlett'. Эти сжато функции поддержки заданы в частоте. Для нормированных частот они заданы на интервале (-1/2,1/2). Если вы задаете частоту дискретизации, Fs, они заданы на интервале (-Fs/2,Fs/2).

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

свернуть все

Постоянное-Q преобразование, возвращенное как матрица, многомерный массив, массив ячеек или массив структур.

  • Если 'TransformType' задан как 'full' без 'FrequencyLimits', cfs является матричным или многомерным массивом.

    • Если x является вектором, то cqt возвращает матрицу, соответствующую CQT.

    • Если x является матрицей, то cqt получает CQT для каждого столбца (независимый канал) x. Функция возвращает многомерный массив, соответствующий максимально избыточной версии CQT.

    Массив, cfs, соответствует максимально избыточной версии CQT. Каждая строка страниц cfs соответствует полосам пропускания с нормированными центральными частотами (циклы/выборка), логарифмически расположенные с интервалами между 0 и 1. Нормированная частота 1/2 соответствует частоте Найквиста. Количество столбцов или транзитные участки, соответствует самой большой частоте центра пропускной способности, которая обычно возникает один интервал частоты ниже или выше интервала Найквиста.

  • Если 'TransformType' задан как 'full', и вы задаете пределы частоты, cfs возвращен как массив структур со следующими четырьмя полями.

    • c Матрица коэффициентов многомерного массива для частот в заданных пределах частоты. Это включает и положительные и "отрицательные" частоты.

    • DCcfs — Вектор коэффициентов или матрица для полосы пропускания от 0 до более низкого предела частоты.

    • Nyquistcfs — Вектор коэффициентов или матрица для полосы пропускания от верхней частоты ограничивают Найквистом.

    • NyquistBin — Интервал ДПФ, соответствующий частоте Найквиста. Это поле используется при инвертировании CQT.

  • Если 'TransformType' задан как 'sparse', cfs является массивом ячеек с числом элементов, равным количеству полосовых частот. Каждый элемент массива ячеек, cfs, является вектором или матрицей с количеством строк, равных значению пропускной способности в интервалах ДПФ, bw.

cfs, g и fshifts требуются входные параметры для инверсии CQT с icqt.

Аппроксимируйте полосовые центральные частоты, соответствующие строкам cfs, возвращенного как вектор с действительным знаком. Частоты упорядочены от 0 до 1 и находятся в циклах/выборке. Если вы задали 'SamplingFrequency', то f находится в Герц.

Кадры Габора, используемые в анализе x, возвращенного как массив ячеек векторов с действительным знаком. Каждый вектор в g соответствует строке cfs.

cfs, g и fshifts требуются входные параметры для инверсии CQT с icqt.

Частота переключает на нижний регистр дискретные интервалы преобразования Фурье, возвращенные как вектор с действительным знаком. Сдвиги между полосами пропускания в строках cfs.

cfs, g и fshifts требуются входные параметры для инверсии CQT с icqt.

Интервалы частоты, соответствующие строкам cfs, возвращенного как массив ячеек. Каждый элемент в fintervals является вектором с действительным знаком. k th элемент fshifts является частотой, переключают интервалы ДПФ на нижний регистр между ((k-1) mod N) и элементом (k mod N) fintervals с k = 0,1,2,...,N-1, где N является количеством сдвигов частоты. Поскольку индексы MATLAB от 1, fshifts(1) содержит сдвиг частоты между fintervals{end} и fintervals{1}, fshifts(2) содержит сдвиг частоты между fintervals{1} и fintervals{2} и так далее.

Пропускная способность в интервалах ДПФ интервалов частоты, fintervals, возвращенного как вектор с действительным знаком.

Алгоритмы

свернуть все

Неустановившиеся кадры Габора

Теория неустановившегося Габора (NSG) кадры для адаптивного частотой анализа и эффективные алгоритмы для анализа и синтеза с помощью кадров NSG происходит из-за Dörfler, Holighaus, Гриля и Веласко [1], [2]. Алгоритмы, используемые в CQT и ICQT, были разработаны Dörfler, Holighaus, Грилем и Веласко и описаны в [1], [2]. В [3], Schörkhuber, Klapuri, Holighaus и Dörfler разрабатывают и обеспечивают, алгоритмы для исправленного фазой CQT преобразовывают, какие соответствия коэффициенты CQT, которые были бы получены наивной сверткой. Большой Аналитический Тулбокс Частоты Времени (https://github.com/ltfat) обеспечивает обширный комплект алгоритмов для неустановившихся кадров Габора [4].

Совершенная реконструкция

Чтобы достигнуть совершенного свойства реконструкции постоянного-Q анализа с неустановившимися кадрами Габора, cqt внутренне предварительно ожидает нулевую частоту (DC) и добавляет частоту Найквиста к интервалу частоты. Отрицательные частоты являются зеркально отраженными версиями положительных центральных частот и пропускной способности

Ссылки

[1] Holighaus, N., М. Дерфлер, Г. А. Веласко и Т. Грилл. "Среда для обратимых постоянных-Q преобразований в реальном времени". Транзакции IEEE на Аудио, Речи и Обработке Языка. Издание 21, № 4, 2013, стр 775–785.

[2] Веласко, G. A. Н. Холайос, М. Дерфлер и Т. Грилл. "Создавая обратимое постоянное-Q преобразование с неустановившимися кадрами Габора". В Продолжениях 14-й Международной конференции по вопросам Эффектов Цифрового аудио (DAFx-11). Париж, Франция: 2011.

[3] Schörkhuber, C., А. Клапури, Н. Холайос и М. Дерфлер. "Тулбокс MATLAB для Эффективных Совершенных Преобразований Частоты Времени Реконструкции с Разрешением Логарифмической Частоты". Представленный AES 53-я Международная конференция по вопросам Семантического Аудио. Лондон, Великобритания: 2014.

[4] Průša, Z., П. Л. Сындергэард, Н. Холайос, К. Висмеир и П. Бэлэзс. Большой Аналитический Тулбокс Частоты Времени 2.0. Звук, Музыка, и Движение, Примечания Лекции в Информатике 2014, стр 419-442.

Введенный в R2018a