MATLAB calcula la tasa de cruce por cero de una señal

1. Principios básicos

Debido a la presencia de fluctuaciones de bajo voltaje o ruido de fondo, aumentará el número de veces que la amplitud de la señal excede el nivel de amplitud cero.

Para evitar la influencia de la fluctuación de bajo voltaje o el ruido de fondo, la amplitud de la señal implementa la condición de umbral y se obtiene la siguiente fórmula.

La fórmula para calcular la tasa de cruce por cero es la siguiente:
Inserte la descripción de la imagen aquí

2.código MATLAB

function count = zero_crossings(x,thr)
% x是时域信号,必须是1位的行向量或者列向量;
% thr是设定的阈值
% count是该函数计算信号x过零率的值
 
% initial value
count = 0;
 
% error checks
if(length(x) == 1)
    error('ERROR: input signal must have more than one element');
end
 
if((size(x, 2) ~= 1) && (size(x, 1) ~= 1))
    error('ERROR: Input must be one-dimensional');
end
    
% force signal to be a vector oriented in the same direction
x = x(:);
 
num_samples = length(x);
for i=2:num_samples
    % Any time you multiply to adjacent values that have a sign difference
    % the result will always be negative.  When the signs are identical,
    % the product will always be positive.
    if(((x(i)*x(i-1)) < 0)&&(abs(x(i)-x(i-1))>thr))
        count = count + 1;
    end 
end

referencias

[1] Función de reducción y selección para la clasificación de señales EMG.
[2] matlab calcula la tasa de cruce por cero

Si cree que este blog es lo que necesita, mueva el dedo y haga clic en Me gusta, gracias por su aliento; si está interesado en el blog que escribí, puede visitar mi página de inicio con frecuencia y esperar su atención.

Supongo que te gusta

Origin blog.csdn.net/weixin_45317919/article/details/109326420
Recomendado
Clasificación