quantize

Квантуйте номера с фиксированной точкой

Описание

y = quantize(x) квантования x использование следующих значений по умолчанию:

  • numerictype (true,16,15)

  • Floor метод округления

  • Wrap действие переполнения

numerictype, метод округления и действие переполнения применяются только во время квантования. Получившееся значение квантовано y, не имеет никакого фимата присоединен к нему.

y = quantize(x,nt) квантования x к указанному numerictype nt. Метод округления и действие переполнения используют значения по умолчанию.

y = quantize(x,nt,rm) квантования x к указанному numerictype, nt и метод округления, rm. В действии переполнения используется значение по умолчанию.

пример

y = quantize(x,nt,rm,oa) квантования x к указанному numerictype, nt, метод округления, rm, и действие переполнения, oa.

yBP = quantize(x,s) квантования x в двоичную точку, масштабированный номер с фиксированной точкой. The s вход определяет знак, который будет использоваться в numerictype (s,16,15). Неопределенные свойства используют следующие значения по умолчанию:

  • WordLength 16

  • FractionLength 15

  • RoundingMethod Floor

  • OverflowAction Wrap

yBP = quantize(x,s,wl) использует заданный размер слова, wl. Длина дроби по умолчанию равна wl–1. В неопределенных свойствах используются значения по умолчанию.

yBP = quantize(x,s,wl,fl) использует указанную длину дроби, fl. В неопределенных свойствах используются значения по умолчанию.

yBP = quantize(x,s,wl,fl,rm) использует заданный метод округления, rm. В неопределенных свойствах используются значения по умолчанию.

пример

yBP = quantize(x,s,wl,fl,rm,oa) использует указанное действие переполнения, oa.

Примеры

свернуть все

Создание numerictype объект, ntBP, который задает тип данных со знаком, 8-битный размер слова, 4-битную длину дроби.

ntBP = numerictype(1,8,4);

Определите вход.

x_BP = fi(pi)
x_BP = 
    3.1416

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

Используйте определенную numerictype, ntBP, чтобы квантовать вход, x_BP, в тип масштабированных данных с двоичной точкой.

yBP1 = quantize(x_BP,ntBP)
yBP1 = 
    3.1250

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 4

Создайте numerictype объект, ntSB, который задает тип данных смещения наклона.

ntSB = numerictype('Scaling','SlopeBias', ...
      'SlopeAdjustmentFactor',1.8,'Bias',...
      1,'FixedExponent',-12);

Определите вход.

x_BP = fi(pi)
x_BP = 
    3.1416

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

Используйте определенную numerictype, ntSB, чтобы квантовать вход, x_BP, к типу данных смещения наклона.

ySB1 = quantize(x_BP, ntSB)
ySB1 = 
    3.1415

          DataTypeMode: Fixed-point: slope and bias scaling
            Signedness: Signed
            WordLength: 16
                 Slope: 0.000439453125
                  Bias: 1

Создайте numerictype объект, ntBP, который задает тип данных со знаком, 8-битный размер слова, 4-битную длину дроби.

ntBP = numerictype(1,8,4);

Определите вход.

x_SB = fi(rand(5,3),numerictype('Scaling','SlopeBias','Bias',-0.125))
x_SB=5×3 object
    0.8147    0.0975    0.1576
    0.8750    0.2785    0.8750
    0.1270    0.5469    0.8750
    0.8750    0.8750    0.4854
    0.6324    0.8750    0.8003

          DataTypeMode: Fixed-point: slope and bias scaling
            Signedness: Signed
            WordLength: 16
                 Slope: 3.0517578125e-5
                  Bias: -0.125

Используйте определенную numerictype, ntBP, чтобы квантовать вход, x_SB, к двоичному типу данных с масштабированием точек.

yBP2 = quantize(x_SB,ntBP,'Nearest','Saturate')
yBP2=5×3 object
    0.8125    0.1250    0.1875
    0.8750    0.2500    0.8750
    0.1250    0.5625    0.8750
    0.8750    0.8750    0.5000
    0.6250    0.8750    0.8125

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 4

Создайте numerictype объект, ntSB, который задает тип данных смещения наклона.

ntSB = numerictype('Scaling','SlopeBias', ...
      'SlopeAdjustmentFactor',1.8,'Bias',...
      1,'FixedExponent',-12);

