instfreq

Оцените мгновенную частоту

Описание

пример

ifq = instfreq(x,fs) оценивает мгновенную частоту сигнала, x, дискретизированный со скоростью fs. Если x является матрицей, затем функция оценивает мгновенную частоту независимо для каждого столбца и возвращает результат в соответствующем столбце ifq.

пример

ifq = instfreq(x,t) оценивает мгновенную частоту x дискретизация в значения времени, хранимые в t.

пример

ifq = instfreq(xt) оценивает мгновенную частоту сигнала, сохраненного в MATLAB® timetable xt. Функция обрабатывает все переменные в расписании и все столбцы внутри каждой переменной независимо.

пример

ifq = instfreq(tfd,fd,td) оценивает текущую частоту сигнала, частотно-временное распределение которого, tfd, дискретизируется на частотных значениях, хранимых в fd и значения времени, сохраненные в td.

пример

ifq = instfreq(___,Name,Value) задает дополнительные опции для любого из предыдущих синтаксисов, используя аргументы пары "имя-значение". Можно задать алгоритм, используемый для оценки мгновенной частоты или пределов частоты, используемых в расчете.

пример

[ifq,t] = instfreq(___) также возвращается t, вектор шагов расчета, соответствующий ifq.

пример

instfreq(___) без выходных аргументов строит графики предполагаемой мгновенной частоты.

Примеры

свернуть все

Сгенерируйте сигнал, дискретизированный в 5 кГц в течение 4 секунд. Сигнал состоит из набора импульсов уменьшающейся длительности, разделенных областями колеблющейся амплитуды и колеблющейся частоты с увеличивающимся трендом. Постройте график сигнала.

fs = 5000;
t = 0:1/fs:4-1/fs;

s = besselj(0,1000*(sin(2*pi*t.^2/8).^4));

% To hear, type sound(s,fs)

plot(t,s)

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

Оцените зависящую от времени частоту сигнала как первый момент спектрограммы степени. Постройте график степени спектрограммы и наложите мгновенную частоту.

instfreq(s,fs)

Figure contains an axes. The axes with title Instantaneous Frequency Estimate contains 2 objects of type image, line. This object represents Instantaneous Frequency.

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

fs = 3000;
t = 0:1/fs:1-1/fs;
x = exp(2j*pi*100*cos(2*pi*2*t))+randn(size(t))/100;

Оцените зависящую от времени частоту сигнала как первый момент спектрограммы степени. Это единственный метод, который instfreq поддерживает комплексные сигналы. Постройте график степени спектрограммы и наложите мгновенную частоту.

instfreq(x,t)

Figure contains an axes. The axes with title Instantaneous Frequency Estimate contains 2 objects of type image, line. This object represents Instantaneous Frequency.

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

  • В одном канале мгновенная частота изменяется со временем как пилообразная волна, максимум которой составляет 75% от периода.

  • В другом канале мгновенная частота изменяется со временем как квадратная волна с коэффициентом заполнения 30%.

Постройте график спектрограмм двух каналов. Задайте разрешение по времени 0,1 секунды для пилообразного канала и разрешение по частоте 10 Гц для квадратного канала.

fs = 1000;
t = (0:1/fs:2)';
x = vco(sawtooth(2*pi*t,0.75),[0.1 0.4]*fs,fs);
y = vco(square(2*pi*t,30),[0.1 0.3]*fs,fs);

subplot(1,2,1)
pspectrum(x,fs,'spectrogram','TimeResolution',0.1)
subplot(1,2,2)
pspectrum(y,fs,'spectrogram','FrequencyResolution',10)

Figure contains 2 axes. Axes 1 with title Fres = 25.6675 Hz, Tres = 100 ms contains an object of type image. Axes 2 with title Fres = 10.0263 Hz, Tres = 256 ms contains an object of type image.

Сохраните сигнал в расписании. Вычислите и отобразите мгновенную частоту.

xt = timetable(seconds(t),x,y);

clf
instfreq(xt)

Figure contains an axes. The axes with title Instantaneous Frequency Estimate contains 2 objects of type line. These objects represent x\_instfreq, y\_instfreq.

