При масштабировании смещения уклона необходимо указать наклон и смещение числа. Действительное значение масштабированного числа смещения наклона может быть представлено следующим образом:
+ смещение
экспонента
Начните с нужных конечных точек, сигнатур и длины слова.
lower_bound = 999; upper_bound = 1000; is_signed = true; word_length = 16;
Поиск диапазона fi объект с указанной длиной слова и подписью, используйте range функция.
[Q_min, Q_max] = range(fi([], is_signed, word_length, 0));
Чтобы найти наклон и смещение, решите систему уравнений:
lower_bound = slope * Q_min + bias
upper_bound = slope * Q_max + bias
Перепишите эти уравнения в матричной форме.
Решение для уклона и смещения.
A = double ([Q_min, 1; Q_max, 1]); b = double ([lower_bound; upper_bound]); x = A\b; format long g
Чтобы найти наклон или точность, вызовите первый элемент вектора уклона-смещения, x.
slope = x(1)
slope =
1.52590218966964e-05Чтобы найти смещение, вызовите второй элемент вектора x.
bias = x(2)
bias =
999.500007629511Создать numerictype объект с масштабированием уклона.
T = numerictype(is_signed, word_length, slope, bias)
T =
DataTypeMode: Fixed-point: slope and bias scaling
Signedness: Signed
WordLength: 16
Slope: 1.5259021896696368e-5
Bias: 999.500007629511Создать fi объект с numerictype
T.
a = fi(999.255, T)
a =
999.254993514916
DataTypeMode: Fixed-point: slope and bias scaling
Signedness: Signed
WordLength: 16
Slope: 1.5259021896696368e-5
Bias: 999.500007629511Убедитесь, что fi созданный объект имеет правильные спецификации, найдя диапазон a.
range(a)
ans =
999 1000
DataTypeMode: Fixed-point: slope and bias scaling
Signedness: Signed
WordLength: 16
Slope: 1.5259021896696368e-5
Bias: 999.500007629511