El 07/06/2005, a las 1:30, lolo_mk1 escribi
> Hi
>
> I've been having some problems with the fft() function in matlab. I
> ran a simple test...
>
> x = 0:1/460800:0.1; % sample rate = 460800 Hz
> fx = sin(2*pi*30000*x); % sine wave @ 30000 Hz
>
> Y = fft(fx, 4096); % take first 4096 samples and fft
> Pyy = Y.*conj(Y); % power spectrum
> logPyy = 10*logPyy; % convert to dB
>
> f = 460800*(0:2048)/4096; % create x-axis scale
> plot(f, logPyy(1:2049)); % plot...
> There may be errors in the script but I wrote it off the top of my
> head and I'm pretty sure the idea is right (I don't have matlab
on
> the computer I'm writing the email from)...
>
> The resulting plot does have a peak at 30000 Hz at around +30 dB but
> on each side of the peak is a hyperbolic shape with an asymptote at
> around -40 dB. I thought that with a perfect sine wave the spike
> should be sharper, perhaps reaching -100 dB (or more) and achieving
> this quickly (for example if the fundamental frequency is 30000 Hz,
> by 50000 Hz I would be expecting at least -100dB).
>
> Does anyone know why it is doing this? Can it be fixed or is it
> unavoidable when using a fft ?
Just by using logPyy = 10*log(Pyy) I get > 140dB peaks...
--
Juan de Dios Santander Vela
Diplomado en CC. Ficas, Ingeniero en Electrica
Doctorando en Tecnologs Multimedia
Becario Predoctoral del Instituto de Astrofica de Andaluc
Wilfred Funk: Cuantas m palabras conozcas, m clara y
poderosamente pensar... y m ideas invitar a tu mente.