dlstft

Глубокое обучение кратковременное преобразование Фурье

Описание

пример

[yr,yi] = dlstft(x) возвращает кратковременное преобразование Фурье (STFT) глубокого обучения x. dlstft Требуется Deep Learning Toolbox™.

пример

[yr,yi] = dlstft(x,fs) возвращает глубокое обучение STFT, принимая, что x была выбрана со скоростью fs.

пример

[yr,yi] = dlstft(x,ts) возвращает глубокое обучение STFT, принимая, что x была взята выборка со шаг расчета ts.

пример

[yr,yi] = dlstft(___,Name,Value) задает дополнительные опции, используя аргументы имя-значение. Опции включают спектральное окно и длину БПФ. Эти аргументы могут быть добавлены к любому из предыдущих входных синтаксисов. Для примера, 'DataFormat','CBT' задает формат данных x как CBT.

пример

[yr,yi,f,t] = dlstft(___) возвращает частоты f и времени t при котором вычисляется глубокое обучение STFT.

Примеры

свернуть все

Сгенерируйте сигнал, дискретизированный на частоте 600 Гц в течение 2 секунд. Сигнал состоит из щебета с синусоидально изменяющимся содержимым частоты.

fs = 6e2;
t = 0:1/fs:2;
x = vco(sin(2*pi*t),[0.1 0.4]*fs,fs);

Сохраните сигнал в неформатированном глубоком обучении массиве. Вычислите кратковременное преобразование Фурье сигнала. Введите шаг расчета как duration скаляр. (В качестве альтернативы введите частоту дискретизации как числовой скаляр.) Задайте, что входной массив в 'CTB' формат.

dlx = dlarray(x);
[yr,yi,f,t] = dlstft(dlx,seconds(1/fs),'DataFormat','CTB');

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

