如何在MATLAB中存储数组中的值

如何在MATLAB中存储数组中的值,matlab,Matlab,假设我已经对一组数据执行了FFT,并且得到了频率和振幅值。 我想找到每个FFT块中的最高振幅。我需要找到至少大于最大振幅0.4倍的点的频率和振幅,并将它们保存在一个数组中。。我该怎么做?? 我尝试了以下方法,不断得到一个空矩阵 % the code after FFT peak_points = []; fmin = 60; fmax = 1000; region_of_interest = fmax>f & f>fmin; froi = f

假设我已经对一组数据执行了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

我对数组不熟悉。。所以我似乎无法理解这一点。非常感谢有人在这方面的帮助。。。提前感谢…

您打算在感兴趣的区域逻辑阵列上还是在froi上执行seg_ffr2

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

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

我只需要考虑60赫兹到100赫兹之间的区域,找出那个区域的最大值。感兴趣的线
区域=fmax>f&f>fmin定义了那个区域,所以seg_fft2就完成了…谢谢。它可以很好地检测正确的振幅。但是
locatn(高于max)
没有给出该点的频率。我可以做什么来获得频率值??