quantizer

Создайте quantizer объект

Описание

quantizer объект описывает свойства типа данных использовать для квантования. После того, как вы создаете quantizer объект, использовать quantize квантовать данные с двойной точностью. Можно использовать quantizer объект симулировать пользовательские типы данных с плавающей точкой с произвольным размером слова и длиной экспоненты.

Создание

Описание

пример

q = quantizer создает quantizer объект с набором свойств к их значениям по умолчанию. Чтобы использовать этот объект квантовать значения, используйте quantize.

пример

q = quantizer(Name,Value) наборы назвали свойства с помощью аргументов name-value. Можно задать несколько аргументов name-value. Заключите каждое имя свойства в одинарные кавычки.

пример

q = quantizer(Value1,Value2) свойства наборов с помощью значений свойств. Значения свойств уникальны; можно установить имена свойства путем определения только значений свойств в команде. Когда два значения конфликтуют, quantizer устанавливает последнее значение свойства в списке.

пример

q = quantizer(s) свойства наборов, названные в каждом имени поля со значениями, содержавшимися в структуре s.

пример

q = quantizer(pn,pv) устанавливает именованные свойства, заданные в массиве ячеек из символьных векторов pn к соответствующим значениям в массиве ячеек pv.

Можно использовать комбинацию аргументов строки значения имени, структур и аргументов массива ячеек значения имени, чтобы установить значения свойств при создании quantizer объект.

Свойства

развернуть все

Режим типа данных использовал в квантовании в виде одного из этих значений:

  • 'fixed' — Режим фиксированной точки со знаком.

  • 'ufixed' — Режим фиксированной точки без знака.

  • 'float' — Пользовательская точность режим с плавающей точкой.

  • 'single' — Режим с одинарной точностью. Этот режим заменяет все другие настройки свойства.

  • 'double' — Режим с двойной точностью. Этот режим заменяет все другие настройки свойства.

Типы данных: char | struct | cell

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

  • 'ceil' — Окружите к следующему допустимому квантованному значению.

  • 'convergent' — Вокруг к самому близкому допустимому квантованному значению. Числа, которые являются точно промежуточными между двумя самыми близкими допустимыми квантованными значениями, окружены, только если младший значащий бит после округления был бы установлен в 0.

  • 'fix' — Округлите в большую сторону отрицательные числа и положительные числа вниз к следующему допустимому квантованному значению.

  • 'floor' — Округлите в меньшую сторону до следующего допустимого квантованного значения.

  • 'nearest' — Вокруг к самому близкому допустимому квантованному значению. Окружены числа, которые являются промежуточными между двумя самыми близкими допустимыми квантованными значениями.

  • 'round' — Вокруг к самому близкому допустимому квантованному значению. Числа, которые являются промежуточными между двумя самыми близкими допустимыми квантованными значениями, окружены в абсолютном значении.

Типы данных: char | struct | cell

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

  • 'saturate' — Переполнение насыщает.

    Когда значения данных, которые будут квантованы, лежат вне области значений самых больших и самых маленьких представимых чисел, как задано по условию свойства формата, эти значения квантуются к значению или самого большого или наименьшего представимого значения, в зависимости от которого является самым близким.

  • 'wrap' — Переполнение переносится к области значений представимых значений.

    Когда значения данных, которые будут квантованы, лежат вне области значений самых больших и самых маленьких представимых чисел, как задано по условию свойства формата, эти значения перенесены назад в ту область значений с помощью арифметики в остаточных классах относительно самого маленького представимого номера.

Это свойство только применяется к режимам типа данных с фиксированной точкой. Это свойство становится свойством только для чтения, когда вы устанавливаете DataMode свойство к float'double', или single.

Примечание

Числа с плавающей запятой, которые расширяют вне переполнения динамического диапазона к ±Inf.

Типы данных: char | struct | cell

Формат данных quantizer объект. Интерпретация этого значения свойства зависит от значения DataMode свойство.

DataMode Значение свойстваИнтерпретация значений свойства формата
fixed или ufixed

[wordlength fractionlength]

Задайте Format значение свойства как двухэлементный вектор-строка, где первым элементом является количество битов для quantizer объектный размер слова и второй элемент являются количеством битов для quantizer возразите дробной длине.

Размер слова может лежать в диапазоне от 2 до пределов памяти на вашем PC. Дробная длина может лежать в диапазоне от 0 до меньше, чем размер слова.

float

[wordlength exponenetlength]

Задайте Format значение свойства как двухэлементный вектор-строка, где первым элементом является количество битов для quantizer объектный размер слова и второй элемент являются количеством битов для quantizer объектная длина экспоненты.

