exponenta event banner

брюшной пресс

Абсолютное значение 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. 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