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ñal

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ñal Con la aplicación, puede:

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

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

  • Añada y aplique funciones de preprocesamiento personalizadas

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

  • Etiquetar señales 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ñal

Para obtener más información, consulte .El uso de Signal Analyzer App

Necesita una licencia para usar la vista de scalograma.Wavelet Toolbox™

Abrir la aplicación Analizador de señal

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

  • línea de comandos:MATLAB Entrar.signalAnalyzer

Ejemplos

expandir todo

Implementar un sintetizador de música digital básica y utilizarlo 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 calendario 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 navegador del espacio de trabajo a la tabla Signal.Analizador de señal Haga clic en ▼ para crear una cuadrícula de dos por dos de pantallas.Display Grid Seleccione las dos pantallas superiores y la pantalla inferior izquierda y haga clic en el botón para agregar una vista de espectro.Spectrum Seleccione la pantalla inferior derecha, haga clic para agregar una vista de espectrograma y haga clic para eliminar la vista de tiempo.Time-FrequencyTime Arrastra la canción a las cuatro pantallas. Seleccione la pantalla inferior derecha y, en la ficha, especifique una resolución de tiempo de 0,31 segundos (310 MS) y una superposición del 0% entre los segmentos adyacentes.Spectrogram Establezca laPower Limits

<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.AnalyzerDuplicate Cambie el nombre de las copias como, y haciendo doble clic en la columna en la tabla Signal.highmediumlowName Mueva las copias a las dos pantallas superiores e inferiores de la izquierda.

Preprocese las señales duplicadas utilizando filtros.

  1. Seleccione la señal haciendo clic en su nombre en la tabla Signal.high En la pestaña, haga clic en.AnalyzerHighpass En la pestaña que aparece, ingrese una frecuencia de banda de paso de 450 Hz y aumente la inclinación a 0,95.Highpass Haga clic.Highpass

  2. Seleccione la señal haciendo clic en su nombre en la tabla Signal.medium En la ficha, haga clic en ▼ y seleccione.AnalyzerPreprocessing Bandpass En la pestaña que aparece, introduzca 230 Hz y 450 Hz como las frecuencias de banda de paso inferior y superior, respectivamente.Bandpass Aumente la inclinación a 0,95. Haga clic.Bandpass

  3. Seleccione la señal haciendo clic en su nombre en la tabla Signal.low En la pestaña, haga clic en.AnalyzerLowpass En la pestaña que aparece, ingrese una frecuencia de banda de paso de 230 Hz y aumente la inclinación a 0,95.Lowpass Haga clic.Lowpass

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

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

  2. En la pestaña, haga clic para agregar una vista de espectrograma y haga clic para quitar la vista de tiempo.DisplayTime-FrequencyTime

  3. En la ficha, especifique una resolución de tiempo de 0,31 segundos y un 0% de superposición entre los segmentos adyacentes.Spectrogram Establezca laPower Limits

    <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 Signal.Name En la pestaña, haga clic y guarde las señales en un archivo MAT llamado.AnalyzerExportmusic.mat En MATLAB, cargue el archivo en el espacio de trabajo. Trazar 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.Var1,fs), pause(5), sound(medium.Var1,fs), pause(5), sound(high.Var1,fs)

Cargue un archivo que contenga datos de audio de una ballena azul del Pacífico, muestreado a 4 kHz. El archivo es de la biblioteca de vocalizaciones de animales mantenidas por el programa de investigación bioacústica de la Universidad de Cornell. La escala de tiempo en los datos se comprime por un factor de 10 para elevar el tono y hacer que las llamadas sean más audibles. Convierta la señal a un horario de MATLAB®.

