Возьмем преобразование Фурье, которое преобразует данные в таблицу частот (для реализации ищите fft, быстрое преобразование Фурье. Например, FFTW ). Если это синус или косинус, таблица частот будет содержать одно очень высокое значение, соответствующее искомой частоте, и некоторый шум на других частотах.
В качестве альтернативы, сопоставьте несколько синусенов на нескольких частотах и попытайтесь сопоставить их, используя взаимную корреляцию: сумму квадратов разностей между вашим сигналом и синусом, который вы пытаетесь подогнать. Вы должны были бы сделать это для sinussen на диапазоне частот, конечно. И вам нужно будет сделать это при перемещении синуса вдоль оси X, чтобы найти фазу.