2014-06-27 4 views
0

J'ai un signal sinusoïdal bruyant dont je veux extraire la fréquence fondamentale du sinus. Que devrais-je utiliser?Comment détecter la fréquence fondamentale dans un signal en utilisant des ondelettes?

Le signal est dans le domaine temporel discret avec une fréquence d'échantillonnage connue. En fait, j'essaie de corroborer la réponse obtenue par une analyse FFT, donc je ne peux pas utiliser une FFT.

+0

Votre question est incomplète. Quel domaine, temps continu ou discret? Dans un cas comme dans l'autre, votre objectif est-il d'obtenir la meilleure estimation ou d'utiliser les ondelettes indépendamment de la qualité des résultats? Par exemple, un devoir pb. Sans plus de détails, la transformée de Fourier est tout ce dont vous avez besoin. – JayInNyc

+0

Question éditée. – Roy2511

+0

L'échelle d'ondelettes qui correspond le mieux à l'onde sinusoïdale sous-jacente aura la projection maximale. De plus, l'amplitude de projection (enveloppe) sera indépendante de la translation. Donc, cherchez l'amplitude de projection maximale qui est aussi la moins affectée par la translation (la translation sera périodique, mais l'enveloppe min/max sera constante). – JayInNyc

Répondre

0

Voici un code du code R qui implémente la transformation continue en ondelettes sur certains signaux (en utilisant le package biwavelet).

Le signal est composé d'une onde sinusoïdale de fréquence 40 Hz et de bruit aléatoire. Le résultat est un spectre montrant que la fréquence 40 Hz domine dans tout le signal.

signal.len <- 1024 # input param. 
sin.freq <- 40 # input param. 

# noise + 40 Hz sine wave 
signal <- rnorm(signal.len) + sin(sin.freq*2*pi/signal.len * 1:signal.len) 

library(biwavelet) 
w <- wt(cbind(index(signal), signal)) # continuous wavelet transform 

# rendering the results 
par(mfrow=c(2,1)) 
plot.default(signal, type = "l", xaxs = "i") # the signal 
plot.biwavelet(w, useRaster = TRUE)   # spectrum of the signal 

enter image description here

Questions connexes