exponenta event banner

dlstft

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

Описание

пример

[yr,yi] = dlstft(x) возвращает глубокое обучающее кратковременное преобразование Фурье (STFT) x. dlstftтребует 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')

Создайте массив 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' формат. '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 (инструментарий глубокого обучения), отформатированный 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 эквивалентно установке частоты выборки fs = 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

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

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

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

свернуть все

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

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

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

Если информация о времени не указана, то STFT вычисляется по диапазону Найквиста [0, δ], если 'FFTLength' является четным и выше [0, δ), если 'FFTLength' нечетно. Если указать временную информацию, то интервалы будут [0, fs/2] и [0, fs/2) соответственно, где fs - эффективная частота выборки.

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

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

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

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

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

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

  • Если указать время выборки, то t является duration массив с тем же форматом времени, что и x.

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

Представлен в R2021a