【问题标题】:Obtaining the frequency value after using 'findpeaks' in matlab在matlab中使用'findpeaks'后获取频率值
【发布时间】:2013-10-01 08:17:54
【问题描述】:

我正在尝试查找音频信号的 FFT 峰值的幅度和频率。 执行 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))

    % 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 参数尺寸不一致。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    那是因为locatn 是一个索引向量,所以你需要使用它们来索引你的频率向量,例如froi(locatn) 如果froi 是您的频率向量,则应该为您提供峰值的频率

    【讨论】:

    • 好的,我该如何编写代码,以便在每次循环后获得峰值幅度和频率值??
    • 就像我说的,points 是峰值幅度,locatn 是频率向量中相应频率的索引。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 2012-04-26
    • 2018-10-10
    • 2017-03-29
    • 1970-01-01
    相关资源
    最近更新 更多