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 имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

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

  • '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