abs

Абсолютное значение fi объект

Описание

пример

y = abs(a) возвращает абсолютное значение fi a объекта с тем же numerictype объект как a. Промежуточные величины вычисляются с помощью fimath связана с a. Область выхода fi объект, y, имеет ту же локальную fimath как a.

пример

y = abs(a,T) возвращает fi объект со значением, равным абсолютному значению a и numerictype T объекта. Промежуточные величины вычисляются с помощью fimath связана с a и выходные fi y объекта имеет ту же локальную fimath как a. См. Раздел «Правила распространения типов данных»

пример

y = abs(a,F) возвращает fi объект со значением, равным абсолютному значению a и то же numerictype объект как a. Промежуточные величины вычисляются с помощью fimath F объекта. Область выхода fi объект, y, не имеет локальной fimath.

пример

y = abs(a,T,F) возвращает fi объект со значением, равным абсолютному значению a и numerictype T объекта. Промежуточные величины вычисляются с помощью fimath F объекта. Область выхода fi объект, y, не имеет локальной fimath. См. Раздел «Правила распространения типов данных»

Примеры

свернуть все

Этот пример показывает различие между результатами абсолютного значения для наиболее отрицательного значения, представимого типом данных со знаком, когда 'OverflowAction' для свойства задано значение 'Saturate' или 'Wrap'.

Вычислим абсолютное значение, когда 'OverflowAction' установлено значение по умолчанию 'Saturate'.

P = fipref('NumericTypeDisplay','full',...
           'FimathDisplay','full');
a = fi(-128)
y = abs(a)
a = 

  -128

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

y = 

  127.9961

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

abs возвращает 127.9961, что является результатом насыщения до максимального положительного значения.

Вычислим абсолютное значение, когда 'OverflowAction' установлено в 'Wrap'.

a.OverflowAction = 'Wrap'
y = abs(a)
a = 

  -128

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

        RoundingMethod: Nearest
        OverflowAction: Wrap
           ProductMode: FullPrecision
               SumMode: FullPrecision

y = 

  -128

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

        RoundingMethod: Nearest
        OverflowAction: Wrap
           ProductMode: FullPrecision
               SumMode: FullPrecision

abs возвращает 128, что является результатом переноса назад к наиболее отрицательному значению.

Этот пример показывает различие между результатами абсолютных значений для комплексных и вещественных fi входы, которые имеют самое отрицательное значение, представимое типом данных со знаком, когда 'OverflowAction' для свойства задано значение 'Wrap'.

Задайте сложную fi объект.

re = fi(-1,1,16,15);
im = fi(0,1,16,15);
a = complex(re,im)
a = 

  -1.0000 + 0.0000i

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

a является комплексным, но численно равным вещественной части, re.

Вычислим абсолютное значение комплексного fi объект.

y = abs(a,re.numerictype,fimath('OverflowAction','Wrap'))
y = 

    1.0000

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

Вычислим абсолютное значение реального fi объект.

y = abs(re,re.numerictype,fimath('OverflowAction','Wrap'))
y = 

    -1

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

В этом примере показано, как задать numerictype и fimath объекты как необязательные аргументы для управления результатом abs функция для действительных входов. Когда вы задаете fimath объект как аргумент, который fimath объект используется для вычисления промежуточных величин и полученных fi объект не имеет локальной fimath.

a = fi(-1,1,6,5,'OverflowAction','Wrap');
y = abs(a)
y = 

    -1

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 6
        FractionLength: 5

        RoundingMethod: Nearest
        OverflowAction: Wrap
           ProductMode: FullPrecision
               SumMode: FullPrecision

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

F = fimath('OverflowAction','Saturate');
y = abs(a,F)
y = 

    0.9688

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 6
        FractionLength: 5

Возвращенный fi объект насыщается до значения 0.9688 и имеет ту же numerictype объект как вход.

Потому что выход abs всегда ожидается, что он будет положительным, беззнаковым numerictype может быть задано для выхода.

T = numerictype(a.numerictype, 'Signed', false);
y = abs(a,T,F)
y = 

     1

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 6
        FractionLength: 5

Установка неподписанного numerictype обеспечивает лучшую точность.

В этом примере показано, как задать numerictype и fimath объекты как необязательные аргументы для управления результатом abs функция для комплексных входов.

Задайте numerictype введите и вычислите абсолютное значение a.

a = fi(-1-i,1,16,15,'OverflowAction','Wrap');
T = numerictype(a.numerictype,'Signed',false);
y = abs(a,T)
y = 

    1.4142

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 16
        FractionLength: 15

        RoundingMethod: Nearest
        OverflowAction: Wrap
           ProductMode: FullPrecision
               SumMode: FullPrecision

