Tags: algorithm, code, converting, fixed, fixed-point, floating, havety, matlab, matrices, package, perfectly, point, pointinto, programming, troubles

Troubles with fixed-point package and matrices

On Programmer » Matlab

3,278 words with 2 Comments; publish: Wed, 07 May 2008 23:08:00 GMT; (20078.13, « »)

I'm converting an algorithm that works perfectly in floating point

into fixed point. At one point in the fixed-point code, I have:

Ty = numerictype(true,16,15);

Tacc = numerictype(true,40,31);

Facc = fimath('RoundMode', 'floor', ...

'OverflowMode', 'saturate', ...

'ProductMode', 'SpecifyPrecision', ...

'ProductWordLength', 32, ...

'ProductFractionLength', 31, ...

'SumMode', 'SpecifyPrecision', ...

'SumWordLength', 40, ...

'SumFractionLength', 31, ...

'CastBeforeSum', 1);

k = 1;

accf = fi(acc(k,:)/(2^15),Ty,Facc);

simlogf.main.state = fi(zeros(8,nsamples),Ty,Facc);

simlogf.main.state(1,:) = accf(k,:);

Everything works until the last statement. The size of

simlogf.main.state is 8 X nsamples before the last statement (as it

should be), and 1 X nsamples after the last statement! acc is a

previously assigned matrix 4 X nsamples of values in the range 2^15

to -2^15+1.

Why is the fixed-point array changing into a fixed point row vector?

Scott Miller

to reply, takeout chinese food

All Comments

Leave a comment...

  • 2 Comments
    • That should be

      "accf (rather than acc) is a previously assigned matrix 4 X nsamples

      of values in the range 2^15 to -2^15+1." Everything else is true,

      and the problem still remains.

      >

      Scott Miller wrote:

      >

      > I'm converting an algorithm that works perfectly in floating point

      > into fixed point. At one point in the fixed-point code, I have:

      > Ty = numerictype(true,16,15);

      > Tacc = numerictype(true,40,31);

      > Facc = fimath('RoundMode', 'floor', ...

      > 'OverflowMode', 'saturate', ...

      > 'ProductMode', 'SpecifyPrecision', ...

      > 'ProductWordLength', 32, ...

      > 'ProductFractionLength', 31, ...

      > 'SumMode', 'SpecifyPrecision', ...

      > 'SumWordLength', 40, ...

      > 'SumFractionLength', 31, ...

      > 'CastBeforeSum', 1);

      > k = 1;

      > accf = fi(acc(k,:)/(2^15),Ty,Facc);

      > simlogf.main.state = fi(zeros(8,nsamples),Ty,Facc);

      > simlogf.main.state(1,:) = accf(k,:);

      > Everything works until the last statement. The size of

      > simlogf.main.state is 8 X nsamples before the last statement (as it

      > should be), and 1 X nsamples after the last statement! acc is a

      > previously assigned matrix 4 X nsamples of values in the range 2^15

      > to -2^15+1.

      > Why is the fixed-point array changing into a fixed point row

      > vector?

      > Scott Miller

      > to reply, takeout chinese food

      #1; Wed, 07 May 2008 23:09:00 GMT
    • Dang, I'm tired! The original post was correct; the problem still

      exists.

      Scott Miller wrote:

      >

      > That should be

      > "accf (rather than acc) is a previously assigned matrix 4 X

      > nsamples

      > of values in the range 2^15 to -2^15+1." Everything else is true,

      > and the problem still remains.

      >

      > Scott Miller wrote:

      > point

      have:

      (as

      > it

      a

      > 2^15

      #2; Wed, 07 May 2008 23:10:00 GMT