2013-10-01 20 views
0

我在試圖找出音頻信號的FFT峯值的幅度和頻率。 執行FFT後,Ive使用以下代碼;在matlab中使用'findpeaks'後獲得頻率值

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)) 

    % index into froi to find the frequency of the peaks 
    p_max; 
    f_p_max = froi(loc); 

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

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

雖然林能夠得到正確的振幅,locatn(aboveMax)不給我的頻率..... 什麼我需要做的就是頻率值?我試了下面一行代替locatn(aboveMax)這是froi(locatn(aboveMax))但是我得到錯誤

???錯誤使用==> horzcat

CAT參數維度不一致。

回答

0

這是因爲locatn是索引的向量,因此您需要使用它們來索引頻率向量,例如, froi(locatn) if froi是你的頻率向量應該給你的頻率的峯值

+0

PS:看到http://www.mathworks.co.uk/help/signal/ref/findpeaks.html爲例 – am304

+0

好吧,那麼如何我可以寫一個代碼,以便我可以得到每個循環後的峯值振幅以及頻率值? – user2482542

+0

就像我說過的,'points'是峯值振幅,'locatn'是頻率矢量中相應頻率的指數。 – am304