A fi объект возвращается со значением 1.4142 и указанный беззнаковый numerictype. The fimath используется для промежуточного вычисления и fimath выходных выходов те же, что и входов.

Теперь задайте fimath объект отличается от объекта a.

F = fimath('OverflowAction','Saturate','SumMode',...
        'KeepLSB','SumWordLength',a.WordLength,...
        'ProductMode','specifyprecision',...
        'ProductWordLength',a.WordLength,...
        'ProductFractionLength',a.FractionLength);
y = abs(a,T,F)
y = 

    1.4142

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Unsigned
            WordLength: 16
        FractionLength: 15

Заданное fimath объект используется для промежуточного вычисления. The fimath сопоставлен с выходом по умолчанию fimath.

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

свернуть все

Входные fi массив, заданный как скалярный, векторный, матричный или многомерный массив.

abs поддерживает только fi объекты с тривиальным масштабированием [Смещение Откоса], то есть, когда смещение 0 и дробный уклон 1.

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

Типы данных: fi
Поддержка комплексного числа: Да

numerictype от выхода fi y объекта, заданный как numerictype объект. Для получения дополнительной информации см. раздел «Правила распространения типов данных».

Пример: T = numerictype(0,24,12,'DataType','Fixed')

Математические настройки с фиксированной точкой для вычисления абсолютного значения, заданные как fimath объект.

Пример: F = fimath('OverflowAction','Saturate','RoundingMethod','Convergent')

Алгоритмы

свернуть все

Абсолютное значение

Абсолютное значение вещественного числа является соответствующим неотрицательным значением, которое игнорирует знак.

Для действительного входа, a, абсолютное значение, yявляется:

y = a если a >= 0(1)
y = - a если a < 0(2)

abs(-0) возвращает 0.

Примечание

Когда fi a объекта является реальным и имеет тип данных со знаком, абсолютное значение наиболее отрицательного значения проблематично, поскольку оно не представимо. В этом случае абсолютное значение достигает наиболее положительного значения, представимого типом данных, если 'OverflowAction' для свойства задано значение 'Saturate'. Если 'OverflowAction' является 'Wrap'абсолютное значение самого отрицательного значения не имеет никакого эффекта.

Для комплексного входа, a, абсолютное значение, y, связано с его реальной и мнимой частями следующим образом:

y = sqrt(real(a)*real(a) + imag(a)*imag(a)) (3)

abs функция вычисляет абсолютное значение комплексного входа, a, следующим образом:

  1. Вычислим действительную и мнимую части a.

    re = real(a)(4)
    im = imag(a)(5)

  2. Вычислите квадраты re и im использование одного из следующих объектов:

    • The fimath F объекта если F задается как аргумент.

    • The fimath связана с a если F не задан как аргумент.

  3. Если вход подписан, приведите квадраты re и im к неподписанным типам.

  4. Добавьте квадраты re и im использование одного из следующих объектов:

    • The fimath F объекта если F задается как аргумент.

    • The fimath объект, сопоставленный с a если F не задан как аргумент.

  5. Вычислите квадратный корень суммы, вычисленной на шаге 4, используя sqrt функция со следующими дополнительными аргументами:

    • The numerictype T объекта если T задан, или numerictype объект a в противном случае.

    • The fimath F объекта если F задан, или fimath объект, сопоставленный с a в противном случае.

Примечание

Шаг 3 препятствует отрицательной сумме квадратов действительных и мнимых компонентов. Это важно, потому что если либо re или im имеет максимальное отрицательное значение и 'OverflowAction' для свойства задано значение 'Wrap' тогда при взятии квадратного корня на шаге 5 произойдет ошибка.

Правила распространения типов данных

Для синтаксисов, для которых вы задаете numerictype T объекта, abs функция выполняется в соответствии с правилами распространения типов данных, приведенными в следующей таблице. В целом эти правила могут быть суммированы как «типы данных с плавающей точкой распространяются». Это позволяет вам записать код, который может использоваться как с входами с фиксированной точкой, так и с плавающей точкой.

Тип данных Входов fi Объектные aТип данных numerictype T объектаТип данных Выходов y

fi Fixed

fi Fixed

Тип данных numerictype T объекта

fi ScaledDouble

fi Fixed

ScaledDouble со свойствами numerictype T объекта

fi double

fi Fixed

fi double

fi single

fi Fixed

fi single

Любой fi тип данных

fi double

fi double

Любой fi тип данных

fi single

fi single

Примечание

Когда Signedness от входа numerictype T объекта является Auto, а abs функция всегда возвращает Unsigned fi объект.

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

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

.

См. также

| |

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