如何在MATLAB中存储数组中的值
假设我已经对一组数据执行了FFT,并且得到了频率和振幅值。 我想找到每个FFT块中的最高振幅。我需要找到至少大于最大振幅0.4倍的点的频率和振幅,并将它们保存在一个数组中。。我该怎么做?? 我尝试了以下方法,不断得到一个空矩阵如何在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
% 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)
没有给出该点的频率。我可以做什么来获得频率值??