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.

Analizador de señales

Visualice y compare múltiples señales y espectros

Descripción

La aplicación es una herramienta interactiva para visualizar, preprocesar, medir, analizar y comparar señales en el dominio de tiempo, en el dominio de frecuencia y en el dominio de frecuencia de tiempo.Analizador de señales Usando la aplicación, puedes:

  • Accede fácilmente a todas las señales del espacio de trabajoMATLAB®

  • Suavizar, filtrar, remuestrear, detrend, duplicar, extraer y cambiar el nombre de las señales sin salir de la aplicación

  • Añadir y aplicar funciones de preprocesamiento personalizadas

  • Visualice y compare múltiples representaciones de forma de onda, espectro, persistencia, espectrograma y scalogram de señales simultáneamente

  • Señales de etiquetas de forma interactiva para análisis o para aplicaciones de aprendizaje automático y aprendizaje profundo

La aplicación proporciona una manera de trabajar con muchas señales de diferentes duraciones al mismo tiempo y en la misma vista.Analizador de señales

Para obtener más información, consulte .Uso de la aplicación Signal Analyzer

Necesita una licencia para utilizar la vista de scalogram.Wavelet Toolbox™

Abrir la aplicación Analizador de señales

  • Toolstrip:MATLAB En la pestaña , en , haga clic en el icono de la aplicación.AppsSignal Processing and Communications

  • símbolo del sistema:MATLAB Entrar.signalAnalyzer

Ejemplos

expandir todo

Implemente un sintetizador de música digital básico y utilícelo para reproducir una canción tradicional en un arreglo de tres voces. Especifique una frecuencia de muestreo de 2 kHz. Guarde la canción como un horario de MATLAB®.

