tsa
Усреднение синхронного по времени сигнала.
| Библиотека |
|
Синтаксис
Вызов функции
-
ta,t,p,rpm = tsa(x,fs,tp)— возвращает синхронное по времени среднее значение сигналаx, дискретизированного с частотойfs, по импульсам, указанным во входном аргументеtp, а также вектор периодов дискретизацииt, соответствующихta, вектор фазовых значенийpи постоянную скорость вращенияrpm, измеряемую в об/мин, соответствующуюta.
-
ta,t,p,rpm = tsa(___,Name=Value)— задает дополнительные параметры для любого из предыдущих вариантов синтаксиса с помощью аргументов типа «имя-значение». Например, можно указать количество импульсов тахометра на один оборот вала или выбрать усреднение сигнала во временной или частотной области.
-
tsa(___;out=:plot)— строит график синхронного по времени усредненного сигнала и сигналов во временной области, соответствующих каждому сегменту сигнала на текущем графике.
Аргументы
Входные аргументы
#
x —
входной сигнал
вектор
Details
Входной сигнал, заданный как вектор.
| Типы данных |
|
#
fs —
частота дискретизации
скаляр
Details
Частота дискретизации, заданная как положительный скаляр.
| Типы данных |
|
#
tp —
время импульсов
скаляр | вектор
Details
Время импульсов, заданное как скаляр или вектор:
-
скаляр— постоянный временной интервал, в течение которого происходят вращения; -
вектор— неотрицательные, строго возрастающие моменты времени, определяющие постоянную фазу вращения.
Используйте функцию tachorpm для извлечения периодов дискретизации импульсов тахометра из сигнала тахометра.
| Типы данных |
|
Входные аргументы «имя-значение»
Укажите необязательные пары аргументов в виде Name=Value, где Name — имя аргумента, а Value — соответствующее значение. Аргументы типа «имя-значение» должны располагаться после других аргументов, но порядок пар не имеет значения. Можно указать несколько пар «имя-значение».
Пример: ta = tsa(x, Method = "pchip", ResampleFactor = 10) указывает, что сигнал должен быть подвергнут повышающей дискретизации в 10 раз и усреднен во временной области с использованием кусочно-кубической интерполяции Эрмита.
#
Method —
алгоритм усреднения
"linear" (по умолчанию) | "spline" | "pchip" | "fft"
Details
Схема интерполяции, заданная одним из следующих значений:
-
"linear"— выполнение линейной интерполяции и усреднения во временной области; -
"spline"— выполнение кубической сплайновой интерполяции и усреднения во временной области; -
"pchip"— выполнение кусочно-кубической интерполяции Эрмита и усреднения во временной области; -
"fft"— выполнение усреднения в частотной области.
#
PulsesPerRotation —
количество моментов времени за один оборот вала
1 (по умолчанию) | скаляр
Details
Количество моментов времени за один оборот вала, заданное как положительный скаляр.
| Типы данных |
|
#
ResampleFactor —
коэффициент, на который увеличивается частота дискретизации
1 (по умолчанию) | скаляр
Details
Коэффициент, на который увеличивается частота дискретизации, заданный как положительное целое число.
| Типы данных |
|
#
out —
тип выходных данных
:data (по умолчанию) | :plot
Details
Тип выходных данных:
-
:data— функция возвращает данные; -
:plot— функция возвращает график.
Выходные аргументы
#
ta —
средние значения синхронного по времени сигнала
вектор
Details
Средние значения синхронного по времени сигнала, возвращаемые в виде вектора.
#
t —
периоды дискретизации
вектор
Details
Периоды дискретизации, возвращаемые в виде вектора.
#
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 зададим для аргумента out значение :plot, чтобы отобразить результат.
import EngeeDSP.Functions: tsa
tPulse = 0:1/f0:maximum(t)
tsa(y, fs, tPulse, out = :plot)
Алгоритмы
При заданных входном сигнале, частоте дискретизации и наборе импульсов тахометра функция tsa выполняет следующие шаги:
-
Определяет время начала и окончания цикла на основе импульсов тахометра и значения, указанного для аргумента
PulsesPerRotation. -
Передискретизирует входной сигнал на основе значения, указанного для аргумента
ResampleFactor. -
Усредняет передискретизированный сигнал на основе значения, указанного для аргумента
Method.-
Если для аргумента
Methodустановлено значение"fft", функция:-
Разбивает сигнал на сегменты, соответствующие различным циклам.
-
Вычисляет дискретное преобразование Фурье каждого сегмента.
-
Усекает более длинные преобразования, чтобы все преобразования имели одинаковую длину.
-
Усредняет спектры.
-
Вычисляет обратное дискретное преобразование Фурье усредненного значения для преобразования его во временную область.
-
-
Если для аргумента
Methodзадан один из методов, работающих во временной области, функция:-
Используя указанный метод, интерполирует сигнал на сетку равномерно распределенных отсчетов, соответствующих различным циклам.
-
Объединяет сегменты сигнала, полученные путем передискретизации, на основе значения, указанного для аргумента
NumRotations. -
Вычисляет среднее значение всех сегментов.
-
-