Ways to Construct fi Objects
You can create a fi object by using a fi constructor
            function or you can build fi object constructors using the
                Insert fi Constructor dialog box. You can also use a
                fi constructor function to copy an existing fi
            object.
numerictype and fimath properties can be specified
            directly in the fi constructor function or you can use an existing
                numerictype or fimath object to construct a
                fi object. The value of a property is taken from the last time it
            is set.
You can write a reusable MATLAB® algorithm by keeping the data types of the algorithmic variables in a separate types table.
Use fi Constructor to Create fi                 Objects
These examples show you several different ways to construct fi
                objects.
Construct fi Object with Default Data Type and Property                     Values
Create a fi object with the default data type and a value
                    of 0.
a = fi(0)
a =
 
     0
          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 15
The default fi constructor syntax creates a signed
                        fi object with a value of 0, word
                    length of 16 bits, and fraction length of 15 bits.
Note
The fi constructor creates the fi
                        object using a RoundingMethod of
                            Nearest and an OverflowAction
                        of Saturate. If you construct a fi
                        from floating-point values, the default RoundingMethod
                        and OverflowAction property settings are not
                        used.
For information on the display format of fi objects, refer
                    to View Fixed-Point Data.
Copy a fi Object
To copy a fi object, use assignment.
a = fi(pi)
a =
 
    3.1416
          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13
b = a
b =
 
    3.1416
          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13Construct fi Object with Property Name-Value Pair                     Arguments
You can use property name-value pair arguments to set fi
                    object properties in the fi constructor. The
                        fi object has three types of properties:
For example, specify the fimath object properties for the
                    rounding method and overflow action to use when performing fixed-point
                    arithmetic.
a = fi(pi,'RoundingMethod','Floor',... 'OverflowAction','Wrap')
a = 
    3.1415
          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13
        RoundingMethod: Floor
        OverflowAction: Wrap
           ProductMode: FullPrecision
               SumMode: FullPrecisionIf you specify at least one fimath object property in the
                        fi constructor, the fi object has a
                    local fimath object. The fi object uses
                    default values for the remaining unspecified fimath object
                    properties.
If you do not specify any fimath object properties in the
                        fi object constructor, the fi object
                    uses default fimath values and has no local
                        fimath.
You can use the isfimathlocal function to
                    determine whether a fi object has a local
                        fimath associated with it.
Construct fi Object Using numerictype                     Object
You can create a fi object using a
                        numerictype object. The numerictype Properties define
                    the data type and scaling attributes of a fi object.
Create a numerictype object with default property
                    values.
T = numerictype
T =
 
          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 15
Create a fi object from the numerictype
                    object T.
a = fi(pi,T)
 a =
 
    1.0000
          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 15
You can use a fimath object and a
                        numerictype object in the fi
                    constructor.
F = fimath('RoundingMethod','Nearest',... 'OverflowAction','Saturate',... 'ProductMode','FullPrecision',... 'SumMode','FullPrecision')
F =
 
        RoundingMethod: Nearest
        OverflowAction: Saturate
           ProductMode: FullPrecision
               SumMode: FullPrecision
a = fi(pi,T,F)
a =
 
    1.0000
          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 15
        RoundingMethod: Nearest
        OverflowAction: Saturate
           ProductMode: FullPrecision
               SumMode: FullPrecision
Note
The syntax a = fi(pi,T,F) is equivalent to a =
                            fi(pi,F,T). You can use both statements to define a
                            fi object using a fimath object
                        and a numerictype object.
Construct fi Object Using fimath                     Object
You can create a fi object using a specific
                        fimath object. When you do so, a local
                        fimath object is assigned to the fi
                    object you create. If you do not specify any numerictype
                    object properties, the word length of the fi object defaults
                    to 16 bits. The fraction length is determined by best precision scaling.
For example, create a fimath object that specifies the
                    rounding method, overflow action, product mode, and sum mode to use.
F = fimath('RoundingMethod','Nearest',... 'OverflowAction','Saturate',... 'ProductMode','FullPrecision',... 'SumMode','FullPrecision')
F =
 
             RoundingMethod: Nearest
          OverflowAction: Saturate
           ProductMode: FullPrecision
               SumMode: FullPrecision