Повторите расчет с помощью аналитического сигнала.

instfreq(xt,'Method','hilbert')

Figure contains an axes. The axes with title Instantaneous Frequency Estimate contains 2 objects of type line. These objects represent x\_instfreq, y\_instfreq.

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

fs = 2000;
t = 0:1/fs:4-1/fs;

q = chirp(t-1,0,1/2,20,'quadratic',100,'convex').*exp(-1.7*(t-2).^2);
plot(t,q)

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

Используйте pspectrum функция с настройками по умолчанию для оценки спектра степени сигнала. Используйте оценку, чтобы вычислить мгновенную частоту.

[p,f,t] = pspectrum(q,fs,'spectrogram');

instfreq(p,f,t)

Figure contains an axes. The axes with title Instantaneous Frequency Estimate contains 2 objects of type image, line. This object represents Instantaneous Frequency.

Повторите вычисление с помощью синхронизированного преобразования Фурье. Используйте 500-выборочное окно Ханна, чтобы разделить сигнал на сегменты и отобразить их.

[s,sf,st] = fsst(q,fs,hann(500));

instfreq(abs(s).^2,sf,st)

Figure contains an axes. The axes with title Instantaneous Frequency Estimate contains 2 objects of type image, line. This object represents Instantaneous Frequency.

Сравните мгновенные частоты, найденные с помощью двух различных методов.

[psf,pst] = instfreq(p,f,t);
[fsf,fst] = instfreq(abs(s).^2,sf,st);

plot(fst,fsf,pst,psf)

Figure contains an axes. The axes contains 2 objects of type line.

Сгенерируйте синусоидальный сигнал, дискретизированный с частотой 1 кГц в течение 0,3 секунды и встроенный в белый Гауссов шум отклонения 1/16. Задайте синусоидальную частоту 200 Гц. Оцените и отобразите текущую частоту сигнала.

fs = 1000;
t = (0:1/fs:0.3-1/fs)';

x = sin(2*pi*200*t) + randn(size(t))/4;

instfreq(x,t)

Figure contains an axes. The axes with title Instantaneous Frequency Estimate contains 2 objects of type image, line. This object represents Instantaneous Frequency.

Оцените мгновенную частоту сигнала снова, но теперь используйте в качестве входных данных частотно-временное распределение с грубым разрешением частоты 25 Гц.

[p,fd,td] = pspectrum(x,t,'spectrogram','FrequencyResolution',25);

instfreq(p,fd,td)

Figure contains an axes. The axes with title Instantaneous Frequency Estimate contains 2 objects of type image, line. This object represents Instantaneous Frequency.

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

свернуть все

Входной сигнал, заданный как вектор или матрица. Если x является вектором, тогда instfreq рассматривает его как единый канал. Если x является матрицей, тогда instfreq вычисляет мгновенную частоту независимо для каждого столбца и возвращает результат в соответствующий столбец ifq.

Пример: sin(2*pi*(0:127)/16)+randn(1,128)/100 задает шумную синусоиду

