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

fi объект возвращен со значением 1.4142 и заданный numerictype без знака. 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 объект используется для промежуточного вычисления. 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 использование одного из следующих объектов:

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

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

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

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

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

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

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

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

    • 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++ с помощью MATLAB® Coder™.

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

| |

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