Вопрос, скорее, для обсуждения разных вариантов. Лучшим по точности будет, очевидно, восстановление sinc функциями. Но как это сделать в реальности, микроконтроллером, а не в MATLAB? Кубическая интерполяция будет сильно ломать сигнал. Может, как-то полином 5 степени использовать? 7-й? А нет ли способа чисто синус найти подходящий? Какие еще есть способы?
И еще, если взять 10 точек на период, что здесь можно применить? Задачка выглядит намного более легкой. Значит, и способ найдется попроще.
Критерий "похожести", наверное - задать величину среднеквадратического отклонения интерполированного сигнала от оригинала. Не знаю, какое конкретное значение выбрать. Нужно, чтобы было "похоже" визуально.