Use dot notation to change the overflow action of the
                        fimath object F.
F.OverflowAction = 'Wrap'F =
 
             RoundingMethod: Nearest
          OverflowAction: Wrap
           ProductMode: FullPrecision
               SumMode: FullPrecision
Create a fi object using the fimath
                    object F.
a = fi(pi,F)
a =
 
    3.1416
          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13
        RoundingMethod: Nearest
        OverflowAction: Wrap
           ProductMode: FullPrecision
               SumMode: FullPrecision
You can also create fi objects using a
                        fimath object while specifying various
                        numerictype properties at creation time. For example,
                    create an unsigned fi object with a value of
                        pi, word length of 8 bits, fraction length of 6 bits, and
                        fimath
                    F.
b = fi(pi,0,8,6,F)
b = 
    3.1406
          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 8
        FractionLength: 6
        RoundingMethod: Nearest
        OverflowAction: Wrap
           ProductMode: FullPrecision
               SumMode: FullPrecisionUse the Insert fi Constructor Dialog Box to Build                     fi Object Constructors
You can build fi object constructors in MATLAB by using the Insert fi Constructor dialog box.
                After specifying the value and properties of the fi object in the
                dialog box, you can insert the prepopulated fi object constructor
                at a specific location in your file.
For example, create a signed fi object with a value of
                    pi, a word length of 16 bits and a fraction length of 13
                bits.
- On the MATLAB Home tab, in the File section, click New Script. 
- On the Editor tab, in the Code section, click the Specify fixed-point data button arrow  . Click Insert fi to
                        open the Insert fi Constructor dialog box. . Click Insert fi to
                        open the Insert fi Constructor dialog box.
- Use the edit boxes and drop-down menus to specify the following properties of the - fiobject:- Value = - pi
- Data type mode = - Fixed-point: binary point scaling
- Signedness = - Signed
- Word length = - 16
- Fraction length = - 13 
 
- To insert the - fiobject constructor in your file, place your cursor at the desired location in the file, then click OK on the Insert fi Constructor dialog box. Clicking OK closes the Insert fi Constructor dialog box and automatically populates the- fiobject constructor in your file.- fi(pi, 1, 16, 13) 
Determine Property Precedence
The value of a property of a fi object is taken from the last
                time it is set. For example, create a numerictype object with the
                    Signed set to true and a fraction length
                of 14.
T = numerictype('Signed',true,... 'FractionLength',14)
T =
 
          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 14        Create a fi object that specifies the
                    numerictype property T
                after the Signed property. The resulting
                    fi object is signed.
a = fi(pi,'Signed',false,... 'numerictype',T)
a =
 
    1.9999
          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 14
Create a second fi object that specifies the
                    numerictype
                T
                before the Signed property. The resulting
                    fi object is unsigned.
b = fi(pi,'numerictype',T,... 'Signed',false)
b =
 
    3.1416
          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 16
        FractionLength: 14
Create fi Objects for Use in a Types Table
You can write a reusable MATLAB algorithm by keeping the data types of the algorithmic variables in a separate types table. For example,
function T = mytypes(dt) switch dt case 'double' T.b = double([]); T.x = double([]); T.y = double([]); case 'fixed16' T.b = fi([],1,16,15); T.x = fi([],1,16,15); T.y = fi([],1,16,14); end end
Cast the variables in the algorithm to the data types in the types table as described in Manual Fixed-Point Conversion Best Practices.
function [y,z]=myfilter(b,x,z,T) y = zeros(size(x),'like',T.y); for n=1:length(x) z(:) = [x(n); z(1:end-1)]; y(n) = b * z; end end
In a separate test file, set up input data to feed into your algorithm, and specify the data types of the inputs.
% Test inputs b = fir1(11,0.25); t = linspace(0,10*pi,256)'; x = sin((pi/16)*t.^2); % Linear chirp % Cast inputs T=mytypes('fixed16'); b=cast(b,'like',T.b); x=cast(x,'like',T.x); z=zeros(size(b'),'like',T.x); % Run [y,z] = myfilter(b,x,z,T);
See Also
fi | fimath | fipref | numerictype