# sfi

Construct signed fixed-point numeric object

## Syntax

`a = sfia = sfi(v)a = sfi(v,w)a = sfi(v,w,f)a = sfi(v,w,slope,bias)a = sfi(v,w,slopeadjustmentfactor,fixedexponent,bias)`

## Description

You can use the `sfi` constructor function in the following ways:

• `a = sfi` is the default constructor and returns a signed `fi` object with no value, 16-bit word length, and 15-bit fraction length.

• `a = sfi(v)` returns a signed fixed-point object with value `v`, 16-bit word length, and best-precision fraction length.

• `a = sfi(v,w)` returns a signed fixed-point object with value `v`, word length `w`, and best-precision fraction length.

• `a = sfi(v,w,f)` returns a signed fixed-point object with value `v`, word length `w`, and fraction length `f`.

• `a = sfi(v,w,slope,bias)` returns a signed fixed-point object with value `v`, word length `w`, `slope`, and `bias`.

• `a = sfi(v,w,slopeadjustmentfactor,fixedexponent,bias)` returns a signed fixed-point object with value `v`, word length `w`, `slopeadjustmentfactor`, `fixedexponent`, and `bias`.

`fi` objects created by the `sfi` constructor function have the following general types of properties:

These properties are described in detail in fi Object Properties in the Properties Reference.

 Note:   `fi` objects created by the `sfi` constructor function have no local fimath.

### Data Properties

The data properties of a `fi` object are always writable.

• `bin` — Stored integer value of a `fi` object in binary

• `data` — Numerical real-world value of a `fi` object

• `dec` — Stored integer value of a `fi` object in decimal

• `double` — Real-world value of a `fi` object, stored as a MATLAB® `double`

• `hex` — Stored integer value of a `fi` object in hexadecimal

• `int` — Stored integer value of a `fi` object, stored in a built-in MATLAB integer data type. You can also use `int8`, `int16`, `int32`, `int64`, `uint8`, `uint16`, `uint32`, and `uint64` to get the stored integer value of a `fi` object in these formats

• `oct` — Stored integer value of a `fi` object in octal

These properties are described in detail in fi Object Properties.

### fimath Properties

When you create a `fi` object with the `sfi` constructor function, that `fi` object does not have a local `fimath` object. You can attach a `fimath` object to that `fi` object if you do not want to use the default fimath settings. For more information, see fimath Object Construction in the Fixed-Point Designer™ documentation.

• `fimath` — fixed-point math object

The following `fimath` properties are always writable and, by transitivity, are also properties of a `fi` object.

• `CastBeforeSum` — Whether both operands are cast to the sum data type before addition

 Note:   This property is hidden when the `SumMode` is set to `FullPrecision`.
• `OverflowAction` — Action to take on overflow

• `ProductBias` — Bias of the product data type

• `ProductFixedExponent` — Fixed exponent of the product data type

• `ProductFractionLength` — Fraction length, in bits, of the product data type

• `ProductMode` — Defines how the product data type is determined

• `ProductSlope` — Slope of the product data type

• `ProductSlopeAdjustmentFactor` — Slope adjustment factor of the product data type

• `ProductWordLength` — Word length, in bits, of the product data type

• `RoundingMethod` — Rounding method

• `SumBias` — Bias of the sum data type

• `SumFixedExponent` — Fixed exponent of the sum data type

• `SumFractionLength` — Fraction length, in bits, of the sum data type

• `SumMode` — Defines how the sum data type is determined

• `SumSlope` — Slope of the sum data type

• `SumSlopeAdjustmentFactor` — Slope adjustment factor of the sum data type

• `SumWordLength` — The word length, in bits, of the sum data type

These properties are described in detail in fimath Object Properties.

### numerictype Properties

When you create a `fi` object, a `numerictype` object is also automatically created as a property of the `fi` object.

`numerictype` — Object containing all the data type information of a `fi` object, Simulink® signal or model parameter

The following `numerictype` properties are, by transitivity, also properties of a `fi` object. The properties of the `numerictype` object become read only after you create the `fi` object. However, you can create a copy of a `fi` object with new values specified for the `numerictype` properties.

• `Bias` — Bias of a `fi` object

• `DataType` — Data type category associated with a `fi` object

• `DataTypeMode` — Data type and scaling mode of a `fi` object

• `FixedExponent` — Fixed-point exponent associated with a `fi` object

• `SlopeAdjustmentFactor` — Slope adjustment associated with a `fi` object

• `FractionLength` — Fraction length of the stored integer value of a `fi` object in bits

• `Scaling` — Fixed-point scaling mode of a `fi` object

• `Signed` — Whether a `fi` object is signed or unsigned

• `Signedness` — Whether a `fi` object is signed or unsigned

 Note:   `numerictype` objects can have a `Signedness` of `Auto`, but all `fi` objects must be `Signed` or `Unsigned`. If a `numerictype` object with `Auto` `Signedness` is used to create a `fi` object, the `Signedness` property of the `fi` object automatically defaults to `Signed`.
• `Slope` — Slope associated with a `fi` object

• `WordLength` — Word length of the stored integer value of a `fi` object in bits

For further details on these properties, see numerictype Object Properties.

## Examples

 Note   For information about the display format of `fi` objects, refer to Display Settings.For examples of casting, see Cast fi Objects.

### Example 1

For example, the following creates a signed `fi` object with a value of `pi`, a word length of 8 bits, and a fraction length of 3 bits:

```a = sfi(pi,8,3) a = 3.1250 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 8 FractionLength: 3```

Default `fimath` properties are associated with `a`. When a `fi` object does not have a local `fimath` object, no `fimath` object properties are displayed in its output. To determine whether a `fi` object has a local `fimath` object, use the `isfimathlocal` function.

```isfimathlocal(a) ans = 0```

A returned value of `0` means the `fi` object does not have a local `fimath` object. When the `isfimathlocal` function returns a `1`, the `fi` object has a local `fimath` object.

### Example 2

The value `v` can also be an array:

```a = sfi((magic(3)/10),16,12) a = 0.8000 0.1001 0.6001 0.3000 0.5000 0.7000 0.3999 0.8999 0.2000 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 12```

### Example 3

If you omit the argument `f`, it is set automatically to the best precision possible:

```a = sfi(pi,8) a = 3.1563 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 8 FractionLength: 5```

### Example 4

If you omit `w` and `f`, they are set automatically to 16 bits and the best precision possible, respectively:

```a = sfi(pi) a = 3.1416 DataTypeMode: Fixed-point: binary point scaling Signedness: Signed WordLength: 16 FractionLength: 13```