0

假设我对一组数据执行了 FFT,并且我有频率和幅度值。我想在每个 FFT 块中找到最高幅度。我需要找到至少大于最大振幅 0.4 倍的点的频率和振幅并将它们保存在一个数组中。我该怎么做?我通过不断得到一个空矩阵尝试了以下方法....

% 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

我对数组不好..所以我似乎无法弄清楚这一点。将不胜感激有人在这方面的帮助......在此先感谢......

4

1 回答 1

1

您打算在感兴趣的逻辑数组或 froi 上执行 seg_ffr2 吗?

或者也许点是向量,你应该有:

aboveMax = points > 0.4*p_max;
if any(aboveMax)   
        peak_points = [peak_points ; points(aboveMax) locatn(aboveMax)]
end
于 2013-09-30T06:58:59.093 回答