Размер слова может лежать в диапазоне от 2 до пределов памяти на вашем PC. Дробная длина может лежать в диапазоне от 0 до 11.

double

[64 11]

Format только для чтения значение свойства автоматически задает длина экспоненты и размер слова.

single

[32 8]

Format только для чтения значение свойства автоматически задает длина экспоненты и размер слова.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

quantizer только для чтения Объектные состояния

quantizer только для чтения объектные состояния обновляются когда quantize называется. Чтобы сбросить эти состояния, используйте reset.

Максимальное значение перед квантованием во время вызова quantize(q,…) для quantizer объект q. Это значение является максимальным значением, зарегистрированным по последовательным вызовам quantize.

Пример: max(q)

Пример: q.max

Минимальное значение перед квантованием во время вызова quantize(q,…) для quantizer объект q. Это значение является минимальным значением, зарегистрированным по последовательным вызовам quantize.

Пример: min(q)

Пример: q.min

Количество переполнения во время вызова quantize(q,…) для quantizer объект q. Это значение накапливается по последовательным вызовам quantize. Переполнение задано как значение, которое, когда квантовано находится вне области значений q.

Пример: noverflows(q)

Пример: q.noverflows

Количество потерь значимости во время вызова quantize(q,…) для quantizer объект q. Это значение накапливается по последовательным вызовам quantize. Потеря значимости задана как номер, который является ненулевым, прежде чем она будет квантована и нуль после того, как она квантуется.

Пример: nunderflows(q)

Пример: q.nunderflows

Количество операций квантования во время вызова quantize(q,…) для quantizer объект q. Это значение накапливается по последовательным вызовам quantize.

Пример: noperations(q)

Пример: q.noperations

Функции объекта

quantizeКвантуйте числовые данные с помощью quantizer объект
unitquantizeКвантуйте числовые данные с помощью quantizer объект кроме чисел в eps из +1

Примеры

свернуть все

Создайте quantizer объект со значениями свойств по умолчанию.

q = quantizer
q =


        DataMode = fixed
       RoundMode = floor
    OverflowMode = saturate
          Format = [16  15]

Скопировать quantizer объект, используйте присвоение.

q = quantizer;
r = q;
isequal(q,r)
ans = logical
   1

Используйте аргументы name-value свойства, чтобы установить quantizer свойства объектов.

q = quantizer('Mode','fixed','RoundMode','ceil',... 
'OverflowMode','saturate','Format',[5 4])
q =


        DataMode = fixed
       RoundMode = ceil
    OverflowMode = saturate
          Format = [5  4]

Установите quantizer свойства объектов путем листинга значений свойств только в команде.

q = quantizer('fixed','ceil','saturate',[5 4])
q =


        DataMode = fixed
       RoundMode = ceil
    OverflowMode = saturate
          Format = [5  4]

Используйте структуру, чтобы установить quantizer свойства объектов.

struct.DataMode = 'fixed';
struct.RoundMode = 'ceil';
struct.OverflowMode = 'saturate';
struct.Format = [5 4];
q = quantizer(struct)
q =


        DataMode = fixed
       RoundMode = ceil
    OverflowMode = saturate
          Format = [5  4]

Используйте имя свойства и массивы ячеек значения свойства, чтобы установить quantizer свойства объектов.

pn = {'Mode','RoundMode','Overflowmode','Format'}; 
pv = {'fixed','ceil','saturate',[5 4]}; 
q = quantizer(pn,pv)
q =


        DataMode = fixed
       RoundMode = ceil
    OverflowMode = saturate
          Format = [5  4]

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

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

format long g
rng(0,'twister');
x = rng(100);
q = quantizer([16,14])
q =


        DataMode = fixed
       RoundMode = floor
    OverflowMode = saturate
          Format = [16  14]

Получите значения max и noverflows.

q.max
q.noverflows
ans =

    -1.79769313486232e+308


ans =

     0

Обратите внимание на то, что max равно -realmax, который указывает что квантизатор q находится в состоянии сброса.

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

y = quantize(q,x);
Warning: 625 overflow(s) occurred in the fi quantize operation. 

Проверяйте значения max и noverflows.

q.max
q.noverflows
ans =

          1.99993896484375


ans =

   625

Обратите внимание на то, что максимальное регистрируемое значение было принято после квантования, то есть, q.max == max(y).

Сбросьте и проверяйте quantizer состояния.

reset(q)
q.maxlog
q.noverflows
ans =

    -1.79769313486232e+308


ans =

     0

Смотрите также

| | |

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