Только округление методов и действий переполнения установлено до операции с fi
объекты влияют на результат тех операций. Если вы создаете fi
объект в MATLAB®, изменение его округления или настроек переполнения не влияет на свое значение. Например, рассмотрите fi
объекты a
и b
:
p = fipref('NumberDisplay', 'RealWorldValue',... 'NumericTypeDisplay', 'none', 'FimathDisplay', 'none'); T = numerictype('WordLength',8,'FractionLength',7); F = fimath('RoundingMethod','Floor','OverflowAction','Wrap'); a = fi(1,T,F)
a = -1
b = fi(1,T)
b = 0.9922
Поскольку вы создаете a
с fimath
объект F
это имеет OverflowAction
установите на Wrap
, значение a
переносится к-1. С другой стороны, потому что вы создаете b
с OverflowAction
по умолчанию значение
Saturate
, его значение насыщает к 0,9922.
Теперь присвойте fimath
объект F
к b
:
b.fimath = F
b = 0.9922
Поскольку операция присвоения и соответствующее переполнение и насыщение произошли, когда вы создали b
, его значение не изменяется, когда вы присваиваете его новый fimath
объект F
.
Примечание
fi
объекты без локального fimath и созданный из значения с плавающей точкой всегда создаются с RoundingMethod
из Nearest
и OverflowAction
из Saturate
. Создать fi
объекты с различным RoundingMethod
и OverflowAction
свойства, задайте желаемый RoundingMethod
и OverflowAction
свойства в fi
конструктор.
Для получения дополнительной информации о fimath
возразите и его свойства, см. fimath Свойства объектов