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.

Señales saturadas de declip usando su propia función

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.

Consulte también

Aplicaciones

Funciones

Ejemplos relacionados

Más acerca de