Эквивалент «fi» MATLAB с фиксированной запятой в Python

1

MATLAB имеет функцию " fi " для представления фракций в схеме с фиксированной точкой. Его синтаксис

fi(fraction, sign, word_length, fraction_length).

Например, для представления -0.4 в фиксированной точке с 8-разрядной длиной слова и длиной 7 бит bit_length возвращается следующее:

fixed_number = fi(-0.4, 1, 8, 7) = -0.3984
fixed_number.int = -51
fixed_number.bin = 11001101

Запрос. Можем ли мы сделать подобное в Python? Есть ли функция для выполнения этого?

  • 1
    decimal.Decimal - это тип чисел с фиксированной точкой в Python (возможно, более полезный).
Теги:
python-3.x
python-2.7

1 ответ

1

Библиотека Python rig полезна для этой цели. Он поддерживает как плавное, так и фиксированное преобразование с плавающей точкой.

Пример:

>>> from rig.type_casts import float_to_fp, fp_to_float

>>> # Create a function to convert a float to a signed fractional
>>> # representation with 8 bits overall and 4 fractional bits (S3.4)
>>> s34 = float_to_fp(signed=True, n_bits=8, n_frac=4)
>>> hex(int(s34(0.5)))
'0x8'
>>> hex(int(s34(-7.5)))
'-0x78'

>>> # ...and make a function to convert back again!
>>> f4 = fp_to_float(n_frac=4)
>>> f4(0x08)
0.5
>>> f4(-0x78)
-7.5
  • 2
    Этот ответ был бы лучше, если бы он содержал ссылку на упомянутую библиотеку и пример использования.
  • 0
    Благодарю. Я отредактировал мой предыдущий ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню