quantize

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

Описание

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

  • numerictype (true,16,15)

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

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

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

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 к двоичной точке, масштабируемому номеру фиксированной точки. 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

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

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

свернуть все

Входные данные, чтобы квантовать. Допустимые входные параметры:

  • Встроенные целые числа со знаком или беззнаковое целое (int8int16int32int64uint8uint16uint32uint64)

  • Двоичная точка масштабировала фиксированную точку fi

  • Наклонное смещение масштабировало фиксированную точку fi

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

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

Округление метода, чтобы использовать

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

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

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

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

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

свернуть все

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

Введите квантованный к масштабируемому значению двоичной точки

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

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

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