MATLAB: Scaling the values to specific range

scaling

Q=[ 0.0669
0.0383
0.0029
-0.0344
-0.0554
-0.0459
-0.0316
0.0086
0.0392
0.0650
0.0698
0.0478
0.0201
-0.0134
-0.0468
-0.0583
-0.0468
-0.0229
0.0115]
I want to scale the value of Q in range [-(2^13-1),(2^13-1)]
please help

Best Answer

D1=int16(S*32768) maps your any integer S*32768 outside the range to 32768 or for S>1 the output will be 32768(2^15) otherwise it will be round off to the nearest integer(You are assuming maximum non saturating input is 1 beyond this there will be saturation). You can see simply use max(round(2^13*S),2^13). Hope it will be fine.