stftLayer

Кратковременный слой преобразования Фурье

Описание

Слой STFT вычисляет кратковременное преобразование Фурье входа. Использование этого слоя требует Deep Learning Toolbox™.

Создание

Описание

пример

layer = stftLayer создает слой Short-Time Fourier Transform (STFT). Вход к stftLayer должен быть dlarray Объект (Deep Learning Toolbox) в "CBT" формат с размером вдоль измерения времени, больше, чем длина Window.

пример

layer = stftLayer(Name=Value) задает дополнительные параметры с помощью аргументов name-value. Можно задать аналитическое окно и формат выхода среди других.

Свойства

развернуть все

STFT

Это свойство доступно только для чтения.

Окно Analysis использовалось для расчета STFT в виде вектора с двумя или больше элементами.

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

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

Это свойство доступно только для чтения.

Количество перекрытых выборок в виде положительного целого числа, строго меньшего, чем длина Window.

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

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

Это свойство доступно только для чтения.

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

Если длина входных данных вдоль измерения времени меньше количества точек ДПФ, stftLayer правильные клавиатуры данные и окно с нулями, таким образом, у них есть длина, равная FFTLength.

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

Слой преобразовывает режим в виде одного из них:

  • "mag" — Величина STFT

  • "squaremag" — STFT придал величине квадратную форму

  • "logmag" — Натуральный логарифм величины STFT

  • "logsquaremag" — Натуральный логарифм STFT придал величине квадратную форму

  • "realimag" — Действительные и мнимые части STFT, конкатенированного по измерению канала

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

Режим вывода слоя в виде одного из них:

  • "spatiotemporal" — Отформатируйте выход как последовательность 1D изображений, где высота изображения соответствует частоте, второе измерение соответствует каналу, третья размерность соответствует пакету, и четвертая размерность соответствует времени.

    Можно использовать этот режим вывода, чтобы питать выход stftLayer к 1D сверточному слою, когда это необходимо, чтобы применить операцию свертки вдоль частоты. Для получения дополнительной информации смотрите convolution1dLayer (Deep Learning Toolbox).

  • "spatial" — Отформатируйте выход как последовательность 2D изображений, где высота изображения соответствует частоте, и ширина изображения соответствует времени. Третьи и четвертые размерности соответствуют каналу и пакету, соответственно.

    Можно использовать этот режим вывода, чтобы питать выход stftLayer к 2D сверточному слою, когда это необходимо, чтобы применить операцию свертки по двум пространственным измерениям. Для получения дополнительной информации смотрите convolution2dLayer (Deep Learning Toolbox).

  • "temporal" — Отформатируйте выход как 1D последовательность. Этот формат берет "spatiotemporal" выходной формат и сглаживает высоту изображения в размерность канала. Второе измерение STFT, выход соответствует пакету и третьей размерности, соответствует времени.

    Можно использовать этот режим вывода, чтобы питать выход stftLayer к 1D сверточному слою, когда это необходимо, чтобы применить операцию свертки вдоль времени. Для получения дополнительной информации смотрите convolution1dLayer (Deep Learning Toolbox). Можно также использовать этот режим вывода, чтобы использовать stftLayer как часть рекуррентной нейронной сети. Для получения дополнительной информации смотрите lstmLayer (Deep Learning Toolbox) и gruLayer (Deep Learning Toolbox).

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

Слой

Множитель для скорости обучения веса в виде неотрицательного скаляра. Если не заданный, это свойство значения по умолчанию, чтобы обнулить, приводя к весам, которые не обновляются с обучением. Можно также установить это свойство с помощью setLearnRateFactor (Deep Learning Toolbox) функция.

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

Имя слоя в виде вектора символов или строкового скаляра. Для Layer вход массивов, trainNetwork, assembleNetwork, layerGraph, и dlnetwork функции автоматически присваивают имена к слоям с Name установите на ''.

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

Это свойство доступно только для чтения.

Количество входных параметров слоя. Этот слой принимает один вход только.

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

Это свойство доступно только для чтения.

Введите имена слоя. Этот слой принимает один вход только.

Типы данных: cell

Это свойство доступно только для чтения.

Количество выходных параметров слоя. Этот слой имеет один выход только.

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

Это свойство доступно только для чтения.

Выведите имена слоя. Этот слой имеет один выход только.

Типы данных: cell

Примеры

свернуть все

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

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

dlx = dlarray(x,"CTB");

Создайте кратковременный слой преобразования Фурье со свойствами по умолчанию. Создайте dlnetwork объект, состоящий из последовательности, ввел слой и кратковременный слой преобразования Фурье. Задайте минимальную продолжительность последовательности 128 выборок. Запустите сигнал через predict метод сети.

ftl = stftLayer;

dlnet = dlnetwork([sequenceInputLayer(1,MinLength=128) ftl]);
netout = predict(dlnet,dlx);

Преобразуйте сетевой выход в числовой массив. Используйте squeeze функция, чтобы удалить длину 1 канал и пакетные размерности. Постройте величину STFT. Первая размерность массива соответствует частоте и второму ко времени.

q = extractdata(netout);

waterfall(squeeze(q)')
set(gca,XDir="reverse",View=[30 45])
xlabel("Frequency")
ylabel("Time")

Figure contains an axes object. The axes object contains an object of type patch.

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

nch = 3;
N = 160;
x = dlarray(cos(pi.*(1:nch)'/4*(0:N-1)),"CTB");

Создайте кратковременный слой преобразования Фурье, который может использоваться с синусоидой. Задайте прямоугольное окно с 64 выборками, 48 выборок перекрытия между смежными окнами и точки ДПФ 10:24. Задайте режим вывода слоя как "spatial". По умолчанию слой выводит величину STFT.

stfl = stftLayer(Window=rectwin(64), ...
    OverlapLength=48, ...
    FFTLength=1024, ...
    OutputMode="spatial");

Создайте 2D слой dlnetwork объект, содержащий последовательность, ввел слой и слой STFT, который вы только создали. Обработайте каждый канал синусоиды как функция. Задайте длину сигнала как минимальную длину последовательности для входного слоя.

layers = [sequenceInputLayer(nch,MinLength=N) stfl];
dlnet = dlnetwork(layers);

Запустите синусоиду через forward метод сети.

dataout = forward(dlnet,x);

Преобразуйте сетевой выход в числовой массив. Используйте squeeze функционируйте, чтобы свернуть размер 1 пакетная размерность. Постройте величину STFT отдельно для каждого канала в графике водопада.

q = squeeze(extractdata(dataout));

for kj = 1:nch
    subplot(nch,1,kj)
    waterfall(q(:,:,kj)')
    view(30,45)
    zlabel("Ch. "+string(kj))
end

Figure contains 3 axes objects. Axes object 1 contains an object of type patch. Axes object 2 contains an object of type patch. Axes object 3 contains an object of type patch.

Больше о

развернуть все

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

Приложения

Объекты

Функции

Введенный в R2021b