Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

tsa

Promedio de señal sincrónica de tiempo

Descripción

ejemplo

ta = tsa(x,fs,tp) devuelve un promedio síncrono de tiempo de una señal, muestreada a una velocidad, en los tiempos de pulso especificados en .xfstp

ta = tsa(x,t,tp) devuelve un promedio sincrónico de tiempo de los valores muestreados en el momento almacenados en .xt

ejemplo

ta = tsa(xt,tp) devuelve un promedio síncrono de tiempo de una señal almacenada en el calendario.MATLAB®xt

ejemplo

ta = tsa(___,Name,Value) especifica opciones adicionales para cualquiera de las sintaxis anteriores mediante argumentos de par nombre-valor. Por ejemplo, puede especificar el número de pulsos de tacómetro por rotación de eje o elegir promediar la señal en el dominio de tiempo o en el dominio de frecuencia.

[ta,t,p,rpm] = tsa(___) también devuelve , un vector de tiempos de muestra correspondientea a ; un vector de valores de fase; y , la velocidad de rotación constante (en revoluciones por minuto) correspondiente a .ttaprpmta

tsa(___) sin argumentos de salida traza la señal media sincrónica de tiempo y las señales de dominio de tiempo correspondientes a cada segmento de señal en la figura actual.

Ejemplos

contraer todo

Calcular el promedio sincrónico de tiempo de un sinusoides ruidoso.

Generar una señal que consiste en un sinusoides incrustado en el ruido gaussiano blanco. La señal se muestrea a 500 Hz durante 20 segundos. Especifique una frecuencia sinusoides de 10 Hz y una varianza de ruido de 0,01. Trazar un período de la señal.

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])

Calcular el promedio síncrono de tiempo de la señal. Para la señal de sincronización, utilice un conjunto de pulsos con el mismo período que el sinusoides. Utilícelo sin argumentos de salida para mostrar el resultado.tsa

tPulse = 0:1/f0:max(t);  tsa(y,fs,tPulse)

Generar una señal que consiste en un chirrido cuadrático amortiguado exponencialmente. La señal se muestrea a 1 kHz durante 2 segundos. El chirrido tiene una frecuencia inicial de 2 Hz que aumenta a 28 Hz después del primer segundo. La amortiguación tiene un tiempo característico de 1/2 segundo. Traza la señal.

fs = 1e3; t = 0:1/fs:2;  x = exp(-2*t').*chirp(t',2,1,28,'quadratic');  plot(t,x)

Cree una matriz de duración utilizando el vector de tiempo. Construir un calendario con la matriz de duración y la señal. Determine los tiempos de pulso utilizando las ubicaciones de los picos de señal. Mostrar el promedio sincrónico de tiempo.

ts = seconds(t)'; tx = timetable(ts,x);  [~,lc] = findpeaks(x,t); tsa(tx,lc)

Calcular el promedio sincrónico de tiempo. Ver los tipos de los argumentos de salida. Los tiempos de muestra se almacenan en una matriz de duración.

