tsa

Синхронное временем среднее значение сигнала

Синтаксис

ta = tsa(x,fs,tp)
ta = tsa(x,t,tp)
ta = tsa(xt,tp)
ta = tsa(___,Name,Value)
[ta,t,p,rpm] = tsa(___)
tsa(___)

Описание

пример

ta = tsa(x,fs,tp) возвращает синхронное временем среднее значение x сигнала, выбранного на уровне fs, на импульсных временах, заданных в tp.

ta = tsa(x,t,tp) возвращает синхронное временем среднее значение x, выбранного в то время, когда значения сохранили в t.

пример

ta = tsa(xt,tp) возвращает синхронное временем среднее значение сигнала, сохраненного в расписании MATLAB® xt.

пример

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

[ta,t,p,rpm] = tsa(___) также возвращает t, вектор шагов расчета, соответствующих ta; векторный p значений фазы; и rpm, постоянная скорость вращения (в оборотах в минуту) соответствие ta.

tsa(___) без выходных аргументов строит синхронный временем средний сигнал и сигналы временного интервала, соответствующие каждому сегменту сигнала в текущей фигуре.

Примеры

свернуть все

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

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

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

f0 = 10;
y = sin(2*pi*f0*t) + randn(size(t))/10;

plot(t,y)
xlim([0 1/f0])

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

tPulse = 0:1/f0:max(t);

tsa(y,fs,tPulse)

Сгенерируйте сигнал, который состоит из экспоненциально ослабленного квадратичного щебета. Сигнал выбирается на уровне 1 кГц в течение 2 секунд. Щебет имеет начальную частоту 2 Гц, которая увеличивается до 28 Гц после первой секунды. Затухание имеет характеристическое время 1/2 секунды. Постройте сигнал.

fs = 1e3;
t = 0:1/fs:2;

x = exp(-2*t').*chirp(t',2,1,28,'quadratic');

plot(t,x)

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

ts = seconds(t)';
tx = timetable(ts,x);

[~,lc] = findpeaks(x,t);
tsa(tx,lc)

Вычислите синхронное временем среднее значение. Просмотрите типы выходных аргументов. Шаги расчета хранятся в массиве длительности.

[xta,xt,xp,xrpm] = tsa(tx,lc);
whos x*
  Name         Size            Bytes  Class        Attributes

  x         2001x1             16008  double                 
  xp           9x1              1192  timetable              
  xrpm         1x1                 8  double                 
  xt           9x1                74  duration               
  xta          9x1              1190  timetable              

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

Просмотрите типы выходных аргументов. Шаги расчета снова хранятся в массиве длительности, даже при том, что входное расписание использовало вектор datetime.

dtb = datetime(datevec(ts));
dtt = timetable(dtb,x);

nr = 15;
tsa(dtt,lc,'NumRotations',nr)

[dta,dt,dp,drpm] = tsa(dtt,lc,'NumRotations',nr);
whos d*
  Name         Size            Bytes  Class        Attributes

  dp         135x1              3208  timetable              
  drpm         1x1                 8  double                 
  dt         135x1              1082  duration               
  dta        135x1              3206  timetable              
  dtb       2001x1             32017  datetime               
  dtt       2001x1             49059  timetable              

Вычислите синхронное временем среднее значение положения лопасти вентилятора, когда это замедляется после switchoff.

Выключен настольный вентилятор, вращающийся на уровне 2 400 об/мин. Сопротивление воздуха (с незначительным вкладом от переноса трения) заставляет ротор вентилятора остановиться приблизительно через 5 секунд. Высокоскоростная камера измеряет x-координату одной из лопастей вентилятора на уровне 1 кГц.

fs = 1000;
t = 0:1/fs:5-1/fs;

rpm0 = 2400;

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

ϕ=2πf0T(1-e-t/T),

где f0 начальная частота и T=0.75 второй время затухания.

a = 0.1;
f0 = rpm0/60;
T = 0.75;

phi = 2*pi*f0*T*(1-exp(-t/T));

