Абсолютное значение 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,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: 8abs возвращает 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: FullPrecisionabs возвращает 128, что является результатом переноса назад к наиболее отрицательному значению.
fi Исходные данныеЭтот пример показывает различие между результатами абсолютных значений для комплексных и вещественных 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: 15a является комплексным, но численно равным вещественной части, 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: 15numerictype и fimath Входы для управления результатом abs для действительных входовВ этом примере показано, как задать 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 и 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: FullPrecisionA 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.
a - Входные fi массивВходные fi массив, заданный как скалярный, векторный, матричный или многомерный массив.
abs поддерживает только fi объекты с тривиальным масштабированием [Смещение Откоса], то есть, когда смещение 0 и дробный уклон 1.
abs использует другой алгоритм для действительных и сложных входов. Для получения дополнительной информации см. «Абсолютное значение».
Типы данных: fi
Поддержка комплексного числа: Да
T — numerictype от выходаnumerictype объектnumerictype от выхода fi y объекта, заданный как numerictype объект. Для получения дополнительной информации см. раздел «Правила распространения типов данных».
Пример: T = numerictype(0,24,12,'DataType','Fixed')
F - Математические настройки с фиксированной точкой для использованияfimath объектМатематические настройки с фиксированной точкой для вычисления абсолютного значения, заданные как 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, следующим образом:
Вычислим действительную и мнимую части a.
re = real(a) | (4) |
im = imag(a) | (5) |
Вычислите квадраты re и im использование одного из следующих объектов:
The fimath F объекта если F задается как аргумент.
The fimath связана с a если F не задан как аргумент.
Если вход подписан, приведите квадраты re и im к неподписанным типам.
Добавьте квадраты re и im использование одного из следующих объектов:
The fimath F объекта если F задается как аргумент.
The fimath объект, сопоставленный с a если F не задан как аргумент.
Вычислите квадратный корень суммы, вычисленной на шаге 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 |
|---|---|---|
|
| Тип данных |
|
|
|
|
|
|
|
|
|
Любой |
|
|
Любой |
|
|
Примечание
Когда Signedness от входа numerictype T объекта является Auto, а abs функция всегда возвращает Unsigned
fi объект.
Типы double и комплексные данные не поддерживаются.
fi | fimath | numerictype
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.