getFixedPointInfo

Получите слово с фиксированной точкой и длины дроби

Описание

пример

[WLs, FLs] = getFixedPointInfo(cicObj,nt) возвращает все длины слов и длины дробей разделов с фиксированной точкой и выходные данные объектов CIC filter System, dsp.CICDecimator и dsp.CICInterpolator, на основе входа числового типа, nt. Для заблокированных объектов или когда FixedPointDataType свойство разблокированного объекта CIC-фильтра установлено в 'Specify word and fraction lengths', аргумент числового типа входа, nt, опционально.

Примеры

свернуть все

Использование getFixedPointInfo функция, можно определить размеры слова и длины дробей разделов с фиксированной точкой и выход dsp.CICDecimator и dsp.CICInterpolator Системные объекты. Типы данных секций фильтра и выход зависят от FixedPointDataType свойство фильтра System object™.

Полная точность

Создайте dsp.CICDecimator объект. Значение по умолчанию NumSections свойство равно 2. Это значение указывает, что существует две секции интегратора и гребенки. Векторы WL и FL, возвращенные getFixedPointInfo функция содержит пять элементов каждый. Первые два элемента представляют две секции интегратора. Третий и четвертый элементы представляют две гребенчатые секции. Последний элемент представляет выход фильтра.

cicD = dsp.CICDecimator
cicD = 
  dsp.CICDecimator with properties:

      DecimationFactor: 2
     DifferentialDelay: 1
           NumSections: 2
    FixedPointDataType: 'Full precision'

По умолчанию в FixedPointDataType свойство объекта установлено в 'Full precision'. Вызов getFixedPointInfo функция для этого объекта с входом числовым типом, nt, приводит к следующим векторам размера слова и длины дроби.

nt = numerictype(1,16,15)
nt =


          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 15
[WLs,FLs] = getFixedPointInfo(cicD,nt) %#ok
WLs = 1×5

    18    18    18    18    18

FLs = 1×5

    15    15    15    15    15

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

Если вы блокируете cicD объект путем передачи входа в его алгоритм, вам не нужно передавать nt аргумент в getFixedPointInfo функция.

input = int64(randn(8,1))
input = 8x1 int64 column vector

    1
    2
   -2
    1
    0
   -1
    0
    0

output = cicD(input)
output=4×1 object
     0
     1
     3
     0

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 66
        FractionLength: 0

[WLs,FLs] = getFixedPointInfo(cicD) %#ok
WLs = 1×5

    66    66    66    66    66

FLs = 1×5

     0     0     0     0     0

Выходы и размеры слова разделов являются суммой входа размера слова, 64 в этом случае и количеством разделов 2. Длины выхода и дроби сечения равны 0, так как вход является встроенным целым числом.

Минимальные размеры слова разделов

Отпустите объект и измените FixedPointDataType свойство к 'Minimum section word lengths'. Определите информацию о сечении и выходе с фиксированной точкой, когда вход является данными с фиксированной точкой, fi(randn(8,2),1,24,15).

release(cicD);
cicD.FixedPointDataType = 'Minimum section word lengths'
cicD = 
  dsp.CICDecimator with properties:

      DecimationFactor: 2
     DifferentialDelay: 1
           NumSections: 2
    FixedPointDataType: 'Minimum section word lengths'
      OutputWordLength: 32

inputF = fi(randn(8,2),1,24,15)
inputF=8×2 object
    3.5784   -0.1241
    2.7694    1.4897
   -1.3499    1.4090
    3.0349    1.4172
    0.7254    0.6715
   -0.0630   -1.2075
    0.7148    0.7172
   -0.2050    1.6302

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 24
        FractionLength: 15

[WLs, FLs] = getFixedPointInfo(cicD,numerictype(inputF)) %#ok
WLs = 1×5

    26    26    26    26    32

FLs = 1×5

    15    15    15    15    21

Задайте длины слова и дроби

Измените FixedPointDataType свойство к 'Specify word and fraction lengths'. Определите информацию о фиксированной точке с помощью getFixedPointInfo функция.

cicD.FixedPointDataType = 'Specify word and fraction lengths'
cicD = 
  dsp.CICDecimator with properties:

          DecimationFactor: 2
         DifferentialDelay: 1
               NumSections: 2
        FixedPointDataType: 'Specify word and fraction lengths'
        SectionWordLengths: [16 16 16 16]
    SectionFractionLengths: 0
          OutputWordLength: 32
      OutputFractionLength: 0

[WLs, FLs] = getFixedPointInfo(cicD,numerictype(inputF)) %#ok
WLs = 1×5

    16    16    16    16    32

FLs = 1×5

     0     0     0     0     0

Сечение и выход размеров слова и длины дробей назначаются согласно соответствующим свойствам с фиксированной точкой cicD объект. Эти значения не определяются входом числовым типом. Чтобы подтвердить, вызовите getFixedPointInfo функция без прохождения numerictype входной параметр.

[WLs, FLs] = getFixedPointInfo(cicD) %#ok
WLs = 1×5

    16    16    16    16    32

FLs = 1×5

     0     0     0     0     0

Задайте размеры слова

Чтобы задать размеры слова раздела фильтра и вывода, установите FixedPointDataType свойство к 'Specify word lengths'.

cicD.FixedPointDataType = 'Specify word lengths'
cicD = 
  dsp.CICDecimator with properties:

      DecimationFactor: 2
     DifferentialDelay: 1
           NumSections: 2
    FixedPointDataType: 'Specify word lengths'
    SectionWordLengths: [16 16 16 16]
      OutputWordLength: 32

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