whaleFile = fullfile(matlabroot,'examples','matlab','bluewhale.au'); [w,fs] = audioread(whaleFile);  whale = timetable(seconds((0:length(w)-1)'/fs),w);  % To hear, type soundsc(w,fs)

Abra y arrastre el horario a una pantalla.Analizador de señal Cuatro características destacan por el ruido. El primero se conoce como a, y los otros tres se conocen como.trillmoans

En la pestaña, haga clic para abrir una vista de espectro y haga clic para activar el Panoramizador.DisplaySpectrumPanner Utilice el Panoramizador para crear una ventana de zoom con un ancho de aproximadamente 2 segundos. Arrastre la ventana de zoom para que se Centre en el trill. El espectro muestra un pico notable en torno a 900 Hz.

Extraiga los tres gemidos para comparar sus espectros:

  1. Centrar la ventana de zoom de Panoramizador en el primer gemer. El espectro tiene ocho picos claramente definidos, situados muy cerca de múltiplos de 170 Hz. Haga clic en ▼ y seleccione.Extract SignalsBetween Time Limits

  2. Haga clic para ocultar el Panoramizador.Panner Pulse la barra espaciadora para ver la señal completa. Haga clic y acerque un intervalo de 2 segundos de la vista de tiempo centrada en el segundo gemán.Zoom in X El espectro de nuevo tiene picos en múltiplos de 170 Hz. Haga clic en ▼ y seleccione.Extract SignalsBetween Time Limits

  3. Pulse la barra espaciadora para ver la señal completa. Haga clic en ▼ y seleccione.Data CursorsTwo Coloque los cursores de dominio de tiempo en un intervalo de 2 segundos alrededor del tercer gemán. Una vez más, hay picos en múltiplos de 170 Hz. Haga clic en ▼ y seleccione.Extract SignalsBetween Time Cursors

Quite la señal original de la pantalla desactivando la casilla de verificación junto a su nombre en la tabla Signal. Muestre las tres regiones de interés que acaba de extraer. Sus espectros están aproximadamente uno encima del otro. Mueva los cursores de dominio de frecuencia a las ubicaciones de los picos espectrales primero y tercero. Los asteriscos en las etiquetas de cursor indican valores de señal interpolados.

Cargue un archivo de datos que contenga un pulso de elocalización emitido por un murciélago marrón grande () y medido con un intervalo de muestreo de 7 microsegundos.Eptesicus fuscus Cree un calendario de 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 navegador del espacio de trabajo a la tabla Signal.Analizador de señal Haga clic en ▼ para crear dos pantallas en paralelo.Display Grid Seleccione cada pantalla y haga clic en el botón para añadir una vista de espectrograma.Time-Frequency

Arrastre el horario a ambas pantallas.

Seleccione la pestaña.Spectrogram En la pantalla de la derecha, compruebe.Reassign Para cada pantalla:

  • Establezca la resolución de tiempo en 280 microsegundos y especifique la 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

  • Fije los límites de potencia a – 45 dB y – 20 dB.

El espectrograma reasignado muestra claramente tres crestas de frecuencia de tiempo. Para rastrear las crestas, seleccione la pantalla a la derecha. En la pestaña, haga clic y seleccione.DisplayGenerate 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. Trace 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 en la Universidad de Illinois por los datos de murciélago y permiso para utilizarlo en este ejemplo.

Los sensores pueden devolver lecturas recortadas si los datos son más grandes que un punto de saturación dado. Para reconstruir las lecturas, puede ajustar un polinomio a través de los puntos adyacentes a los intervalos saturados. Escribir una función que realice la reconstrucción e integrarla en.Analizador de señal

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 ssatura 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ñal Arrastre cada canal original y saturado a su propia pantalla.

Escriba una función que utilice un polinomio para reconstruir los picos de la 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 usa 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 pestaña.Preprocess

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

Añada la función como una función de preprocesamiento personalizada.Analizador de señal En la ficha, haga clic en ▼ y seleccione.AnalyzerPreprocessingAdd Custom Function 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.

Demuestre que la función que creó reconstruye las regiones saturadas.

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

  2. En la ficha, haga clic en ▼ y seleccione.AnalyzerPreprocessingdeclip

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

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 ficha, haga clic, seleccione y especifique como la frecuencia de muestreo.AnalyzerTime ValuesSample Rate and Start Timefs

  3. La señal en el panel superior, incluyendo 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 Signal.

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

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

Generar datos de vibración de rodamiento

Un rodamiento con las dimensiones mostradas en la figura se impulsa en

<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 muestrea 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 interior.xBPFI Para obtener más detalles sobre el modelado y el diagnóstico de defectos en rodamientos, vea y.Análisis de vibraciones de maquinaria giratoriaenvspectrum

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

Calcule el espectro envolvente utilizando el analizador de señal

Abra y arrastre la señal BPFO a una pantalla.Analizador de señal Agregue información de tiempo a la señal seleccionándola en la tabla Signal y haciendo clic en el botón de la pestaña.Time ValuesAnalyzer 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.DisplaySpectrum 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 más 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.AnalyzerDuplicate Asigne el nombre a la nueva señal y arrástrelo a la pantalla.envspec Calcule el espectro de envolvente de la señal utilizando la transformada de Hilbert:

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

  2. Paso de banda-filtre la señal de detrended. En la ficha, haga clic en ▼ y seleccione.AnalyzerPreprocessing Bandpass En la pestaña que aparece, introduzca 2250 Hz y 3750 Hz como las frecuencias de banda de paso inferior y superior, respectivamente.Bandpass Haga clic.Bandpass

  3. Calcule el sobre de la señal filtrada. En la ficha, haga clic en ▼ y seleccione.AnalyzerPreprocessing Envelope En la pestaña que aparece, seleccione como método.EnvelopeHilbert Haga clic.Envelope

  4. Quite el valor de CC del sobre utilizando.Detrend

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

Pasos para crear un script de análisis integrado

El cómputo del espectro envolvente puede resultar tedioso si tiene que repetirse para muchos rodamientos diferentes. puede generar scripts y funciones de MATLAB® para ayudarle a automatizar el cómputo.Analizador de señal

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

  1. Una función que preprocesa la señal al restarlo, filtrarla y computar su sobre

  2. Un script que calcula el espectro envolvente

Para crear el script de análisis integrado, coloque la función de preprocesamiento y el script de trazado juntos 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 de MATLAB®, tenga en cuenta que las funciones deben aparecer al final.

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

1. Create Preprocessing Function

Inicialmente, cree la función que reproduce los pasos de preprocesamiento. Seleccione la señal.envspec En la pestaña, haga clic en.AnalyzerGenerate Function La función, llamada de forma predeterminada, aparece en el editor.preprocess Guarde la función generada al final de su script de análisis integrado. La función espera un segundo argumento especificando la información de tiempo. Preprocese la señal BPFI utilizando la función.

envspec = preprocess(xBPFI,t);

2. Create Spectrum Script

En la aplicación, quite la señal sin procesar de la pantalla desactivando la casilla de verificación junto a su nombre. En la ficha, haga clic en ▼ y seleccione.DisplayGenerate Script Spectrum Script El script aparece en el editor. Incluya el código generado en el script de análisis integrado. Al ejecutar el script de análisis, el script de espectro generado computa el espectro 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. Plot Envelope Spectrum

Trace el espectro de sobres. Compare las ubicaciones máximas con las frecuencias de los diez primeros armónicos BPFI. También puede trazar el espectro de envolvente mediante 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

Signal Preprocessing Function

La función de preprocesamiento de señal generada por la aplicación combina la detrterminación, el filtrado de paso de banda y el 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

Bearing Data Generating Function

El rodamiento tiene un 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 raza exterior permanece estacionaria ya que la carrera interior es conducida en
<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 muestrea 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 saludable, la señal de vibración es una superposición de varias órdenes de la frecuencia de conducción, incrustada en el 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 raza externa causa una serie de 5 milisegundos impactos que con el tiempo resultan en desgaste del rodamiento. Los impactos ocurren 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 con amortiguación exponencial. Añada 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 es en cambio en la carrera interna, los impactos ocurren en 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 sanas.

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ñal

signalAnalyzer(sig) abre la aplicación e importa y traza la señal.Analizador de señalsig Si la aplicación ya está abierta, se traza en la pantalla actual.sig Si ya se ha trazado pero ha cambiado, la llamada a la 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

Vea para más detalles.Tipos de datos admitidos por el analizador de señal

De forma predeterminada, la aplicación traza la señal como una función del índice de la muestra. Si proporciona información de tiempo, o si la señal tiene información de tiempo inherente, 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 las 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 muestra 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 muestra, 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 tiempo 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 espaciarse uniformemente.tvNaN Todas las señales de entrada deben tener la misma longitud que.tv Puede especificar un vector de valores de tiempo para las señales sin información de tiempo inherente.

La vista de filtrado y scalograma no admite señales muestreadas de manera no uniforme.

Introducido en R2016a