Определите вход.

x_SB = fi(rand(5,3),numerictype('Scaling','SlopeBias','Bias',-0.125))
x_SB=5×3 object
    0.8147    0.0975    0.1576
    0.8750    0.2785    0.8750
    0.1270    0.5469    0.8750
    0.8750    0.8750    0.4854
    0.6324    0.8750    0.8003

          DataTypeMode: Fixed-point: slope and bias scaling
            Signedness: Signed
            WordLength: 16
                 Slope: 3.0517578125e-5
                  Bias: -0.125

Используйте определенную numerictype, ntSB, чтобы квантовать вход, x_SB, к типу данных смещения наклона.

ySB2 = quantize(x_SB,ntSB,'Ceiling','Wrap')
ySB2=5×3 object
    0.8150    0.0978    0.1580
    0.8752    0.2789    0.8752
    0.1272    0.5469    0.8752
    0.8752    0.8752    0.4854
    0.6326    0.8752    0.8005

          DataTypeMode: Fixed-point: slope and bias scaling
            Signedness: Signed
            WordLength: 16
                 Slope: 0.000439453125
                  Bias: 1

Создайте numerictype объект, ntBP, который задает тип данных со знаком, 8-битный размер слова, 4-битную длину дроби.

ntBP = numerictype(1,8,4);

Определите вход.

xInt = int8(-16:4:16)
xInt = 1x9 int8 row vector

   -16   -12    -8    -4     0     4     8    12    16

Используйте определенную numerictype, ntBP, чтобы квантовать input'xInt| к двоичному типу данных с масштабированием точек.

yBP3 = quantize(xInt,ntBP,'Zero')
yBP3=1×9 object
     0     4    -8    -4     0     4    -8    -4     0

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 4

Отображение области значений квантованных выходов.

range(yBP3)
ans=1×2 object
   -8.0000    7.9375

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 4

Первые два и последние три значения упаковываются, потому что они находятся вне представимой области значений выходного типа.

Создайте numerictype ntSB объекта, который задает тип данных смещения наклона.

ntSB = numerictype('Scaling','SlopeBias', ...
      'SlopeAdjustmentFactor',1.8,'Bias',...
      1,'FixedExponent',-12);

Определите вход.

xInt = int8(-16:4:16)
xInt = 1x9 int8 row vector

   -16   -12    -8    -4     0     4     8    12    16

Используйте определенную numerictype, ntSB, чтобы квантовать вход, xInt, к типу данных смещения наклона.

ySB3 = quantize(xInt,ntSB,'Round','Saturate')
ySB3=1×9 object
  Columns 1 through 7
  -13.4000  -11.9814   -7.9877   -3.9939   -0.0002    3.9936    7.9873
  Columns 8 through 9
   11.9811   15.3996

          DataTypeMode: Fixed-point: slope and bias scaling
            Signedness: Signed
            WordLength: 16
                 Slope: 0.000439453125
                  Bias: 1

Отображение области значений квантованных выходов.

range(ySB3)
ans=1×2 object
  -13.4000   15.3996

          DataTypeMode: Fixed-point: slope and bias scaling
            Signedness: Signed
            WordLength: 16
                 Slope: 0.000439453125
                  Bias: 1

Первое и последнее значения насыщаются, потому что они находятся в пределах его представимой области значений выходного типа.

Входные параметры

свернуть все

Входные данные для квантования. Допустимые входы:

  • Встроенные целые числа со знаком или беззнаковые числа (int8, int16, int32, int64, uint8, uint16, uint32, uint64)

  • Двоичная точка с фиксированной точкой fi

  • Масштабирование наклона-смещения с фиксированной точкой fi

Несмотря на то, что fi doubles и fi single разрешены в качестве входов, они проходят через quantize функция без квантования.

Объект типа Numerictype, который задает знак, размер слова и длину дроби номера с фиксированной точкой.

Метод округления для использования

Действие, которое необходимо предпринять, когда происходит переполнение данных

Подписан ли номер с фиксированной точкой (true) или без знака (false)

Размер слова номера с фиксированной точкой

Длина дроби числа с фиксированной точкой

Выходные аргументы

свернуть все

Квантованное значение входа

Вход квантован до масштабированного значения с двоичной точкой

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Представлено до R2006a