fsst

Synchrosqueezed преобразование Фурье

Описание

s = fsst(x) возвращает synchrosqueezed преобразование Фурье входного сигнала, x. Каждый столбец s содержит synchrosqueezed спектр оконного сегмента x.

пример

[s,w,n] = fsst(x) возвращает вектор нормированных частот, w, и вектор демонстрационных чисел, n, в котором вычисляется synchrosqueezed преобразование Фурье. w соответствует столбцам s и n соответствует строкам s.

пример

[s,f,t] = fsst(x,fs) возвращает вектор циклических частот, f, и вектор моментов времени, t, выраженный в терминах частоты дискретизации, fs.

пример

[s,f,t] = fsst(x,ts) задает шаг расчета, ts, как duration скаляр. t находится в тех же модулях как ts. Модули f обратная величина к модулям ts.

[___] = fsst(___,window) использование window разделить сигнал на сегменты и выполнить работу с окнами. Можно использовать любую комбинацию входных параметров от предыдущих синтаксисов, чтобы получить соответствующие выходные аргументы.

fsst(___) без графиков выходных аргументов synchrosqueezed преобразовывают в окно текущей фигуры.

пример

fsst(___,freqloc) задает ось, на которой можно построить частоту.

Примеры

свернуть все

Сгенерируйте 1 024 выборки сигнала, который состоит из суммы синусоид, встроенных в белый Гауссов шум. Нормированные частоты синусоид 2π/5 рад/выборка и 4π/5 рад/выборка. Более высокая синусоида частоты имеет 3 раза амплитуду другой синусоиды.

N = 1024;
n = 0:N-1;

w0 = 2*pi/5;
x = sin(w0*n)+3*sin(2*w0*n);

Вычислите synchrosqueezed преобразование Фурье сигнала. Постройте результат.

[s,w,n] = fsst(x);

mesh(n,w/pi,abs(s))

axis tight
view(2)
colorbar

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

[s,w,n] = spectrogram(x);
 
surf(n,w/pi,abs(s),'EdgeColor','none')

axis tight
view(2)
colorbar

Сгенерируйте сигнал, который состоит из двух щебетов. Сигнал производится на уровне 3 кГц в течение одной секунды. Первый щебет имеет начальную частоту 400 Гц и достигает 800 Гц в конце выборки. Второй щебет запускается на уровне 500 Гц и достигает 1 000 Гц в конце. Второй щебет имеет дважды амплитуду первого щебета.

fs = 3000;
t = 0:1/fs:1-1/fs;

x1 = chirp(t,400,t(end),800);
x2 = 2*chirp(t,500,t(end),1000);

Вычислите и постройте synchrosqueezed преобразование Фурье сигнала.

fsst(x1+x2,fs,'yaxis')

Сравните synchrosqueezed преобразовывают с кратковременным преобразованием Фурье (STFT). Вычислите STFT использование spectrogram функция. Задайте параметры по умолчанию, используемые fsst:

  • Окно Кайзера с 256 точками с β = 10 к окну сигнал

  • Перекрытие 255 выборок между смежными оконными сегментами

  • Длина БПФ 256

[stft,f,t] = spectrogram(x1+x2,kaiser(256,10),255,256,fs);

Постройте абсолютное значение STFT.

mesh(t,f,abs(stft))

xlabel('Time (s)') 
ylabel('Frequency (Hz)')
title('Short-Time Fourier Transform')
axis tight
view(2)

Вычислите и отобразите synchrosqueezed преобразование Фурье квадратичного щебета, который запускается на уровне 100 Гц и пересекает 200 Гц в t = 1 с. Задайте частоту дискретизации 1 кГц. Выразите шаг расчета как duration скаляр.

fs = 1000;
t = 0:1/fs:2;
ts = duration(0,0,1/fs);

x = chirp(t,100,1,200,'quadratic');

fsst(x,ts,'yaxis')

title('Quadratic Chirp')

synchrosqueezing алгоритм работает под предположением, что частота сигнала медленно варьируется. Таким образом спектр лучше сконцентрирован в прежние времена, где скорость изменения частоты меньше.

Вычислите и отобразите synchrosqueezed преобразование Фурье линейного щебета, который запускается в DC и пересекает 150 Гц в t = 1 с. Используйте Окно Хэмминга с 256 выборками.

