Azzera filtri
Azzera filtri

fi.sum increases bitlength although fimath is set to KeepMSB

2 visualizzazioni (ultimi 30 giorni)
Hi there,
I was wondering why the sum function increases the length of my fixed point variable.
Here is a little example:
fimath('SumMode','KeepMSB')
x = fi(1:100,true,8,0)
.
.
.
y = sum(x)
y = 5050
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 15
FractionLength: 0
I actually expected y to be 39, which is the decimal representation of 00100111 (the first 8 bit of y). It seams that the sum function just works with FullPrecision anyways?! Am I doing something wrong here?
Any help is highly appreciated.
Regards,
Len

Risposta accettata

Walter Roberson
Walter Roberson il 1 Lug 2015
You did not specify SumWordLength in your fimath() object.
  2 Commenti
Lennart
Lennart il 2 Lug 2015
Allright thanks for that I sort of overread that I guess. Unfortunately it still does not work. Here is what I did:
rounding = 'nearest';
overflowAction = 'Saturate';
sumMode = 'KeepMSB';
productMode = 'KeepMSB';
wordLength = 8;
fimath('RoundingMethod', rounding, 'OverflowAction', overflowAction, 'SumMode', sumMode, 'SumWordLength', wordLength, 'ProductMode', productMode, 'ProductWordLength', wordLength );
but if I type fimath in the command window it returns the default (sumMode = FullPrecission etc) Am I assigning fimath wrong?
Regards,
Len
Walter Roberson
Walter Roberson il 2 Lug 2015
I think you might need to assign the fimath object to a variable to get it to work, so that the object exists in the workspace. When you do not assign it, the object would get discarded at the end of the line.

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by