yr = extractdata(yr);
yi = extractdata(yi);
f = extractdata(f);
t = seconds(t);
ax = newplot;
waterfall(ax,f,t,squeeze(hypot(yr,yi))')
ax.XDir = 'reverse';
view(30,45)
ylabel('Time (s)')
xlabel('Frequency (Hz)')
zlabel('Magnitude')

Сгенерируйте a 3×160(×1) массив, содержащий одну партию трехканального синусоидального сигнала с 160 дискретизацией. Нормированные синусоидальные частоты π/4 рад/образец, π/2 рад/образец, и 3π/4 рад/образец. Сохраните сигнал как dlarray, указание размерностей по порядку. dlarray транспозиция измерений массива в 'CBT' форма, ожидаемая нейронной сетью для глубокого обучения. Отобразите размеры измерения массива.

x = dlarray(cos(pi.*(1:3)'/4*(0:159)),'CTB');
[nchan,nbtch,nsamp] = size(x)
nchan = 3
nbtch = 1
nsamp = 160

Вычислите глубокое обучение кратковременного преобразования Фурье сигнала. Задайте прямоугольное окно с 64 образцами и длину БПФ 1024.

[re,im,f,t] = dlstft(x,'Window',rectwin(64),'FFTLength',1024);

dlstft вычисляет преобразование вдоль 'T' размерность. Массивы выхода находятся в 'SCBT' формат. The 'S' размерность соответствует частоте в кратковременном преобразовании Фурье.

Извлеките данные из глубокого обучения массивов.

re = squeeze(extractdata(re));
im = squeeze(extractdata(im));
f = extractdata(f);
t = extractdata(t);

Вычислите величину кратковременного преобразования Фурье. Постройте график величины отдельно для каждого канала на графике водопада.

z = abs(re + 1j*im);

for kj = 1:nchan
    subplot(nchan,1,kj)
    waterfall(f/pi,t,squeeze(z(:,kj,:))')
    view(30,45)
end

xlabel('Frequency (\times\pi rad/sample)')
ylabel('Samples')

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

свернуть все

Входной массив, заданный как неформатированный dlarray (Deep Learning Toolbox), форматированный dlarray в 'CBT' формат или числовой массив. Если x является неформатированным dlarray или числовой массив, необходимо задать 'DataFormat' как некоторое сочетание 'CBT'.

Пример: dlarray(cos(pi./[4;2]*(0:159)),'CTB') и dlarray(cos(pi./[4;2]*(0:159))','TCB') оба задают одно пакетное наблюдение двухканальной синусоиды в 'CBT' формат.

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

Шаг расчета, заданный как duration скаляр. Определение ts эквивалентно установке частоты дискретизации f s = 1/ ts.

Пример: seconds(1) является duration скаляр, представляющий 1-секундное временное различие между последовательными выборками сигнала.

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

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

Пример: 'Window',hamming(100),'OverlapLength',50,'FFTLength',128 окрашивает данные с помощью 100-выборочного окна Хэмминга с 50 выборками перекрытия между смежными сегментами и БПФ с 128 точками.

Формат данных входов, заданный как вектор символов или строковый скаляр. Этот аргумент действителен только в том случае, если x не форматирован.

Каждый символ в этом аргументе должен быть одной из следующих меток:

  • C - Канал

  • B - Пакетные наблюдения

  • T - Время

dlstft функция принимает любое сочетание 'CBT'. Можно задать самое большее одно из каждого из C, B, и T метки.

Каждый элемент аргумента помечает соответствующий размерность x. Если аргумент не находится в перечисленном порядке ('C' далее следуют 'B' и так далее), затем dlstft неявно транспозиция аргумента и данных в соответствии с порядком, но без изменения способа хранения данных.

Пример: 'CBT'

Спектральное окно, заданное как вектор. Если вы не задаете окно или не задаете его как пустое, функция использует окно Ханна длины 128. Длина 'Window' должно быть больше или равно 2.

Список доступных окон см. в разделе Windows.

Пример: hann(N+1) и (1-cos(2*pi*(0:N)'/N))/2 оба задают окно Ханна длины N  + 1.

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

Количество перекрывающихся выборок, заданное в виде неотрицательного целого числа, меньшего длины 'Window'. Если вы опускаете 'OverlapLength' или укажите его как пустой, оно устанавливается на самое большое целое число менее 75% длины окна, что составляет 96 выборок для окна Ханна по умолчанию.

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

Количество точек ДПФ, заданное как положительное целое число. Значение должно быть больше или равно длине окна. Если длина входного сигнала меньше длины ДПФ, данные заполняются нулями.

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

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

свернуть все

Кратковременное преобразование Фурье, возвращенное как два форматированных dlarray (Deep Learning Toolbox) объекты. yr содержит вещественную часть преобразования. yi содержит мнимую часть преобразования.

  • Если x является форматированным dlarray, yr и yi являются 'SCBT' форматированные dlarray объекты. The 'S' размерность соответствует частоте в кратковременном преобразовании Фурье.

  • Если x является неформатированным dlarray или числовой массив, yr и yi неформатированные dlarray объекты. Порядок размерности в yr и yi является 'SCBT'.

Если информация о времени не задана, STFT вычисляется в области значений Nyquist [0, π] если 'FFTLength' четный и более [0, π), если 'FFTLength' нечетно. Если вы задаете информацию о времени, то интервалы являются [0, f s/2] и [0, f s/2), соответственно, где f s - эффективная частота дискретизации.

Частоты, на которых вычисляется STFT глубокого обучения, возвращаются как dlarray объект.

  • Если массив входа не содержит информацию о времени, то частоты находятся в нормализованных модулях рад/отсчета.

  • Если массив входа содержит информацию о времени, то f содержит частоты, выраженные в Гц.

Времена, в которые вычисляется глубокое обучение STFT, возвращаются как dlarray объект или duration массив.

  • Если вы не задаете информацию о времени, то t содержит номера образцов.

  • Если вы задаете частоту дискретизации, то t содержит значения времени в секундах.

  • Если вы задаете шаг расчета, то t является duration массив с тем же форматом времени, что и x.

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

Введенный в R2021a