FFT on a segment of a signal

7 vues (au cours des 30 derniers jours)
tanlc
tanlc le 5 Fév 2011
hi, i am trying to analyse a signal in a .wav file by performing FFT on the signal. however i only want to perform the FFT on a particular segment of the signal at the range around the maximum point of the signal. have tried google-ing around for help on the code to segment out the signal but cant seem to work. can anyone guide mi on this?
  1 commentaire
Andreas Goser
Andreas Goser le 5 Fév 2011
There are 2 aspects of your code - findinf a maximum and the doing the fft. Without an example, it is difficult to say what fails.

Connectez-vous pour commenter.

Réponse acceptée

José Goulart
José Goulart le 5 Fév 2011
Function findpeaks() finds all the local maxima on your data. After that you would have to find the largest of the points returned.
In this case, if you just want to take the neighbourhood around the maximum point of the data, it is simpler to use max() function.
First note that, as your data is an audio signal, you should call it passing absolute values of your data as argument in order to consider both positive and negative peaks.
Here is the code:
>> abdata = abs(DataArray);
>> [mx,pmx] = max(DataArray);
>> N = 1024; %for instance
>> dataToFFT = DataArray(pmx-N:pmx+N-1);
After that, just compute the FFT normally.
  1 commentaire
tanlc
tanlc le 5 Fév 2011
oic. thnx!

Connectez-vous pour commenter.

Plus de réponses (1)

tanlc
tanlc le 5 Fév 2011
the following are the codes for performing FFT.
L = length(DataArray);
NFFT = 2^nextpow2(L);
FrameLength_2 = NFFT/2 ;
f = Fs/2*linspace(0,1,FrameLength_2/2+1);
Y = abs(fft(DataArray));
for the part to find the maximum, i have tried using the function findpeaks(), realmax but none seems to work.
correct me if i am wrong, how i plan to approach this is that 1. find the maximum point in the signal 2. from the maximum point, take +/- N numbers of samples to perform FFT

Catégories

En savoir plus sur Fourier Analysis and Filtering dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by