x = chirp(t,0,1,150);

fsst(x,ts,hamming(256),'yaxis')

title('Linear Chirp')

Вычислите и отобразите synchrosqueezed преобразование Фурье логарифмического щебета. Щебет производится на уровне 1 кГц, запускается на уровне 20 Гц и пересекает 60 Гц в t = 1 с. Используйте окно Кайзера с 256 выборками с β = 20.

x = chirp(t,20,1,60,'logarithmic');

[s,f,t] = fsst(x,fs,kaiser(256,20));

clf
mesh(t,f,(abs(s)))

title('Logarithmic Chirp') 
xlabel('Time (s)')
ylabel('Frequency (Hz)')
view(2)

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

ax = gca;
ax.YScale = 'log';
axis tight

Загрузите речевой сигнал, произведенный в Fs=7418Hz. Файл содержит запись розеточной речи, говоря слово "MATLAB®".

load mtlb

% To hear, type sound(mtlb,Fs)

Вычислите synchrosqueezed преобразование сигнала. Используйте окно Hann длины 256. Отобразите время на оси X и частоту на оси Y.

fsst(mtlb,Fs,hann(256),'yaxis')

Используйте ifsst инвертировать преобразование. Сравните исходные и восстановленные сигналы.

sst = fsst(mtlb,Fs,hann(256));

xrc = ifsst(sst,hann(256));

plot((0:length(mtlb)-1)/Fs,[mtlb xrc xrc-mtlb])
legend('Original','Reconstructed','Difference')

% To hear, type sound(xrc-mtlb,Fs)

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

свернуть все

Входной сигнал, заданный как вектор.

Пример: cos(pi/4*(0:159))+randn(1,160) задает синусоиду, встроенную в белый Гауссов шум.

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

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

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

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

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

Окно раньше делило сигнал на сегменты, заданные как целое число или как строка или вектор-столбец.

  • Если window целое число, затем fsst делит x в сегменты длины window и окна каждый сегмент с окном Кайзера той длины и β = 10. Перекрытием между смежными сегментами является window  – 1.

  • Если window вектор, затем fsst делит x в сегменты той же длины как вектор и окна каждый сегмент с помощью window. Перекрытием между смежными сегментами является length(window)  – 1.

  • Если window не задан, затем fsst делит x в сегменты длины 256 и окна каждый сегмент с окном Кайзера с 256 выборками с β = 10. Перекрытие между смежными сегментами 255. Если x имеет меньше чем 256 выборок, затем функция использует одно окно Кайзера с той же длиной как x и β = 10.

Для списка доступных окон смотрите Windows.

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

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

Ось отображения частоты, заданная как 'xaxis' или 'yaxis'.

  • 'xaxis' — Частота отображений на оси X и время на оси Y.

  • 'yaxis' — Частота отображений на оси Y и время на оси X.

Этот аргумент проигнорирован, если вы вызываете fsst с выходными аргументами.

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

свернуть все

Synchrosqueezed преобразование Фурье, возвращенное как матрица. Время увеличивается через столбцы s и частота увеличивает вниз строки s, запуск с нуля. Если x действительно, затем его synchrosqueezed спектр является односторонним. Если x является комплексным, затем его synchrosqueezed спектр является двухсторонним и в центре.

Нормированные частоты, возвращенные как вектор. Длина w равняется количеству строк в s.

Демонстрационные числа, возвращенные как вектор. Длина n равняется количеству столбцов в s. Каждый демонстрационный номер в n средняя точка оконного сегмента x.

Циклические частоты, возвращенные как вектор. Длина f равняется количеству строк в s.

Моменты времени, возвращенные как вектор. Длина t равняется количеству столбцов в s. Каждая временная стоимость в t средняя точка оконного сегмента x.

Больше о

свернуть все

Synchrosqueezed преобразование Фурье

Много реальных сигналов, таких как речевые формы волны, колебания машины и физиологические сигналы могут быть выражены как суперпозиция модулируемых амплитудой и модулируемых частотой режимов. Для частотно-временного анализа удобно выразить такие сигналы как суммы аналитических сигналов через