[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               

Convierta la matriz de duración en un vector.datetime Construir un calendario utilizando el vector y la señal.datetime Calcular el promedio sincrónico de tiempo, pero ahora promedio sobre conjuntos de 15 rotaciones.

Ver los tipos de los argumentos de salida. Los tiempos de muestreo se almacenan de nuevo en una matriz de duración, aunque el calendario de entrada haya utilizado un vector.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               

Calcular el promedio síncrono de tiempo de la posición de una hoja de ventilador a medida que se ralentiza después del apagado.

Se apaga un ventilador de escritorio que gira a 2400 rpm. La resistencia al aire (con una contribución insignificante por la fricción del rodamiento) hace que el rotor del ventilador se detenga en aproximadamente 5 segundos. Una cámara de alta velocidad mide la coordenada de una de las aspas del ventilador a una velocidad de 1 kHz.x

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

Idealice la hoja del ventilador como una masa puntual que rodea el centro del rotor en un radio de 10 cm. La hoja experimenta una fuerza de arrastre proporcional a la velocidad, lo que da como resultado la siguiente expresión para el ángulo de fase:

<math display="block">
<mrow>
<mi>ϕ</mi>
<mo>=</mo>
<mn>2</mn>
<mi>π</mi>
<msub>
<mrow>
<mi mathvariant="italic">f</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
<mi mathvariant="italic">T</mi>
<mrow>
<mo>(</mo>
<mrow>
<mn>1</mn>
<mo>-</mo>
<msup>
<mrow>
<mi mathvariant="italic">e</mi>
</mrow>
<mrow>
<mo>-</mo>
<mrow>
<mrow>
<mi mathvariant="italic">t</mi>
</mrow>
<mo>/</mo>
<mrow>
<mi mathvariant="italic">T</mi>
</mrow>
</mrow>
</mrow>
</msup>
</mrow>
<mo>)</mo>
</mrow>
<mo>,</mo>
</mrow>
</math>

Dónde

<math display="inline">
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">f</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
</mrow>
</math>
es la frecuencia inicial y
<math display="inline">
<mrow>
<mi mathvariant="italic">T</mi>
<mo stretchy="false">=</mo>
<mn>0</mn>
<mo stretchy="false">.</mo>
<mn>75</mn>
</mrow>
</math>
segundo es el tiempo de descomposición.

a = 0.1; f0 = rpm0/60; T = 0.75;  phi = 2*pi*f0*T*(1-exp(-t/T));

Calcular y trazar las coordenadas y.x-y Agregue ruido gaussiano blanco.

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

Determine la señal de sincronización. Utilice la función para encontrar los tiempos de pulso.tachorpm Limite la búsqueda a tiempos anteriores a 2,5 segundos. Trazar la velocidad de rotación para ver su decaimiento exponencial.

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

Calcular y trazar la señal media sincrónica de tiempo, que corresponde a un período de un sinusoides. Realice el promedio en el dominio de frecuencia.

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

Argumentos de entrada

contraer todo

Señal de entrada, especificada como vector.

Ejemplo: es una señal de vector de fila de un solo canal.cos(pi/4*(0:159))+randn(1,160)

Tipos de datos: single | double

Frecuencia de muestreo, especificada como escalar positiva.

Tipos de datos: single | double

Tiempos de pulso, especificados como escalar es como un escalar o un vector.

  • Escalar — un intervalo de tiempo constante sobre el cual se producen rotaciones.

  • Vector — instantes no negativos, estrictamente crecientes que definen la fase de rotación constante.

Se utiliza para extraer los tiempos de pulso del tacómetro de una señal de tacómetro.tachorpm

Tipos de datos: single | double

Tiempos de muestreo, especificados como un vector, un escalar o una matriz.durationduration

  • Escalar — el intervalo de tiempo entre muestras consecutivas de .x

  • Vector o matriz — el instante de tiempo correspondiente a cada elemento de .durationx

Tipos de datos: single | double | duration

Horario de entrada. debe contener tiempos de fila finitos crecientes y sólo una variable que consta de un vector.xt

Si falta un horario o se duplican los puntos de tiempo, puede corregirlo con las sugerencias de .Clean Timetable with Missing, Duplicate, or Nonuniform Times

Ejemplo: especifica una variable aleatoria de dos canales muestreada a 1 Hz durante 4 segundos.timetable(seconds(0:4)',randn(5,2))

Tipos de datos: single | double

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como .Name1,Value1,...,NameN,ValueN

Ejemplo: especifica que la señal debe ser remuestreada por un factor de 10 y promediada en el dominio del tiempo utilizando la interpolación de Hermita por pieza-cúbica.'Method','pchip','ResampleFactor',10

Esquema de interpolación, especificado como el par separado por comas que consta de y uno de estos valores:'InterpMethod'

  • — Realizar interpolación lineal y promedio en el dominio de tiempo.'linear'

  • — Realizar interpolación de spline cúbica y promedio en el dominio de tiempo.'spline'

  • — Realizar la interpolación de hermita por pieza-cúbica y la media en el dominio del tiempo.'pchip'

  • — Realizar el promedio de dominio de frecuencia.'fft'

Número de rotaciones de eje en , especificado como el par separado por comas que consta de y un escalar entero positivo.ta'NumRotations'

Tipos de datos: single | double

Número de instantes de tiempo por rotación de eje, especificado como el par separado por comas que consta de y un escalar positivo.'PulsesPerRotation'

Tipos de datos: single | double

Factor por el que se aumenta la frecuencia de muestreo, especificada como el par separado por comas que consta de un escalar entero positivo.'ResampleFactor'

Tipos de datos: single | double

Argumentos de salida

contraer todo

Promedio de señal sincrónica de tiempo, devuelto como vector o calendario. Si la entrada a es un calendario, entonces también es un calendario.tsata

  • Si el calendario de entrada almacena los valores de tiempo como una matriz, los valores de tiempo de también son una matriz.durationtaduration

  • Si el calendario de entrada almacena los valores de tiempo como una matriz, los valores de tiempo de son una matriz expresada en segundos.datetimetaduration

Tiempos de muestreo, devueltos como vector o matriz.duration

  • Si la entrada a es un calendario que almacena valores de tiempo como una matriz, entonces tiene el mismo formato que los valores de tiempo de entrada.tsadurationt

  • Si la entrada a es un calendario que almacena valores de tiempo como una matriz, entonces es un vector expresado en segundos.tsadatetimetduration

  • Si la entrada a es un vector numérico y los tiempos de muestra de entrada se almacenan en un escalar o una matriz, entonces es una matriz con las mismas unidades que la entrada.tsatdurationdurationtdurationt

Valores de fase, devueltos como vector o calendario expresados en revoluciones.

Si la entrada a es un calendario, entonces también es un calendario. tiene los mismos valores que los valores de tiempo de .tsappta

Velocidad de rotación constante, devuelta como un escalar expresado en revoluciones por minuto.

Algoritmos

Dada una señal de entrada, una frecuencia de muestreo y un conjunto de pulsos de tacómetro, realiza estos pasos:tsa

  1. Determina las horas de inicio y finalización del ciclo en función de los pulsos del tacómetro y el valor especificado para .'PulsesPerRotation'

  2. Vuelve a muestrear la señal de entrada en función del valor especificado para .'ResampleFactor'

  3. Promedia la señal remuestreada en función de la opción especificada para .'Method'

    • Si se establece en , la función:'Method''fft'

      1. Divide la señal en segmentos correspondientes a los diferentes ciclos.

      2. Calcula la transformación discreta de Fourier de cada segmento.

      3. Trunca las transformaciones más largas para que todas las transformaciones tengan la misma longitud.

      4. Promedio de los espectros.

      5. Calcula la transformación inversa discreta de Fourier del promedio para convertirla al dominio de tiempo.

    • Si se establece en uno de los métodos de dominio de tiempo, la función:'Method'

      1. Utilizando el método especificado, interpola la señal en cuadrículas de muestras igualmente espaciadas correspondientes a los diferentes ciclos.

      2. Concatena los segmentos de señal remuestreados en función del valor especificado para .'NumRotations'

      3. Calcula el promedio de todos los segmentos.

Referencias

[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.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Introducido en R2017b