2013-09-30 16 views
0

Dites que j'ai effectué FFT sur un ensemble de données et j'ai les valeurs de fréquence et d'amplitude. Je veux trouver l'amplitude la plus élevée dans chaque bloc FFT. Je dois trouver la fréquence et l'amplitude des points qui sont au moins 0,4 fois l'amplitude maximale et les enregistrer dans un tableau .. Comment puis-je faire cela ?? J'ai essayé la méthode suivante, je continue à obtenir une matrice vide ....Comment stocker des valeurs dans une matrice dans MATLAB

% the code after FFT 
peak_points = []; 

    fmin = 60; 
    fmax = 1000; 
    region_of_interest = fmax>f & f>fmin; 
    froi = f(region_of_interest); 

    [p_max,loc] = max(seg_fft2(region_of_interest)); 

    p_max; 
    fpeaks = froi(loc); 

    [points, locatn] = findpeaks(seg_fft2(region_of_interest)); 

    if points > 0.4*p_max 
     peak_points = [peak_points ; points locatn] 
    end 

Im mauvais avec des tableaux .. Donc, je ne peux pas semblent comprendre cela. J'apprécierais l'aide de quelqu'un dans ceci ... Merci d'avance ...

Répondre

1

Avez-vous l'intention de faire le seg_ffr2 sur le tableau logique de région d'intérêt ou sur froi?

ou des points peut-être est le vecteur et vous devriez avoir:

aboveMax = points > 0.4*p_max; 
if any(aboveMax) 
     peak_points = [peak_points ; points(aboveMax) locatn(aboveMax)] 
end 
+0

Eh bien, je besoin de considérer que la région entre 60 Hz et 100 Hz et trouver le maximum dans cette région. La ligne 'region_of_interest = fmax> f & f> fmin;' définit cette région, donc seg_fft2 est fait sur ce ... – user2482542

+0

Merci. Cela fonctionne très bien pour détecter les amplitudes correctes. Cependant 'locatn (aboveMax)' ne me donne pas la fréquence du point. Que puis-je faire pour obtenir la valeur de fréquence? – user2482542

Questions connexes