[WLs, FLs] = getFixedPointInfo(cicD,numerictype(inputF))
WLs = 1×5

    16    16    16    16    32

FLs = 1×5

     5     5     5     5    21

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

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

свернуть все

CIC-фильтр Системного объекта, заданный как dsp.CICDecimator или dsp.CICInterpolator Системный объект.

Числовой тип входных данных, заданный как a numerictype (Fixed-Point Designer) объект. Задайте этот вход, когда системный объект разблокирован и FixedPointDataType свойство CIC-фильтра установлено в 'Full precision', 'Minimum section word lengths', или 'Specify word lengths'. Если на FixedPointDataType для свойства задано значение 'Specify word and fraction lengths'длина слова и дроби секций фильтра и выход задаются через параметры объекта. В этом случае nt вход опциональен. Кроме того, если объект заблокирован, данные с фиксированной точкой, входом к объекту, задают вход размера слова и длину дроби. The nt аргумент в этом случае также является необязательным.

Пример: численный тип (1,16,15)

Пример: Вход = fi (randn (16,1), 1,32,30); численный тип (вход)

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

свернуть все

Секция и выходы размеров слова, возвращенные как вектор-строка. Первые 2 × NumSections элементы в векторе-строке соответствуют размерам слова интегратора и гребенчатых секций CIC-фильтра. Значение NumSections свойство задает количество разделов в части интегратора или гребенчатой части фильтра. Последний элемент в векторе соответствует размеру слова выхода объекта.

Размеры слова разделов CIC-фильтра и выхода объекта зависят от FixedPointDataType свойство объекта CIC-фильтра.

Полная точность

Когда FixedPointDataType свойство объекта CIC-фильтра установлено в 'Full precision'раздел и выход размеров слова вычисляются с помощью следующего уравнения:

WLsection=WLinput+NumSectWLoutput=WLinput+NumSect

где,

  • WL раздел -- Размер слова в разделе CIC-фильтра.

  • WL выход - Размер слова выходных данных.

  • WL вход -- Размер слова входных данных.

  • NumSect - Количество секций CIC-фильтра, заданное через NumSections свойство.

Для заблокированных объектов WL вход наследуется от входных данных, которые вы передаете в алгоритм объекта. Для разблокированных объектов WL вход наследуется от nt аргумент.

Минимальные размеры слова разделов

Когда FixedPointDataType для свойства задано значение 'Minimum section word lengths', размер слова раздела задаётся следующим уравнением:

WLsection=WLinput+NumSect

Выход размера слова является значением, в котором вы задаете OutputWordLength свойство объекта CIC-фильтра.

Задайте длины слова и дроби

Когда FixedPointDataType для свойства задано значение 'Specify word and fraction lengths', размеры слова сечения и выхода размера слова являются значениями, которые вы задаете в SectionWordLengths и OutputWordLength свойства объекта CIC-фильтра.

Задайте размеры слова

Когда FixedPointDataType для свойства задано значение 'Specify word lengths', сечение размеров слова и выхода размера слова являются значениями, которые вы задаете в SectionWordLengths и OutputWordLength свойства объекта CIC-фильтра.

Пример: [20 20 20 20 20]

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

Длина сечения и выхода фракции, возвращенная как вектор-строка. Первые 2 × NumSections элементы в векторе-строке соответствуют длинам дробей интегратора и гребенчатых секций CIC-фильтра. Значение NumSections свойство задает количество разделов в части интегратора или гребенчатой части фильтра. Последний элемент в векторе соответствует длине дроби выхода объекта.

Длина дроби секций CIC-фильтра и выход объекта зависят от FixedPointDataType свойство объекта CIC-фильтра.

Полная точность

Когда FixedPointDataType свойство объекта CIC-фильтра установлено в 'Full precision'длины сечения и выходной фракции вычисляются с помощью следующего уравнения:

FLsection=WLsection(WLinputFLinput+NumSect)FLoutput=WLoutput(WLinputFLinput+NumSect)

Для входов встроенных целочисленных типов данных длины сечения и выходной дроби 0.

Минимальные размеры слова разделов

Когда FixedPointDataType свойство объекта CIC-фильтра установлено в 'Minimum section word lengths', длины сечения и выходной фракции, FL сечения и FL выход заданы следующим уравнением:

FLsection=WLsection(WLinputFLinput+NumSect)FLoutput=WLoutput(WLinputFLinput+NumSect)

Для входов встроенных целочисленных типов данных длины сечения и выходной дроби 0.

Задайте длины слова и дроби

Когда FixedPointDataType свойство объекта CIC-фильтра установлено в 'Specify word and fraction lengths', длины сечения и выходной дроби являются значениями, которые вы задаете в SectionFractionLengths и OutputFractionLength свойства.

Задайте размеры слова

Когда FixedPointDataType свойство объекта CIC-фильтра установлено в 'Specify word lengths', длины сечения и выходной фракции, FL сечения и FL выход заданы следующим уравнением:

FLsection=WLsection(WLinputFLinput+NumSect)FLoutput=WLoutput(WLinputFLinput+NumSect)

Пример: [12 12 12 12 12]

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

Ссылки

[1] Hogenauer, E.B. «Economical Class of Цифровые Фильтры for Decimation and Interpolation». Транзакции IEEE по акустике, обработке речи и сигналов. Том 29, Число 2, 1981, 155-162.

[2] Meyer-Baese, U. Digital Signal Processing with Field Programmable Gate Arrays. Нью-Йорк: Спрингер, 2001.

[3] Harris, Fredric J. Multirate Signal Processing for Communication Systems. Индианаполис, IN: Prentice Hall PTR, 2004.

См. также

Функции

Объекты

Введенный в R2018a