【问题标题】:Getting Matlab to find peak values of 5 harmonics in a FFT plot让 Matlab 在 FFT 图中找到 5 个谐波的峰值
【发布时间】:2014-04-19 12:31:36
【问题描述】:

我有一个包含多个峰值的 FFT 图。我需要 matlab 才能读取前 5 个峰值的峰值(我知道峰值位于 50 的倍数处)。

这是我想出的伪代码:

i=0;
j=0;
array[5];

for(i:n_samples){
    if(FFT(i)rem50==0){   // FFT is a variable that has fft 
        array[j]=FFT[i];
    }

    i++;
    J++;

    if(j>5){
        break;
    }
}

但这是一种非常暴力的方式。有没有更好的方法来做到这一点?也许有任何内置功能?

【问题讨论】:

  • 您是否尝试过使用findpeaks

标签: matlab plot fft


【解决方案1】:

假设找到最小高度为 0.5 且彼此距离为 10 个点的前 5 个峰,

[pks, locs] = findpeaks(FFT, 'NPEAKS', 3, 'MINPEAKHEIGHT', 0.5, 'MINPEAKDISTANCE', 10);

那么pks 是你的ylocs 是你的x 与你的峰值坐标。

希望对你有帮助

【讨论】:

    【解决方案2】:

    您的伪代码可以简化为:

    FFT(1:50:250)
    

    但我认为findpeaks 会更强大

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-11
      • 1970-01-01
      • 2016-03-01
      • 2021-12-21
      • 1970-01-01
      • 2019-02-14
      • 2014-09-23
      • 1970-01-01
      相关资源
      最近更新 更多