Bonjour tout le monde,
J'ai reçu un TP de Matlab à faire et je bloque sur un point :
On me demande de calculer la puissance d'un signal échantillonné non-périodique. On nous a fournit la formule suivante :
Pour pouvoir faire des essais j'ai pris 1ms comme fenêtre temporelle afin d'avoir un signal quasi-stationnaire durant cette période, ce qui donne :La puissance d'un signal échantillonné x(n) est estimée en chaque instant nTe par :
P(n) = (1/(2*K+1)) * SOMME(x(k)^2, k=n-K, n+K)
Avec (2K+1)*Te la durée de la fenêtre temporelle pour l'estimation.
K=(1*10^(-3)-Te)/(2*Te) avec Te = 1/44100.
Mon problème, c'est que je ne vois pas comment utiliser la fonction sum() pour pouvoir lui donner l'intervalle demandé.
Je vous fournis mon code :
Auriez-vous des idées ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 [y, Fs] = audioread('bonjour.wav'); Ts = 1/Fs; K = ((1*10.^(-3)-Ts)/Ts); puissanceStereo = (1/(2*K+1))*sum((y.^2)); puissanceMono = (puissanceStereo(1) + puissanceStereo(2))/2; disp(puissanceStereo); disp(puissanceMono);
Merci d'avance,
NB : Je précise que je sais que l'on peut utiliser la fonction sum() avec des dimensions en paramètres, mais quand j'ai tenté de mettre n+K et n-K en paramètres, il est marqué qu'il faut que ce soit des valeurs entières.
Partager