квантовать

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

Синтаксис

y = quantize(x)
y = quantize(x,nt)
y = quantize(x,nt,rm)
y = quantize(x,nt,rm,oa)
yBP = quantize(x,s)
yBP = quantize(x,s,wl)
yBP = quantize(x,s,wl,fl)
yBP = quantize(x,s,wl,fl,rm)
yBP = quantize(x,s,wl,fl,rm,oa)

Описание

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 = 
    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 = 
    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 = 
    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 = 
    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 = 
     0     4    -8    -4     0     4    -8    -4     0

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

Покажите область значений квантованного вывода.

range(yBP3)
ans = 
   -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 = 
  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 = 
  -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 удваивается, и fi одиночные игры позволены как входные параметры, они проходят через функцию quantize без того, чтобы быть квантованным.

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

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

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

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

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

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

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

свернуть все

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

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

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

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

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