Grizzzly
Jun 19 2014, 14:15
Есть алгоритм, который реализован на ARM с плавающей запятой и на TMS с фиксированной запятой. Как правильно оценить погрешность представления чисел во float и Q0.18? Правильно ли я понимаю, что float точнее, поскольку у него 7 значащих десятичных знаков после запятой, а для Q0.18 только 5?
Elex_MD
Jun 19 2014, 16:47
Цитата(Grizzzly @ Jun 19 2014, 18:15)

для Q0.18 только 5?
почему 5? разве Q0.18 не подразумевает 0 разрядов для целой части и 18 разрядов для дробной.Кстати, какой-то весьма странный формат.
Grizzzly
Jun 19 2014, 17:17
18 двоичных разрядов, что примерно составляет 5 десятичных. Развет не так?
Тот, кто писал код, выбрал LSB = 2^-18. Целую часть число не содержит. Поэтому такой вот формат. Я хочу разобраться, на сколько точность данного числа меньше, чем у float. Просто на float'ах всё устраивает. А к алгоритму с фиксированной точке появились вопросы. Есть некоторая ошибка в полученных выходных данных. Вот я и хочу понять, это из-за точности представления чисел, или что-то другое влияет.
menzoda
Jun 20 2014, 05:25
Да, точность меньше. В IEEE754 на мантиссу отводится 23 (вроде?) бита, а тут 18, кроме того у плавающей точки динамический диапазон больше. Влияет ли это на вычисления? Неизвестно. Нужно брать подозрительные арифметические операции алгоритма и тщательно проверять на возникновение переполнения/ограничения при заданных входных данных. Если влияет, то можно отвести под дробную часть больше битов, Q0.31 например, или еще больше.
Grizzzly
Jun 20 2014, 06:37
Спасибо. Да, так и есть, под мантиссу во float отводится 23 бита.
Попробую перейти на Q0.31 и сравнить результаты.
menzoda
Jun 20 2014, 10:42
Вообще, в Simulink (это который с Matlab'ом вместе идет) есть такая штука, как автоматический подбор нужных форматов фиксточки. Рисуем алгоритм, задаем для блоков предельные входные значения, ???, профит! Он сам подбирает нужные форматы и при необходимости переводит из одного в другой. Однако, как и все остальное в Simulink, эта штука имеет очень корявый интерфейс, я так и не разобрался как заставить ее работать.
Grizzzly
Jun 20 2014, 12:13
Спасибо. Про Simulink знаю. Приходилось очень много рабоать с ним. А мне нравится его интерфейс

Не хотелось тратить время на создание модели. Может быть, попробую, если без этого не удастся исправить.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.