Скажем, я выполнил БПФ по набору данных, и у меня есть значения частоты и амплитуды. Я хочу найти максимальную амплитуду в каждом блоке FFT. Мне нужно найти частоту и амплитуду точек, которые по крайней мере больше 0,4 раза больше максимальной амплитуды и сохранять их в массиве. Как я могу это сделать? Я попробовал следующий метод, я получаю пустую матрицу ....Как сохранить значения в массиве в MATLAB
% 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
Im плохо с массивами .. Так что я не могу показаться, чтобы понять это. Поблагодарите чью-то помощь в этом ... Спасибо заранее ...
Ну мне нужно рассматривать только область между 60 Гц и 100 Гц и найти максимальную в этом регионе. Линия 'region_of_interest = fmax> f & f> fmin;' определяет эту область, поэтому seg_fft2 делается на этом ... – user2482542
Спасибо. Он отлично работает при обнаружении правильных амплитуд. Однако 'locatn (aboveMax)' не дает мне частоту точки. Что я могу сделать, чтобы получить значение частоты? – user2482542