Create Fixed-Point Data in MATLAB
The following examples show how to create fixed-point data using the Fixed-Point Designer™
fi object.
Calling fi on a number produces a fixed-point number with
default signedness and default word and fraction lengths.
fi(pi)
ans =
3.1416
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 13You can specify the signedness (1 for signed, 0 for unsigned) and the word and fraction lengths.
fi(pi,1,15,12)
ans =
3.1416
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 15
FractionLength: 12
The fi and
numerictype Objects
To create fixed-point integer values, specify a fraction length of 0.
fi(1:25,0,8,0)
ans =
Columns 1 through 13
1 2 3 4 5 6 7 8 9 10 11 12 13
Columns 14 through 25
14 15 16 17 18 19 20 21 22 23 24 25
DataTypeMode: Fixed-point: binary point scaling
Signedness: Unsigned
WordLength: 8
FractionLength: 0
fi(rand(4),0,12,8)
ans =
0.1484 0.8125 0.1953 0.3516
0.2578 0.2422 0.2500 0.8320
0.8398 0.9297 0.6172 0.5859
0.2539 0.3516 0.4727 0.5508
DataTypeMode: Fixed-point: binary point scaling
Signedness: Unsigned
WordLength: 12
FractionLength: 8When writing code, you sometimes want to test different data types for your variables. Separating the data types of your variables from your algorithm makes testing much simpler. By creating a table of data type definitions, you can programmatically toggle your function between floating point and fixed point data types. The following example shows how to use this technique and create an array of zeros.
T.z = fi([],1,16,0);
z = zeros(2,3,'like',T.z)z =
0 0 0
0 0 0
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 0Note
For a full example showing this technique’s implementation, see Implement FIR Filter Algorithm for Floating-Point and Fixed-Point Types Using cast and zeros.