fs = 2e3; t = 0:1/fs:0.3-1/fs;  l = [0 130.81 146.83 164.81 174.61 196.00 220 246.94]; m = [0 261.63 293.66 329.63 349.23 392.00 440 493.88]; h = [0 523.25 587.33 659.25 698.46 783.99 880 987.77]; note = @(f,g) [1 1 1]*sin(2*pi*[l(g) m(g) h(f)]'.*t);  mel = [3 2 1 2 3 3 3 0 2 2 2 0 3 5 5 0 3 2 1 2 3 3 3 3 2 2 3 2 1]+1; acc = [3 0 5 0 3 0 3 3 2 0 2 2 3 0 5 5 3 0 5 0 3 3 3 0 2 2 3 0 1]+1;  song = []; for kj = 1:length(mel)     song = [song note(mel(kj),acc(kj)) zeros(1,0.01*fs)]; end song = song'/(max(abs(song))+0.1);  % To hear, type sound(song,fs)  tune = timetable(seconds((0:length(song)-1)'/fs),song);

Abra y arrastre el horario desde el explorador del espacio de trabajo a la tabla Signal.Analizador de señales Haga clic en el botón para crear una cuadrícula de dos por dos de pantallas.Cuadrícula de visualización Seleccione las dos pantallas superiores y la pantalla inferior izquierda y haga clic en el botón para agregar una vista de espectro.Espectro Seleccione la pantalla inferior derecha, haga clic para agregar una vista de espectrograma y haga clic para eliminar la vista de tiempo.Frecuencia de tiempohora Arrastre la canción a las cuatro pantallas. Seleccione la pantalla inferior derecha y, en la pestaña, especifique una resolución de tiempo de 0,31 segundos (310 ms) y una superposición del 0% entre los segmentos adyacentes.Espectrograma Establezca elLímites de potencia

<math display="inline">
<mrow>
<mo>-</mo>
<mn>50</mn>
</mrow>
</math>
dB y
<math display="inline">
<mrow>
<mo>-</mo>
<mn>10</mn>
</mrow>
</math>
Db.

En la pestaña, haga clic tres veces para crear tres copias de la canción.AnalizadorDuplicado Cambie el nombre de las copias como , , y haciendo doble clic en la columna de la tabla Signal.highmediumlowNombre Mueva las copias a las dos pantallas superiores e inferiores izquierdas.

Preprocesar las señales duplicadas utilizando filtros.

  1. Seleccione la señal haciendo clic en su nombre en la tabla Señal.high En la pestaña, haga clic en .AnalizadorPasa-altos En la pestaña que aparece, introduzca una frecuencia de banda de paso de 450 Hz y aumente la pendiente a 0,95.Pasa-altos Haga clic.Pasa-altos

  2. Seleccione la señal haciendo clic en su nombre en la tabla Señal.medium En la pestaña, haga clic en .AnalizadorPreprocesamiento Bandpass En la pestaña que aparece, introduzca 230 Hz y 450 Hz como frecuencias de banda de paso inferior y superior, respectivamente.Bandpass Aumente la pendiente a 0,95. Haga clic.Bandpass

  3. Seleccione la señal haciendo clic en su nombre en la tabla Señal.low En la pestaña, haga clic en .AnalizadorPasabajos En la pestaña que aparece, introduzca una frecuencia de banda de paso de 230 Hz y aumente la pendiente a 0,95.Pasabajos Haga clic.Pasabajos

En cada una de las tres pantallas que contienen señales filtradas:

  1. Elimine la señal original desactivando la casilla de verificación situada junto a su nombre.

  2. En la pestaña, haga clic para agregar una vista de espectrograma y haga clic para eliminar la vista de tiempo.MonitorFrecuencia de tiempohora

  3. En la pestaña, especifique una resolución de tiempo de 0,31 segundos y una superposición del 0% entre los segmentos adyacentes.Espectrograma Establezca elLímites de potencia

    <math display="inline">
    <mrow>
    <mo>-</mo>
    <mn>50</mn>
    </mrow>
    </math>
    dB y
    <math display="inline">
    <mrow>
    <mo>-</mo>
    <mn>10</mn>
    </mrow>
    </math>
    Db.

Seleccione las tres señales filtradas haciendo clic en su columna en la tabla Señal.Nombre En la pestaña, haga clic y guarde las señales en un archivo MAT llamado .Analizadorexportarmusic.mat En MATLAB, cargue el archivo en el espacio de trabajo. Traza los espectros de las tres señales.

load music  pspectrum(low) hold on pspectrum(medium) pspectrum(high) hold off

% To hear the different voices, type  % sound(low.low,fs), pause(5), sound(medium.medium,fs), pause(5), sound(high.high,fs)

Este ejemplo simula los diferentes pasos de un proceso de comunicación básico. Los sistemas de comunicación funcionan modulando fragmentos de información en un nivel superior, transmitiendo las señales moduladas a través de un canal físico ruidoso, recibiendo las formas de onda ruidosos y demodulando las señales recibidas para reconstruir la información inicial.frecuencia portadora

Toda la información transportada en una señal de valor real

<math display="inline">
<mrow>
<mi mathvariant="italic">s</mi>
<mrow>
<mo>(</mo>
<mrow>
<mi mathvariant="italic">t</mi>
</mrow>
<mo>)</mo>
</mrow>
</mrow>
</math>
puede ser representado por un paso bajo correspondiente:sobre complejo

<math display="inline">
<mrow>
<mi mathvariant="italic">s</mi>
<mrow>
<mo>(</mo>
<mrow>
<mi mathvariant="italic">t</mi>
</mrow>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mi mathvariant="normal">Re</mi>
<mrow>
<mo>{</mo>
<mrow>
<mi mathvariant="italic">g</mi>
<mrow>
<mo>(</mo>
<mrow>
<mi mathvariant="italic">t</mi>
</mrow>
<mo>)</mo>
</mrow>
<msup>
<mrow>
<mi mathvariant="italic">e</mi>
</mrow>
<mrow>
<mi mathvariant="italic">j</mi>
<mn>2</mn>
<mi>π</mi>
<msub>
<mrow>
<mi mathvariant="italic">f</mi>
</mrow>
<mrow>
<mi mathvariant="normal">c</mi>
</mrow>
</msub>
<mi mathvariant="italic">t</mi>
</mrow>
</msup>
</mrow>
<mo>}</mo>
</mrow>
<mo>=</mo>
<mi mathvariant="italic">i</mi>
<mrow>
<mo>(</mo>
<mrow>
<mi mathvariant="italic">t</mi>
</mrow>
<mo>)</mo>
</mrow>
<mi mathvariant="normal">cos2</mi>
<mtext></mtext>
<mi>π</mi>
<mtext></mtext>
<msub>
<mrow>
<mi mathvariant="italic">f</mi>
</mrow>
<mrow>
<mi mathvariant="italic">c</mi>
</mrow>
</msub>
<mi mathvariant="italic">t</mi>
<mo>+</mo>
<mi mathvariant="italic">q</mi>
<mrow>
<mo>(</mo>
<mrow>
<mi mathvariant="italic">t</mi>
</mrow>
<mo>)</mo>
</mrow>
<mi mathvariant="normal">sin2</mi>
<mtext></mtext>
<mi>π</mi>
<mtext></mtext>
<msub>
<mrow>
<mi mathvariant="italic">f</mi>
</mrow>
<mrow>
<mi mathvariant="italic">c</mi>
</mrow>
</msub>
<mi mathvariant="italic">t</mi>
</mrow>
</math>
.

En esta ecuación:

  • <math display="inline">
    <mrow>
    <msub>
    <mrow>
    <mi mathvariant="italic">f</mi>
    </mrow>
    <mrow>
    <mi mathvariant="normal">c</mi>
    </mrow>
    </msub>
    </mrow>
    </math>
    es la frecuencia portadora.

  • <math display="inline">
    <mrow>
    <mstyle mathvariant="normal">
    <mrow>
    <mi>R</mi>
    <mi>e</mi>
    </mrow>
    </mstyle>
    </mrow>
    </math>
    representa la parte real de una cantidad de valores complejos.

  • <math display="inline">
    <mrow>
    <mi mathvariant="italic">g</mi>
    <mrow>
    <mo>(</mo>
    <mrow>
    <mi mathvariant="italic">t</mi>
    </mrow>
    <mo>)</mo>
    </mrow>
    <mo>=</mo>
    <mi mathvariant="italic">i</mi>
    <mrow>
    <mo>(</mo>
    <mrow>
    <mi mathvariant="italic">t</mi>
    </mrow>
    <mo>)</mo>
    </mrow>
    <mo>+</mo>
    <mi mathvariant="italic">jq</mi>
    <mrow>
    <mo>(</mo>
    <mrow>
    <mi mathvariant="italic">t</mi>
    </mrow>
    <mo>)</mo>
    </mrow>
    </mrow>
    </math>
    es el complejo sobre de
    <math display="inline">
    <mrow>
    <mi mathvariant="italic">s</mi>
    <mrow>
    <mo>(</mo>
    <mrow>
    <mi mathvariant="italic">t</mi>
    </mrow>
    <mo>)</mo>
    </mrow>
    </mrow>
    </math>
    .

  • <math display="inline">
    <mrow>
    <mi mathvariant="italic">i</mi>
    <mrow>
    <mo>(</mo>
    <mrow>
    <mi mathvariant="italic">t</mi>
    </mrow>
    <mo>)</mo>
    </mrow>
    </mrow>
    </math>
    es el componente de la envolvente compleja.infase

  • <math display="inline">
    <mrow>
    <mi mathvariant="italic">q</mi>
    <mrow>
    <mo>(</mo>
    <mrow>
    <mi mathvariant="italic">t</mi>
    </mrow>
    <mo>)</mo>
    </mrow>
    </mrow>
    </math>
    es el componente de la envolvente compleja.Cuadratura

La envolvente compleja se modula a la frecuencia portadora y se envía a través del canal. En el receptor, la forma de onda ruidoso se demodula utilizando la frecuencia portadora.

La variación de fase debida a la frecuencia portadora es predecible y, por lo tanto, no transmite ninguna información. El sobre complejo no incluye la variación de fase y se puede muestrear a una velocidad más baja.

Generar una señal cuya envolvente compleja consiste en un sinusoides y un chirrido. El componente infásico es un sinusoides con una frecuencia de 19 Hz. El componente de cuadratura es un chirrido cuadrático cuya frecuencia oscila entre 61 Hz y 603 Hz. La señal se muestrea a 2 kHz durante 1 segundo.

fs = 2e3; t = (0:1/fs:1-1/fs)'; inph = sin(2*pi*19*t); quad = chirp(t-0.6,61,t(end),603,'quadratic');

Calcular el sobre complejo y almacenarlo como UN MATLAB® horario de la frecuencia de muestreo.fs

env = inph + 1j*quad; g = timetable(env,'SampleRate',fs);

Abra y arrastre el sobre complejo desde el explorador del espacio de trabajo a la tabla Signal.Analizador de señales La pantalla muestra los componentes infásicos y de cuadratura de la envolvente como líneas de la misma tonalidad y saturación, pero diferente luminosidad. El primer color de línea representa el componente infásico y el segundo color de línea representa el componente de cuadratura. Haga clic en la pestaña y seleccione .EspectroMonitorSpectrum La aplicación muestra un conjunto de ejes con el espectro de señal. La envolvente compleja tiene un espectro de dos lados, que se muestra como una línea del mismo color del componente infásico de la envolvente compleja.

En la pestaña, haga clic para activar el panoramizador.MonitorPanner Utilice el panoramizador para crear una ventana de zoom entre 300 ms y 720 ms. Arrastre la ventana de zoom para que se centre en 0 Hz. El espectro tiene un impulso a 0,19 kHz y un perfil de estrechamiento más amplio a frecuencias más altas. La región de frecuencia negativa del espectro es una imagen reflejada de la región de frecuencia positiva.

Modular la señal utilizando una frecuencia portadora de 200 Hz. Multiplicar por

<math display="inline">
<mrow>
<msqrt>
<mrow>
<mn>2</mn>
</mrow>
</msqrt>
</mrow>
</math>
de modo que la potencia de la señal modulada sea igual a la potencia de la señal original. Agregue el ruido gaussiano blanco de tal forma que la relación señal-ruido sea de 40 dB.

fc = 200; mod = sqrt(2)*real(env.*exp(2j*pi*fc*t));  SNR = 40; mod = mod + randn(size(mod))*std(mod)/db2mag(SNR); s = timetable(mod,'SampleRate',fs);

Haga clic en el botón para añadir una segunda pantalla.Cuadrícula de visualización Arrastre la señal modulada a la tabla Signal e introduzca la información de tiempo. La modulación ha movido el espectro a frecuencias positivas centradas en la frecuencia portadora.

Calcular la señal analítica y demodular la señal multiplicando la señal analítica con un exponencial negativo de valor complejo de la frecuencia 200 Hz.

dem = hilbert(mod).*exp(-2j*pi*fc*t)/sqrt(2);

Haga clic en el botón para crear una cuadrícula de pantallas de tres por uno.Cuadrícula de visualización Arrastre la señal demodulada a la tabla Signal. Agregue información de tiempo al sobre complejo haciendo clic en la pestaña.Valores de tiempoAnalizador El espectro de dos lados muestra los componentes infásicos y de cuadratura recuperados de la señal de banda base.

Haga clic en para crear una cuadrícula de pantallas uno por uno y trazar la señal demodulada.Cuadrícula de visualización Haga clic en el botón de selección y seleccione .Cursores de datosTwo Coloque los cursores de dominio de tiempo a 300 ms y 900 ms, para que encierren los picos espectrales. Haga clic en el botón de selección y seleccione .Extraer señalesBetween Time Cursors Marca la casilla.Conservar la hora de inicio Borre la pantalla y trace la señal extraída. La aplicación extrae componentes infáfilos y de cuadratura de la señal demodulada en la región de interés. Seleccione la señal extraída haciendo clic en su columna en la tabla Señal.Nombre En la pestaña, haga clic y guarde la señal en un archivo MAT llamado .Analizadorexportardem_ROI.mat

Cargue el archivo en el área de trabajo.dem_ROI Calcular los componentes infásicos y de cuadratura demodulados tomando las partes reales e imaginarias de la señal extraída. Almacene la información de tiempo de la señal extraída en una variable de tiempo.t_dem

load dem_ROI inph_dem = real(dem_ROI); quad_dem = imag(dem_ROI); t_dem = 0.3+(0:length(dem_ROI)-1)/fs;

Compare las formas de onda transmitidas y las regiones de interés extraídas. También compare sus espectros.

subplot(2,1,1) plot(t,inph,t_dem,inph_dem,'--') legend('Transmitted Inphase Signal','Received Inphase Signal')  subplot(2,1,2) plot(t,quad,t_dem,quad_dem,'--') legend('Transmitted Quadrature Signal','Received Quadrature Signal')

figure subplot(2,1,1) pspectrum(inph,fs) hold on pspectrum(inph_dem,fs) legend('Transmitted Inphase Signal','Received Inphase Signal') hold off  subplot(2,1,2) pspectrum(quad,fs) hold on pspectrum(quad_dem,fs) legend('Transmitted Quadrature Signal','Received Quadrature Signal') hold off

Cargue un archivo de datos que contenga un pulso de ecolocalización emitido por un gran murciélago marrón ( ) y medido con un intervalo de muestreo de 7 microsegundos.Eptesicus fuscus Cree un horario MATLAB® utilizando la señal y la información de tiempo.

load batsignal  t = (0:length(batsignal)-1)*DT; sg = timetable(seconds(t)',batsignal);

Abra y arrastre el horario desde el explorador del espacio de trabajo a la tabla Signal.Analizador de señales Haga clic en el botón para crear dos pantallas en paralelo.Cuadrícula de visualización Seleccione cada pantalla y haga clic en el botón para agregar una vista de espectrograma.Frecuencia de tiempo

Arrastre el horario a ambas pantallas.

Seleccione la pestaña.Espectrograma En la pantalla de la derecha, marque .Reasignar Para cada pantalla:

  • Establezca la resolución de tiempo en 280 microsegundos y especifique una superposición del 85% entre los segmentos adyacentes.

  • Utilice el control deslizante para aumentar la fuga hasta que el RBW sea de aproximadamente 4,5 kHz.Fuga

  • Establezca los límites de potencia en –45 dB y –20 dB.

El espectrograma reasignado muestra claramente tres crestas de frecuencia de tiempo. Para realizar un seguimiento de las crestas, seleccione la pantalla a la derecha. En la pestaña, haga clic y seleccione .MonitorGenerar scriptSpectrogram Script El script aparece en el Editor.

% Compute spectrogram  % Generated by MATLAB(R) 9.7 and Signal Processing Toolbox 8.2. % Generated on: 26-Dec-2018 17:21:44  % Parameters timeLimits = seconds([0 0.002793]); % seconds frequencyLimits = [0 71428.57]; % Hz leakage = 0.9; timeResolution = 0.00028; % seconds overlapPercent = 85; reassignFlag = true;  %% % Index into signal time region of interest sg_batsignal_ROI = sg(:,'batsignal'); sg_batsignal_ROI = sg_batsignal_ROI(timerange(timeLimits(1),timeLimits(2),'closed'),1);  % Compute spectral estimate % Run the function call below without output arguments to plot the results [P,F,T] = pspectrum(sg_batsignal_ROI, ...     'spectrogram', ...     'FrequencyLimits',frequencyLimits, ...     'Leakage',leakage, ...     'TimeResolution',timeResolution, ...     'OverlapPercent',overlapPercent, ...     'Reassign',reassignFlag);

Ejecute el script. Trazar el espectrograma reasignado.

mesh(seconds(T),F,P) xlabel('Time') ylabel('Frequency') axis tight view(2) colormap pink

Utilice la función para rastrear las crestas.tfridge

[fridge,~,lridge] = tfridge(P,F,0.01,'NumRidges',3,'NumFrequencyBins',10);  hold on plot3(seconds(T),fridge,P(lridge),':','linewidth',3) hold off

Gracias a Curtis Condon, Ken White y Al Feng del Beckman Center de la Universidad de Illinois por los datos de murciélagos y permiso para usarlos en este ejemplo.

Los sensores pueden devolver lecturas recortadas si los datos son mayores que un punto de saturación determinado. Para reconstruir las lecturas, puede ajustar un polinomio a través de los puntos adyacentes a los intervalos saturados. Escriba una función que realice la reconstrucción e intégrela en .Analizador de señales

Genere una señal de tres canales muestreada a 1 kHz durante 14 segundos. La señal tiene varios picos de diferentes tamaños y formas. Un sensor que lee la señal se satura a 0,1 V.

fs = 1000; t = 0:1/fs:14-1/fs;  sig = [chirp(t-1,0.1,17,2,'quadratic',1).*sin(2*pi*t/5);     chirp(t-2,2,2,2.1,'quadratic',100).*exp(-(t-6.5).^2/20).*sin(2*pi*t*2);     0.85*besselj(0,5*(sin(2*pi*(t+1.5).^2/20).^2)).*sin(2*pi*t/9)]';  sigsat = sig; stv = 0.1; sigsat(sigsat >= stv) = stv;

Abra y arrastre la señal original y la señal saturada a la tabla Signal.Analizador de señales Arrastre cada canal original y saturado a su propia pantalla.

Escriba una función que utilice un polinomio para reconstruir los picos de señal:

  • El primer argumento de entrada, , es la señal de entrada.x Este argumento debe ser un vector y se trata como un único canal.

  • El segundo argumento de entrada, , es un vector de valores de tiempo.tIn El vector debe tener la misma longitud que la señal. Si la señal de entrada no tiene información de tiempo, la función lee este argumento como una matriz vacía.

  • Se utiliza para especificar argumentos de entrada adicionales.varargin Si no tiene argumentos de entrada adicionales, puede omitir .varargin Escriba los argumentos adicionales como una lista ordenada separada por comas en la ficha.Preprocesar

  • El primer argumento de salida, , es la señal preprocesada.y

  • El segundo argumento de salida, , es un vector de valores de tiempo de salida.tOut Si la señal de entrada no tiene información de tiempo, se devuelve como una matriz vacía.tOut

  • Para implementar el algoritmo, puede utilizar cualquier función MATLAB® o Signal Processing Toolbox™.

function [y,tOut] = declip(x,tIn,varargin) % Declip saturated signal by fitting a polynomial      % Initialize the output signal      y = x;      % For signals with no time information, use sample numbers as abscissas          if isempty(tIn)         tOut = [];         t = (1:length(x))';     else         t = tIn;         tOut = t;     end          % Specify the degree of the polynomial as an optional input argument     % and provide a default value of 4          if nargin<3         ndx = 4;     else         ndx = varargin{1};     end      % To implement your algorithm, you can use any MATLAB or Signal     % Processing Toolbox function          % Find the intervals where the signal is saturated and generate an      % array containing the interval endpoints     idx = find(x==max(x));      fir = [true;diff(idx)~=1];     ide = [idx(fir) idx(fir([2:end 1]))];     % For each interval, fit a polynomial of degree ndx over the ndx+1 points     % before the interval and the ndx+1 points after the interval     for k = 1:size(ide,1)         bef = ide(k,1); aft = ide(k,2);         intv = [bef-1+(-ndx:0) aft+1+(0:ndx)];         [pp,~,mu] = polyfit(t(intv),x(intv),ndx);         y(bef:aft) = polyval(pp,t(bef:aft),[],mu);     end  end

Agregue la función como una función de preprocesamiento personalizada.Analizador de señales En la pestaña, haga clic en .AnalizadorPreprocesamientoAñadir función personalizada Introduzca el nombre y la descripción de la función. Pegue el texto de la función en la ventana del editor que aparece. Guarde el archivo. La función aparece en la galería de preprocesamiento.

Demostrar que la función que ha creado reconstruye las regiones saturadas.

  1. Seleccione el primer canal de la señal saturada en la tabla Señal.

  2. En la pestaña, haga clic en .AnalizadorPreprocesamientodeclip

  3. En la pestaña que aparece, haga clic en .PreprocesamientoPreprocesar

Compruebe que la función de preprocesamiento funciona cuando las señales tienen información de tiempo.

  1. Seleccione y en la tabla Señal.sigsigsat No seleccione canales individuales.

  2. En la pestaña, haga clic en , seleccione y especifique como la frecuencia de muestreo.AnalizadorValores de tiempoSample Rate and Start Timefs

  3. La señal en el panel superior, incluidas las regiones reconstruidas, tiene información de tiempo.

Compruebe que la función funciona al especificar entradas opcionales.

  1. Seleccione el segundo y el tercer canal de la señal saturada en la tabla Señal.

  2. En la pestaña, introduzca el campo y haga clic en .Preprocesamiento8ArgumentosPreprocesar La función de preprocesamiento utiliza un polinomio de grado 8 para reconstruir las regiones saturadas.

Se utiliza para calcular el espectro de envolvente de una señal de vibración del rodamiento y buscar defectos.Analizador de señales Genere scripts y funciones de MATLAB® para automatizar el análisis.

Generar datos de vibración de rodamientos

Un rodamiento con las dimensiones mostradas en la figura se

<math display="inline">
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">f</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
<mo>=</mo>
<mn>25</mn>
</mrow>
</math>
ciclos por segundo. Un acelerómetro toma muestras de las vibraciones del rodamiento a 10 kHz.

Genere señales de vibración a partir de dos rodamientos defectuosos utilizando la función al final del ejemplo.bearingdata En una de las señales, el rodamiento tiene un defecto en la carrera exterior.xBPFO En la otra señal, el rodamiento tiene un defecto en la carrera interna.xBPFI Para obtener más información sobre el modelado y el diagnóstico de defectos en los rodamientos, consulte y .Análisis de vibración de maquinaria rotativaenvspectrum

[t,xBPFO,xBPFI,bpfi] = bearingdata;

Espectro de sobres de computación mediante analizador de señal

Abra y arrastre la señal BPFO a una pantalla.Analizador de señales Agregue información de tiempo a la señal seleccionándola en la tabla Señal y haciendo clic en el botón de la pestaña.Valores de tiempoAnalizador Seleccione la opción e introduzca la frecuencia de muestreo de 10 kHz.Sample Rate and Start Time

En la pestaña, haga clic para abrir una vista de espectro.MonitorEspectro El espectro de la señal de vibración muestra armónicos BPFO modulados por la frecuencia de impacto de 3 kHz. En el extremo bajo del espectro, la frecuencia de conducción y sus órdenes oscurecen otras características.

Seleccione la señal y, en la pestaña, haga clic para generar una copia de la misma.AnalizadorDuplicado Asigne a la nueva señal el nombre y arrástrela a la pantalla.envspec Calcular el espectro de envolvente de la señal utilizando la transformación Hilbert:

  1. Quite el valor de CC de la señal. En la pestaña, haga clic en .AnalizadorPreprocesamiento Detrend En la pestaña que aparece, seleccione como método.DetrendConstant Haga clic.Detrend

  2. Filtro de paso de banda de la señal detendencia. En la pestaña, haga clic en .AnalizadorPreprocesamiento Bandpass En la pestaña que aparece, introduzca 2250 Hz y 3750 Hz como frecuencias de banda de paso inferior y superior, respectivamente.Bandpass Haga clic.Bandpass

  3. Calcular la envolvente de la señal filtrada. En la pestaña, haga clic en .AnalizadorPreprocesamiento Sobre En la pestaña que aparece, seleccione como método.SobreHilbert Haga clic.Sobre

  4. Quite el valor DC del sobre utilizando .Detrend

El espectro de envolvente aparece en la vista de espectro de la pantalla. El espectro de envolventemuestra claramente los armónicos BPFO.

Pasos para crear un script de análisis integrado

El cálculo del espectro de envolvente puede ser tedioso si tiene que repetirse para muchos rodamientos diferentes. puede generar scripts y funciones de MATLAB® para ayudarle a automatizar el cálculo.Analizador de señales

Como ejercicio, repita el análisis anterior para la señal BPFI. genera dos componentes útiles para la automatización:Analizador de señales

  1. Una función que preprocesa la señal desabozando, filtrándola y calculando su envolvente

  2. Un script que calcula el espectro de sobres

Para crear el script de análisis integrado, coloque la función de preprocesamiento y el script de trazado sin cambios en un solo archivo. (Alternativamente, puede guardar funciones en archivos separados.)

  • Si guarda el script y la función en un único script MATLAB®, tenga en cuenta que las funciones deben aparecer al final.

  • Debe agregar la palabra clave al final de cada función.end

1. Crear función de preprocesamiento

Inicialmente, cree la función que reproduce los pasos de preprocesamiento. Seleccione la señal.envspec En la pestaña, haga clic en .AnalizadorGenerar función La función, a la que se llama de forma predeterminada, aparece en el Editor.preprocess Guarde la función generada al final del script de análisis integrado. La función espera un segundo argumento que especifique la información de tiempo. Preprocesar la señal BPFI utilizando la función.

envspec = preprocess(xBPFI,t);

2. Crear script de espectro

En la aplicación, quite la señal sin procesar de la pantalla desactivando la casilla de verificación situada junto a su nombre. En la pestaña, haga clic en .MonitorGenerar script Spectrum Script El script aparece en el Editor. Incluya el código generado en el script de análisis integrado. Cuando se ejecuta el script de análisis, el script de espectro generado calcula el espectro de envolvente de la señal BPFI preprocesada.

% Compute power spectrum  % Generated by MATLAB(R) 9.6 and Signal Processing Toolbox 8.2. % Generated on: 12-Nov-2018 15:13:34  % Parameters timeLimits = [0 0.9999]; % seconds frequencyLimits = [0 5000]; % Hz  %% % Index into signal time region of interest envspec_ROI = envspec(:); sampleRate = 10000; % Hz startTime = 0; % seconds minIdx = ceil(max((timeLimits(1)-startTime)*sampleRate,0))+1; maxIdx = floor(min((timeLimits(2)-startTime)*sampleRate,length(envspec_ROI)-1))+1; envspec_ROI = envspec_ROI(minIdx:maxIdx);  % Compute spectral estimate % Run the function call below without output arguments to plot the results [Penvspec_ROI, Fenvspec_ROI] = pspectrum(envspec_ROI,sampleRate, ...     'FrequencyLimits',frequencyLimits);

3. Espectro de envolvente de la gráfica

Trazar el espectro de envolventes. Compare las ubicaciones de pico con las frecuencias de los primeros diez armónicos BPFI. También puede trazar el espectro de envolventes utilizando el comando sin argumentos de salida.pspectrum

plot(Fenvspec_ROI,(Penvspec_ROI)) hold on [X,Y] = meshgrid((1:10)*bpfi,ylim); plot(X,Y,':k') hold off xlim([0 10*bpfi])

Código de función

Función de preprocesamiento de señal

La función de preprocesamiento de señal generada por la aplicación combina detrending, filtrado de paso de banda y cálculo de envolvente.

function y = preprocess(x,tx) %  Preprocess input x %    This function expects an input vector x and a vector of time values %    tx. tx is a numeric vector in units of seconds.  % Generated by MATLAB(R) 9.6 and Signal Processing Toolbox 8.2. % Generated on: 12-Nov-2018 15:09:44  y = detrend(x,'constant'); Fs = 1/mean(diff(tx)); % Average sample rate y = bandpass(y,[2250 3750],Fs,'Steepness',0.85,'StopbandAttenuation',60); [y,~] = envelope(y); y = detrend(y,'constant'); end

Función de generación de datos de rodamientos

El rodamiento tiene diámetro de paso

<math display="inline">
<mrow>
<mi mathvariant="italic">p</mi>
<mo>=</mo>
<mn>12</mn>
</mrow>
</math>
cm y un ángulo de contacto del rodamiento
<math display="inline">
<mrow>
<mi>θ</mi>
<mo>=</mo>
<mn>0</mn>
</mrow>
</math>
. Cada uno de los
<math display="inline">
<mrow>
<mi mathvariant="italic">n</mi>
<mo>=</mo>
<mn>8</mn>
</mrow>
</math>
elementos rodantes tiene un diámetro
<math display="inline">
<mrow>
<mi mathvariant="italic">d</mi>
<mo>=</mo>
<mn>2</mn>
</mrow>
</math>
Cm. La carrera exterior permanece estacionaria a medida que la carrera interna
<math display="inline">
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">f</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
<mo>=</mo>
<mn>25</mn>
</mrow>
</math>
ciclos por segundo. Un acelerómetro toma muestras de las vibraciones del rodamiento a 10 kHz.

function [t,xBPFO,xBPFI,bpfi] = bearingdata  p = 0.12; d = 0.02; n = 8; th = 0; f0 = 25; fs = 10000;

Para un rodamiento sano, la señal de vibración es una superposición de varias órdenes de la frecuencia de conducción, incrustada en ruido gaussiano blanco.

t = 0:1/fs:1-1/fs; z = [1 0.5 0.2 0.1 0.05]*sin(2*pi*f0*[1 2 3 4 5]'.*t);  xHealthy = z + randn(size(z))/10;

Un defecto en la carrera exterior causa una serie de impactos de 5 milisegundos que con el tiempo dan lugar al desgaste del rodamiento. Los impactos se producen en la carrera exterior de frecuencia de paso de bola (BPFO) del rodamiento,

<math display="inline">
<mrow>
<mi mathvariant="normal">BPFO</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mn>1</mn>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</mfrac>
<msub>
<mrow>
<mi mathvariant="italic">nf</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
<mrow>
<mo>[</mo>
<mrow>
<mn>1</mn>
<mo>-</mo>
<mfrac>
<mrow>
<mi mathvariant="italic">d</mi>
</mrow>
<mrow>
<mi mathvariant="italic">p</mi>
</mrow>
</mfrac>
<mi mathvariant="normal">cos</mi>
<mtext></mtext>
<mi>θ</mi>
</mrow>
<mo>]</mo>
</mrow>
</mrow>
</math>
.

Modele los impactos como un tren periódico de 3 kHz de sinusoides amortiguados exponencialmente. Agregue los impactos a la señal sana para generar la señal de vibración BPFO.

bpfo = n*f0/2*(1-d/p*cos(th));  tmp = 0:1/fs:5e-3-1/fs; xmp = sin(2*pi*3000*tmp).*exp(-1000*tmp);  xBPFO = xHealthy + pulstran(t,0:1/bpfo:1,xmp,fs)/4;

Si el defecto está en su lugar en la carrera interna, los impactos se producen a una frecuencia

<math display="inline">
<mrow>
<mi mathvariant="normal">BPFI</mi>
<mo>=</mo>
<mfrac>
<mrow>
<mn>1</mn>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</mfrac>
<msub>
<mrow>
<mi mathvariant="italic">nf</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
<mrow>
<mo>[</mo>
<mrow>
<mn>1</mn>
<mo>+</mo>
<mfrac>
<mrow>
<mi mathvariant="italic">d</mi>
</mrow>
<mrow>
<mi mathvariant="italic">p</mi>
</mrow>
</mfrac>
<mi mathvariant="normal">cos</mi>
<mtext></mtext>
<mi>θ</mi>
</mrow>
<mo>]</mo>
</mrow>
</mrow>
</math>
.

Genere la señal de vibración BPFI añadiendo los impactos a las señales saludables.

bpfi = n*f0/2*(1+d/p*cos(th));  xBPFI = xHealthy + pulstran(t,0:1/bpfi:1,xmp,fs)/4;  end

Ejemplos relacionados

Uso programático

expandir todo

signalAnalyzer abre la aplicación.Analizador de señales

signalAnalyzer(sig) abre la aplicación e importa y traza la señal .Analizador de señalessig Si la aplicación ya está abierta, se traza en la pantalla actual.sig Si ya está trazado pero ha cambiado, la llamada de función actualiza el trazado.sig

puede ser una variable en el espacio de trabajo o una expresión. puede ser:sigMATLABsig

  • Un vector o una matriz con señales independientes en cada columna.

  • A con valores de tiempo especificados como duraciones.timetable

  • Un objeto.timeseries

Consulte para obtener más detalles.Tipos de datos admitidos por Signal Analyzer

De forma predeterminada, la aplicación traza la señal como una función del índice de ejemplo. Si proporciona información de tiempo, o si la señal tiene información de tiempo inherente, entonces la aplicación traza la señal como una función de tiempo.

signalAnalyzer(sig1,...,sigN) importa vectores de señal o matrices y los traza en la pantalla actual.N La aplicación no admite la importación de señales con información de tiempo inherente y señales sin información de tiempo inherente en la misma llamada de función.

signalAnalyzer(___,'SampleRate',fs) especifica una frecuencia de muestreo, como un escalar positivo expresado en Hz.fs La aplicación utiliza la frecuencia de muestreo para trazar una o más señales contra el tiempo, suponiendo una hora de inicio de cero. Puede especificar una frecuencia de muestreo para señales sin información de tiempo inherente.

signalAnalyzer(___,'SampleTime',ts) especifica un tiempo de muestra, como un escalar positivo expresado en segundos.ts La aplicación utiliza el tiempo de muestra para trazar una o más señales contra el tiempo, suponiendo una hora de inicio de cero. Puede especificar un tiempo de muestreo para las señales sin información de tiempo inherente.

signalAnalyzer(___,'StartTime',st) especifica una hora de inicio de la señal, como un escalar expresado en segundos.st Si no especifica una frecuencia de muestreo o un tiempo de muestreo, la aplicación asume una frecuencia de muestreo de 1 Hz. Puede especificar una hora de inicio para las señales sin información de hora inherente.

signalAnalyzer(___,'TimeValues',tv) especifica un vector, , con valores de tiempo correspondientes a los puntos de datos. puede ser un vector numérico real con valores expresados en segundos. también puede ser una matriz.tvtvtvduration Los valores en deben ser únicos y no pueden ser , pero no necesitan estar espaciados uniformemente.tvNaN Todas las señales de entrada deben tener la misma longitud que .tv Puede especificar un vector de valores de tiempo para señales sin información de tiempo inherente.

El filtrado y la vista de scalogram no admiten señales muestreadas de forma no uniforme.

Introducido en R2016a