Вычислите и постройте x-и y-координаты. Добавьте белый Гауссов шум.

x = a*cos(phi) + randn(size(phi))/200;
y = a*sin(phi) + randn(size(phi))/200;

plot(t,x,t,y)

Определите синхронизирующийся сигнал. Используйте функцию tachorpm, чтобы найти импульсные времена. Ограничьте поиск временами перед 2,5 секундами. Постройте скорость вращения, чтобы видеть ее экспоненциальное затухание.

[rpm,~,tp] = tachorpm(x(t<2.5),fs);
tachorpm(x(t<2.5),fs)

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

clf
tsa(x,fs,tp,'Method','fft')

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

свернуть все

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

Пример: cos(pi/4*(0:159))+randn(1,160) является одноканальным сигналом вектора - строки.

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

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

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

Импульсные времена, заданные как скаляр или вектор.

  • Скаляр — постоянный временной интервал, по которому происходят вращения.

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

Используйте tachorpm, чтобы извлечь времена импульса тахометра от сигнала тахометра.

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

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

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

  • Вектор или массив duration — момент времени, соответствующий каждому элементу x.

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

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

Если расписание имеет пропавших без вести или дублирующиеся моменты времени, можно зафиксировать его с помощью советов в Чистом Расписании с Пропавшими без вести, Копией, или Неоднородные Времена (MATLAB).

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Method','pchip','ResampleFactor',10 указывает, что сигнал состоит в том, чтобы быть сверхдискретизирован фактором 10 и усреднен в области времени использование кусочно-кубической интерполяции Эрмита.

Схема Interpolation, заданная как пара, разделенная запятой, состоящая из 'InterpMethod' и одно из этих значений:

  • 'linear' — Выполните линейную интерполяцию и среднее значение во временном интервале.

  • сплайн Выполните интерполяцию кубическим сплайном и среднее значение во временном интервале.

  • pchip Выполните кусочно-кубическую интерполяцию Эрмита и среднее значение во временном интервале.

  • fft Выполните усреднение частотного диапазона.

Количество вращений вала в ta, заданном как пара, разделенная запятой, состоящая из 'NumRotations' и положительного целочисленного скаляра.

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

Номер моментов времени на вращение вала, заданное как пара, разделенная запятой, состоящая из 'PulsesPerRotation' и положительной скалярной величины.

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

Фактор, которым можно увеличить частоту дискретизации, заданную как пара, разделенная запятой, состоящая из 'ResampleFactor' и положительного целочисленного скаляра.

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

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

свернуть все

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

  • Если входное расписание хранит временные стоимости как массив duration, то временные стоимости ta являются также массивом duration.

  • Если входное расписание хранит временные стоимости как массив datetime, то временные стоимости ta являются массивом duration, выраженным в секундах.

Шаги расчета, возвращенные как вектор или массив duration.

  • Если вход к tsa является расписанием, которое хранит временные стоимости как массив duration, то t имеет тот же формат как входные временные стоимости.

  • Если вход к tsa является расписанием, которое хранит временные стоимости как массив datetime, то t является вектором duration, выраженным в секундах.

  • Если вход к tsa является числовым вектором и входными шагами расчета, t хранится в скаляре duration или массиве duration, то t является массивом duration с теми же модулями как вход t.

Значения фазы, возвращенные как вектор или расписание, выражаются в оборотах.

Если вход к tsa является расписанием, то p является также расписанием. p имеет те же значения как временные стоимости ta.

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

Алгоритмы

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

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

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

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

    • Если 'Method' установлен в 'fft', функцию:

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

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

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

      4. Составляет в среднем спектры.

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

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

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

      2. Конкатенации передискретизируемых сегментов сигнала на основе значения заданы для 'NumRotations'.

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

Ссылки

[1] Bechhoefer, Эрик и Майкл Кингсли. "Анализ синхронных временем средних алгоритмов". Продолжения ежегодной конференции предзнаменований и медицинского общества управления, Сан-Диего, CA, сентябрь-октябрь 2009.

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2017b