Calcular pendiente y sesgo
¿Qué es el escalado de pendiente y sesgo?
Con el escalado de pendiente y sesgo, debe especificar la pendiente y el sesgo de un número. El valor real de un número escalado en base a pendiente y sesgo se puede representar mediante:
Calcular pendiente y sesgo
Comience por el extremo que desee, la representación de signo y la longitud de palabra.
lower_bound = 999; upper_bound = 1000; is_signed = true; word_length = 16;
Para encontrar el rango de un objeto fi
con una longitud de palabra y una representación de signo específicos, use la función range
.
[Q_min, Q_max] = range(fi([], is_signed, word_length, 0));
Para encontrar la pendiente y el sesgo, resuelva el sistema de ecuaciones:
lower_bound = slope * Q_min + bias
upper_bound = slope * Q_max + bias
Reescriba estas ecuaciones en forma de matriz.
Resuelva para determinar la pendiente y el sesgo.
A = double ([Q_min, 1; Q_max, 1]); b = double ([lower_bound; upper_bound]); x = A\b; format long g
Para encontrar la pendiente o la precisión, llame al primer elemento del vector pendiente-sesgo, x
.
slope = x(1)
slope = 1.52590218966964e-05
Para encontrar el sesgo, llame al segundo elemento del vector x
.
bias = x(2)
bias = 999.500007629511
Cree un objeto numerictype
con el escalado de pendiente y sesgo.
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
Cree un objeto fi
con 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
Verifique que el objeto fi
que creó tenga las especificaciones correctas encontrando el rango de a
.
range(a)
ans = 999 1000 DataTypeMode: Fixed-point: slope and bias scaling Signedness: Signed WordLength: 16 Slope: 1.5259021896696368e-5 Bias: 999.500007629511