f(t)=k=1Kfk(t)=k=1KAk(t)ej2πϕk(t).

Фазы ϕk (t) имеют производные времени dϕk (t)/dt, которые соответствуют мгновенным частотам. Когда точные фазы неизвестны, можно использовать synchrosqueezed преобразование Фурье, чтобы оценить их.

Synchrosqueezed преобразование Фурье основано на кратковременном преобразовании Фурье, реализованном в spectrogram функция. Для определенных видов неустановившихся сигналов synchrosqueezed преобразовывают, напоминает переприсвоенную спектрограмму, потому что она генерирует более резкие оценки частоты времени, чем обычное преобразование. fsst функция определяет кратковременное преобразование Фурье функции, f, с помощью спектрального окна, g и вычисления

Vgf(t,η)=f(x)g(xt)ej2πη(xt)dx.

В отличие от обычного определения, это определение имеет дополнительный фактор e j 2πηt. Значения преобразования затем “сжаты” так, чтобы они сконцентрировались вокруг кривых мгновенной частоты в плоскости частоты времени. Получившиеся synchrosqueezed преобразовывают, имеет форму

Tgf(t,ω)=Vgf(t,η)δ(ωΩgf(t,η))dη,

где мгновенные частоты оцениваются с “фазой, преобразовывают”

Ωgf(t,η)=1j2πtVgf(t,η)Vgf(t,η)=η1j2πVg/tf(t,η)Vgf(t,η).

Преобразование в знаменателе уменьшает влияние окна. Чтобы видеть простой пример, относитесь, чтобы Обнаружить Близко расположенные Синусоиды. Определение Tgf (t, ω) отличается фактором 1/g (0) от других выражений, найденных в литературе. fsst включает фактор в шаг реконструкции режима.

В отличие от переприсвоенной спектрограммы, synchrosqueezed преобразовывают, является обратимым и таким образом может восстановить отдельные режимы, которые составляют сигнал. Обратимость налагает некоторые ограничения на расчет кратковременного преобразования Фурье:

  • Количество точек ДПФ равно длине заданного окна.

  • Перекрытие между смежными оконными сегментами является тем меньше, чем длина окна.

  • Переназначение выполняется только в частоте.

Чтобы найти режимы, объединяйтесь, synchrosqueezed преобразовывают на маленьком интервале частоты вокруг Ωgf (t, η):

fk(t)1g(0)|ωΩk(t)|<εTgf(t,ω)dω,

где ɛ является небольшим числом.

synchrosqueezed преобразовывают, производит узкие гребни по сравнению с оконным кратковременным преобразованием Фурье. Однако ширина кратковременного преобразования все еще влияет на способность synchrosqueezed, преобразовывают, чтобы разделить режимы. Чтобы быть разрешимыми, режимы должны повиноваться этим условиям:

  1. Для каждого режима частота должна строго быть больше скорости изменения амплитуды: dϕk(t)dt>dAk(t)dt для всего k.

  2. Отличные режимы должны быть разделены, по крайней мере, пропускной способностью частоты окна. Если поддержка окна является интервалом [–Δ,Δ], то |dϕk(t)dtdϕm(t)dt|>2Δ для k ≠ m.

Для рисунка относитесь, чтобы Обнаружить Близко расположенные Синусоиды.

Ссылки

[1] Thakur, Горэв и Хау-Тен У. “Находящееся в Synchrosqueezing Восстановление Мгновенной Частоты от Неоднородных Выборок”. SIAM Journal Математического анализа. Издание 43, 2011, стр 2078–2095.

[2] Оберлин, Томас, Сильвен Меинан и Валери Перрье. “Основанное на Фурье Преобразование Synchrosqueezing”. Продолжения Международной конференции 2014 IEEE® по вопросам Акустики, Речи и Обработки сигналов (ICASSP), стр 315–319.

[3] Сверлите, Франсуа, Патрик Фландрен, Yu-звон Лин, Стивен Мак-Лафлин, Сильвен Меинан, Томас Оберлин и Хау-Тен У. “Частота времени Reassignment и Synchrosqueezing: Обзор”. Журнал Обработки сигналов IEEE. Издание 30, ноябрь 2013, стр 32–41.

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

Введенный в R2017b