instfreq

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

Описание

пример

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

пример

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

пример

ifq = instfreq(xt) оценивает мгновенную частоту сигнала, сохраненного в расписании MATLAB® 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));

plot(t,s)

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

instfreq(s,fs)

Сгенерируйте сигнал с комплексным знаком, который состоит из щебета с синусоидально различным содержимым частоты. Сигнал производится на уровне 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)

Создайте двухканальный сигнал, произведенный на уровне 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)

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

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

clf
instfreq(xt)

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

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

Сгенерируйте квадратичный щебет, модулируемый Гауссовым. Задайте частоту дискретизации 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)

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

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

instfreq(p,f,t)

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

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

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

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

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

plot(fst,fsf,pst,psf)

Сгенерируйте синусоидальный сигнал, произведенный на уровне 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)

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

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

instfreq(p,fd,td)

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

свернуть все

Входной сигнал в виде вектора или матрицы. Если 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

Шаги расчета в виде вектора действительных чисел, a duration скаляр, a duration массив или a 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 массив или a datetime массив.

Больше о

свернуть все

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

Мгновенная частота неустановившегося сигнала является изменяющимся во времени параметром, который относится к среднему значению частот, существующих в сигнале, когда это развивается [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] Boashash, Boualem. "Оценивая и Интерпретируя Мгновенную Частоту Сигнала — Часть 1: Основные принципы". Продолжения IEEE®. Издание 80, апрель 1992, стр 520–538.

[2] Boashash, Boualem. "Оценивая и Интерпретируя Мгновенную Частоту Сигнала — Часть 2: Алгоритмы и Приложения". Продолжения IEEE. Издание 80, апрель 1992, стр 540–568.

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

Введенный в R2018a