Мне нужно делать вращательные (и другие) преобразования во встроенном приложении, требуя функции sin () cos () и tan (). Я знаю, что вы можете использовать справочные таблицы, и это единственное решение, которое я смог найти, проводя собственное исследование, но есть ли хорошая библиотека триггеров с фиксированной точкой?
Я думаю об использовании Cortex M3 для приложения, поэтому я хочу как можно больше держаться подальше от плавающей запятой, чтобы приложения работали быстро.
Ответы:
Хорошим подходом для выполнения тригонометрии во встроенных приложениях является использование полиномиальных приближений к нужным вам функциям. Код компактен, данные состоят из нескольких коэффициентов, и единственные необходимые операции - умножение и сложение / вычитание. Многие встраиваемые системы имеют аппаратные множители, обеспечивающие хорошую производительность.
источник
_Fract
это кусок дерьма ИМХО; Я ненавижу тот факт, что он был "стандартизирован" комитетом C. Это заставляет вас использовать Q15 или Q31 для всего, что не имеет смысла во многих ситуациях, и оставляет вас в затруднительном положении без помощи в таких ситуациях.Вы против использования библиотек Cortex с фиксированной точкой для этого?
от:
Он использует таблицу поиска с квадратичной интерполяцией, но это довольно быстро. Вы можете адаптировать его к линейной интерполяции для большей скорости, но с большей ошибкой.
Также обратите внимание, что даже Cortex M4 не обязательно имеет FPU. Я видел их под названием "M4F", если они делают.
источник