Поискал готовые примеры использования fft, но они оказались совсем не универсальными, вот неплохой
пример. Отредактировал его на индусском, так чтобы он работал для разных диапазонов времени и без хемминга - не умею работать с фильтрами. Частоты меньше 1Гц не видно, а мне нужно обнаруживать и низкие и высокие частоты. Обнаруживаются частоты менее 1Гц
здесь, однако пример работает только для низких частот и вообще кажется халтурой. Как доработать код? Что сделать с массивом "f"?
clear all; close all; clc;
Fs = 500;
t = 0:1/Fs:0.4-1/Fs;
s = 3*sin(2*pi*50*t) + 2*sin(2*pi*0.5*t);
plot(t, s)
f=0:length(t)/2-1;
sp=4*abs(fft(s/length(t),length(t)/2));
f=f*Fs./length(f);
it=sp(1:end);
figure; plot(f, it);