Para obtener la envolvente de una señal con Matlab, he podido ver diferentes métodos por internet.
Probando unos y otros, unos basados en la transforamda Hilbert, pero he probado uno que me ha aconsejado un amigo mío, y es el que me da más flexibilidad, en cuanto a decidir la caída de la señal.
Se trata de filtrar la señal con un filtro todo 1, con lo que obtendremos la energía de la señal, para obtener la envolvente.
El código es el siguiente, suponiendo que la señal a buscar la envolvente es yt. Dependiendo de la longitud del filtro (filter_length) la caída de la envolvente será mayor o menor.
_________________________________________________________________________________
ytabs=abs(yt);
ytac=ytabs.^2;
filter_length = 80;
a=zeros(1,filter_length);
b=ones(1,filter_length);
b=ones(1,filter_length);
a(1)=1;
envelope=filter(b,a,ytac);
___________________________________________________________________________________
To obtain envelope of a signal, we can filter with all one filter, and we will obtain the energy of the signal and the envelope.
The code is here, if the signal is yt. Depending the length of the filter (filter_length) the fall of the envelope will be higher or lower.
_________________________________________________________________________________
ytabs=abs(yt);
ytac=ytabs.^2;
filter_length = 80;
a=zeros(1,filter_length);
b=ones(1,filter_length);
b=ones(1,filter_length);
a(1)=1;
envelope=filter(b,a,ytac);
___________________________________________________________________________________
Waiting your comments!