Считаем синус быстро и точно: ч.3 - Практика

Наконец-то переходим к самой важной части — как это вот всё использовать. Здесь я расскажу, как выбрать подходящую комбинацию длины таблицы и степени полинома, как создать эти таблицы и приведу примеры, как посчитать быстро (ну или относительно быстро).
Картинки не будет, не нашёл подходящей…


Читать дальше
  • +6
  • 08 октября 2021, 14:49
  • vix

Считаем синус быстро и точно: ч.2 - Точность вычислений

В этой части наглядно будет показано, как на точность вычислений влияет длина таблицы и размер полинома, а так же будет небольшое сравнение аппроксимаций синуса Полиномами Чебышёва и рядами Маклорена.




Читать дальше
  • +8
  • 08 октября 2021, 14:43
  • vix

Считаем синус быстро и точно: ч.1 - Теория

Хочу поделиться своей статьёй с хабра здесь, думаю пригодится. На хабре всё было одним большим куском, здесь же разобью на несколько статеек.
Поехали!

Если нужно найти синус, или другую тригонометрическую функцию на ПК, это делается просто — в большинство современных процессоров встроен блок для работы с числами с плавающей точкой, который довольно шустро (что совсем не факт) это посчитает.
Если это надо сделать это на МК без плавающей точки — то возникают проблемы. Можно использовать функцию из поставляемой вместе с компилятором библиотеки, будет точно, но очень медленно. Если надо быстрее — то первое, что приходит в голову, заранее посчитать таблицу со значениями, но точность при этом сильно упадёт, и будет зависеть от шага аргумента между смежными значениями. Следующий интуитивно понятный шаг — использовать кусочно-линейную аппроксимацию. Это поможет поднять точность, но несильно. Иногда для достижения нужной точности размер таблицы всё равно превосходит разумные пределы.
Что же тогда делать? Увеличивать степень аппроксимации. Это позволит увеличить точность вычислений и (или) уменьшить размер таблиц. И сделать это совсем несложно.


Читать дальше
  • +2
  • 08 октября 2021, 14:39
  • vix

Честно простой цифровой фильтр

Вы работаете с АЦП. Получаете результаты преобразования, один за одним. И замечаете, что эти результаты «скачут». А хотелось бы, чтобы стояли, как… Ну, короче, чтобы стояли!
Есть много причин, почему отсчеты АЦП могут быть нестабильны. В своей заметке я не говорю об этих причинах. Я говорю о том, как успокоить показания, получая их AS IS. И как сделать это максимально просто. При этом, возможно, не имея ни малейшего понятия о науке под названием «цифровая  обработка сигналов».

Читать дальше

Простой расчет рекурсивного фильтра 1-го порядка

ВНИМАНИЕ! Это черновая статья, в которой уважаемые коллеги нашли много недочетов. Новый вариант см. здесь.
При обработке выборок АЦП часто говорят об усреднении. И нередко — о скользящем. Что такое скользящее усреднение? Обновление результата с каждым приходящим новым отсчетом. Можно сузить задачу: накапливать предыдущие результаты негде или не хочется. Тогда однозначно речь может идти только рекурсивном фильтре первого порядка.
Конечно, вещь писанная-переписанная :) Но бывает непросто выбрать из горы литературы простые расчетные соотношения. А для новичков в цифровой обработке сигнала придется разобраться в терминологии, ограничениях и еще во многом, не очень-то и нужном для построения простого скользящего фильтра.
Постарался в этой заметке дать известный материал так, чтобы его можно было использовать даже школьнику.


Читать дальше