cqt

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

Описание

пример

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, в интервалах дискретного преобразования Фурье (ДПФ) между полосами пропускания в строках cfs.

cfsG, и 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).

Примечание

Для того, чтобы визуализировать разреженный CQT, коэффициенты должны быть интерполированы. Когда интерполяция происходит, график может иметь значительное смазывание и затруднить, чтобы интерпретировать. Если вы хотите построить CQT, мы рекомендуем использовать TransformType по умолчанию значение 'full'.

Примеры

свернуть все

Загрузите сигнал и получите постоянное-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')

Figure contains an axes object. The axes object with title Bandpass Center Frequencies contains an object of type line.

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

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

Figure contains an axes object. The axes object with title Ratio: 1.0595 contains an object of type line.

Получите минимально избыточное постоянное-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']})

Figure contains an axes object. The axes object with title Gabor Frame - Freq: 4096 Hz Bandwidth 412.3283 Hz contains an object of type line.

В постоянном-Q преобразовании системы координат Габора применяются к дискретному преобразованию Фурье входного сигнала, и обратное дискретное преобразование Фурье выполняется. K-ая система координат Габора применяется к k-ому интервалу частоты, заданному в 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)

Figure contains an axes object. The axes object with title Gabor Frame Interval (Hz): [3889.89, 4302.11] contains 3 objects of type line.

Окно коэффициенты Фурье в интервале с системой координат Габора, и берет обратное дискретное преобразование Фурье. Нормируйте результат, и сравните с вычисленными постоянными-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 преобразование (CQT) с помощью максимально избыточной версии преобразования и с помощью 12 интервалов на октаву.

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

Figure contains an axes object. The axes object with title Constant Q-Transform contains an object of type surface.

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

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

Figure contains an axes object. The axes object with title Constant Q-Transform contains an object of type surface.

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

свернуть все

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

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

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

Задайте дополнительные разделенные запятой пары Name,Value аргументы. 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.

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

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

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

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

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

cfsG, и 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