Документация Engee

tsa

Усреднение синхронного по времени сигнала.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • ta,t,p,rpm = tsa(x,fs,tp) — возвращает синхронное по времени среднее значение сигнала x, дискретизированного с частотой fs, по импульсам, указанным во входном аргументе tp, а также вектор периодов дискретизации t, соответствующих ta, вектор фазовых значений p и постоянную скорость вращения rpm, измеряемую в об/мин, соответствующую ta.

  • ta,t,p,rpm = tsa(x,t,tp) — возвращает синхронное по времени среднее значение сигнала x, дискретизированного по значениям времени, хранящимся во входном аргументе t.

  • ta,t,p,rpm = tsa(___,Name=Value) — задает дополнительные параметры для любого из предыдущих вариантов синтаксиса с помощью аргументов типа «имя-значение». Например, можно указать количество импульсов тахометра на один оборот вала или выбрать усреднение сигнала во временной или частотной области.

  • tsa(___;out=:plot) — строит график синхронного по времени усредненного сигнала и сигналов во временной области, соответствующих каждому сегменту сигнала на текущем графике.

Аргументы

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

# x — входной сигнал
вектор

Details

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

Типы данных

Float32, Float64, Int64

# fs — частота дискретизации
скаляр

Details

Частота дискретизации, заданная как положительный скаляр.

Типы данных

Float32, Float64, Int64

# tp — время импульсов
скаляр | вектор

Details

Время импульсов, заданное как скаляр или вектор:

  • скаляр — постоянный временной интервал, в течение которого происходят вращения;

  • вектор — неотрицательные, строго возрастающие моменты времени, определяющие постоянную фазу вращения.

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

Типы данных

Float32, Float64, Int64

# t — периоды дискретизации
скаляр

Details

Периоды дискретизации, заданные как скаляр — временной интервал между последовательными отсчетами x.

Типы данных

Float32, Float64, Int64

Входные аргументы «имя-значение»

Укажите необязательные пары аргументов в виде Name=Value, где Name — имя аргумента, а Value — соответствующее значение. Аргументы типа «имя-значение» должны располагаться после других аргументов, но порядок пар не имеет значения. Можно указать несколько пар «имя-значение».

Пример: ta = tsa(x, Method = "pchip", ResampleFactor = 10) указывает, что сигнал должен быть подвергнут повышающей дискретизации в 10 раз и усреднен во временной области с использованием кусочно-кубической интерполяции Эрмита.

# Method — алгоритм усреднения
"linear" (по умолчанию) | "spline" | "pchip" | "fft"

Details

Схема интерполяции, заданная одним из следующих значений:

  • "linear" — выполнение линейной интерполяции и усреднения во временной области;

  • "spline" — выполнение кубической сплайновой интерполяции и усреднения во временной области;

  • "pchip" — выполнение кусочно-кубической интерполяции Эрмита и усреднения во временной области;

  • "fft" — выполнение усреднения в частотной области.

# NumRotations — количество оборотов вала
1 (по умолчанию) | скаляр

Details

Количество оборотов вала в аргументе ta, заданное как положительное целое число.

Типы данных

Float32, Float64, Int64

# PulsesPerRotation — количество моментов времени за один оборот вала
1 (по умолчанию) | скаляр

Details

Количество моментов времени за один оборот вала, заданное как положительный скаляр.

Типы данных

Float32, Float64, Int64

# ResampleFactor — коэффициент, на который увеличивается частота дискретизации
1 (по умолчанию) | скаляр

Details

Коэффициент, на который увеличивается частота дискретизации, заданный как положительное целое число.

Типы данных

Float32, Float64, Int64

# out — тип выходных данных
:data (по умолчанию) | :plot

Details

Тип выходных данных:

  • :data — функция возвращает данные;

  • :plot — функция возвращает график.

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

# ta — средние значения синхронного по времени сигнала
вектор

Details

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

# t — периоды дискретизации
вектор

Details

Периоды дискретизации, возвращаемые в виде вектора.

# p — фазовые значения
вектор

Details

Фазовые значения, возвращаемые в виде вектора, выраженные в оборотах.

Аргумент p имеет те же значения, что и временные значения аргумента ta.

# rpm — постоянная скорость вращения
скаляр

Details

Постоянная скорость вращения, возвращаемая в виде скаляра, выраженного в об/мин.

Примеры

Синхронное по времени усреднение синусоиды

Details

Вычислим синхронное по времени усреднение зашумленной синусоиды.

Сгенерируем сигнал, состоящий из синусоиды, погруженной в белый гауссовский шум. Сигнал дискретизируется с частотой 500 Гц в течение 20 секунд. Укажем частоту синусоиды 10 Гц и дисперсию шума 0.01. Построим график одного периода сигнала.

fs = 500
t = 0:1/fs:20-1/fs

f0 = 10
y = sin.(2π * f0 * t) + randn(length(t)) / 10

plot(t, y, xlims=(0, 1/f0))

tsa 1

Вычислим синхронное по времени усреднение сигнала. В качестве синхронизирующего сигнала используем набор импульсов с тем же периодом, что и у синусоиды. В функции tsa зададим для аргумента out значение :plot, чтобы отобразить результат.

import EngeeDSP.Functions: tsa

tPulse = 0:1/f0:maximum(t)

tsa(y, fs, tPulse, out = :plot)

tsa 2

Алгоритмы

При заданных входном сигнале, частоте дискретизации и наборе импульсов тахометра функция tsa выполняет следующие шаги:

  1. Определяет время начала и окончания цикла на основе импульсов тахометра и значения, указанного для аргумента PulsesPerRotation.

  2. Передискретизирует входной сигнал на основе значения, указанного для аргумента ResampleFactor.

  3. Усредняет передискретизированный сигнал на основе значения, указанного для аргумента Method.

    • Если для аргумента Method установлено значение "fft", функция:

      1. Разбивает сигнал на сегменты, соответствующие различным циклам.

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

      3. Усекает более длинные преобразования, чтобы все преобразования имели одинаковую длину.

      4. Усредняет спектры.

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

    • Если для аргумента Method задан один из методов, работающих во временной области, функция:

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

      2. Объединяет сегменты сигнала, полученные путем передискретизации, на основе значения, указанного для аргумента NumRotations.

      3. Вычисляет среднее значение всех сегментов.

Литература

  1. Bechhoefer, Eric, and Michael Kingsley. «A Review of Time-Synchronous Average Algorithms.» Proceedings of the Annual Conference of the Prognostics and Health Management Society, San Diego, CA, September-October, 2009.