Main Content

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:

real-world value=(slope×integer)+bias

slope=slope adjustment factor×2fixed exponent

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.

[lower_boundupper_bound]=[Q_min1Q_max1]×[slopebias]

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