Пример: [2 1].*sin(2*pi*(0:127)'./[16 64]) задает двухканальную синусоиду.

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

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

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

Шаги расчета, заданная как вектор действительных чисел, а duration скаляр, a duration массив, или datetime массив.

  • duration скаляр - временной интервал между последовательными выборками x.

  • Вектор действительных чисел, duration массив, или datetime массив - момент времени, соответствующий каждому элементу x.

Пример: seconds(1) задает интервал между последовательными измерениями сигнала на 1 секунду.

Пример: seconds(0:8) указывает, что сигнал дискретизируется на частоте 1 Гц в течение 8 секунд.

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

Входное расписание. xt должно содержать увеличивающуюся, конечную строку раз.

Если расписание имеет отсутствующие или повторяющиеся точки времени, можно исправить его с помощью советов в разделе «Чистое расписание с пропущенными, повторяющимися или неоднородными временами».

Пример: timetable(seconds(0:4)',randn(5,1)) задает случайный процесс, дискретизированный с частотой дискретизации 1 Гц в течение 4 секунд.

Пример: timetable(seconds(0:4)',randn(5,3),randn(5,4)) содержит трехканальный случайный процесс и четырехканальный случайный процесс, оба из которых дискретизированы с частотой дискретизации 1 Гц в течение 4 секунд.

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

Частотно-временное распределение, заданное как матрица, дискретизированная на частотах, сохраненных в fd и значения времени, сохраненные в td. Этот входной параметр поддерживается только при 'Method' установлено в 'tfmoment'.

Пример: [p,f,t] = pspectrum(sin(2*pi*(0:511)/4),4,'spectrogram') задает частотно-временное распределение синусоиды 1 Гц, дискретизированной с частотой дискретизации 4 Гц в течение 128 секунд, а также частоты и время, в которое она вычисляется.

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

Частота и значения времени для частотно-временного распределения, заданные как векторы. Эти входные параметры поддерживаются только при 'Method' установлено в 'tfmoment'.

Пример: [p,f,t] = pspectrum(sin(2*pi*(0:511)/4),4,'spectrogram') задает частотно-временное распределение синусоиды 1 Гц, дискретизированной с частотой дискретизации 4 Гц в течение 128 секунд, а также частоты и время, в которое она вычисляется.

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

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

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

Пример: 'Method','tfmoment','FrequencyLimits',[25 50] вычисляет мгновенную частоту входа в области значений от 25 Гц до 50 Гц путем нахождения первого условного спектрального момента частотно-временного распределения.

Частотная область значений, заданный как разделенная разделенными запятой парами, состоящая из 'FrequencyLimits' и двухэлементный вектор в Гц. Если не указано, 'FrequencyLimits' по умолчанию является [0 fs/2] для реальных сигналов и для [-fs/2 fs/2] для комплексных сигналов. Этот аргумент поддерживается только при 'Method' установлено в 'tfmoment'.

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

Метод расчета, заданный как разделенная разделенными запятой парами, состоящая из 'Method' и любой из них 'tfmoment' или 'hilbert'.

  • 'tfmoment' - Вычислите мгновенную частоту как первый условный спектральный момент частотно-временного распределения x. Если x неоднородно дискретизируется, instfreq интерполирует сигнал в однородную сетку для вычисления мгновенных частот.

  • 'hilbert' - Вычислите мгновенную частоту как производную от фазы аналитического сигнала x найден с использованием преобразования Гильберта. Этот метод принимает только равномерно дискретизированные реальные сигналы и не поддерживает вход частотно-временного распределения.

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

свернуть все

Мгновенная частота, возвращенная как вектор, матрица или расписание с теми же размерностями, что и вход.

Время оценок частоты, возвращаемое как вектор действительных чисел, a duration массив, или datetime массив.

Подробнее о

свернуть все

Мгновенная частота

instantaneous frequency нестационарного сигнала является изменяющимся во времени параметром, который относится к среднему значению частот, присутствующих в сигнале, когда он развивается [1], [2].

  • Если 'Method' установлено в 'tfmoment', затем instfreq оценивает мгновенную частоту как первый условный спектральный момент частотно-временного распределения входного сигнала. Функция:

    1. Вычисляет спектрограмму степени P спектра (t, f) входных данных с помощью pspectrum функция и использует спектр как частотно-временное распределение.

    2. Оценивает мгновенную частоту используя

      finst(t)=0fP(t,f)df0P(t,f)df.

  • Если 'Method' установлено в 'hilbert', затем instfreq оценивает мгновенную частоту как производную фазы аналитического сигнала входного сигнала. Функция:

    1. Вычисляет аналитический сигнал, x A, входа с помощью hilbert функция.

    2. Оценивает мгновенную частоту используя

      finst(t)=12πdϕdt,

      где ϕ - фаза аналитического сигнала входа.

Ссылки

[1] Боашаш, Буалем. Оценка и интерпретация мгновенной частоты сигнала - Часть 1: Основы. Материалы IEEE®. Том 80, апрель 1992 года, стр. 520-538.

[2] Боашаш, Буалем. Оценка и интерпретация мгновенной частоты сигнала - Часть 2: Алгоритмы и приложения. Материалы IEEE. Том 80, апрель 1992 года, стр. 540-568.

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

.
Введенный в R2018a