Determine maximum precision available for fixed-point representation of value
out = fixptbestprec(RealWorldValue,TotalBits,IsSigned)
out = fixptbestprec(RealWorldValue,FixPtDataType)
out = fixptbestprec(RealWorldValue,TotalBits,IsSigned)
determines the maximum precision for the fixed-point representation
of the real-world value specified by RealWorldValue.
You specify the number of bits for the fixed- point number with TotalBits,
and you specify whether the fixed-point number is signed with IsSigned.
If IsSigned is 1, the number
is signed. If IsSigned is 0,
the number is not signed. The maximum precision is returned to out.
out = fixptbestprec(RealWorldValue,FixPtDataType)
determines the maximum precision based on the data type specified
by FixPtDataType.
The following command returns the maximum precision available for the real-world value 4/3 using a signed, 8-bit number:
out = fixptbestprec(4/3,8,1)
out = 0.015625
Alternatively, you can specify the fixed-point data type:
out = fixptbestprec(4/3,sfix(8))
out = 0.015625
This value means that the maximum precision available for 4/3 is obtained by placing six bits to the right of the binary point since 2-6 equals 0.015625:
01.010101
You can use the maximum precision as the scaling in fixed-point
blocks. This enables you to use fixptbestprec to
perform a type of autoscaling if you would like to designate a known
range of your simulation. For example, if your known range is -13
to 22, and you are using a safety margin of 30%:
knownMax = 22; knownMin = -13; localSafetyMargin = 30; slope = max( fixptbestprec( (1+localSafetyMargin/100)* ... [knownMax,knownMin], sfix(16) ) );
The variable slope can then be used in the
expression that you specify for the Output data
type parameter in a block mask. Be sure to select the Lock output data type setting against changes by the fixed-point
tools check box in the same block to prevent the Fixed-Point
Tool from overriding the scaling. If you know the range, you can use
this technique in place of relying on a model simulation to provide
the range to the autoscaling tool, as described in autofixexp (Fixed-Point Designer).