Разделите два fi
объекты
Этот пример показывает, как контролировать точность divide
функция.
Создайте беззнаковое fi
объект с 80-битным размером слова и 2 ^ -83 масштабированием, что помещает начальный 1 из представления в самый значительный бит. Инициализируйте объект со значением 0,1 и исследуйте двоичное представление.
P = fipref('NumberDisplay', 'bin',... 'NumericTypeDisplay', 'short',... 'FimathDisplay', 'none'); a = fi(0.1, 0, 80, 83)
a = 11001100110011001100110011001100110011001100110011010000000000000000000000000000 numerictype(0,80,83)
Заметьте, что бесконечное повторяющееся представление обрезается после 52 битов, потому что мантисса стандартного числа с плавающей запятой IEEE ® имеет 52 бита.
Контрастируйте вышесказанное с вычислением 1/10 в арифметике с фиксированной точкой с частным набором на тот же числовой тип, что и ранее.
T = numerictype('Signed', false,... 'WordLength', 80,... 'FractionLength', 83); a = fi(1); b = fi(10); c = divide(T, a, b); c.bin
ans = '11001100110011001100110011001100110011001100110011001100110011001100110011001101'
Заметьте, что, когда вы используете divide
функция, частное вычисляется до полных 80 бит, независимо от точности a
и b
. Таким образом, fi
c объекта
представляет 1/10 точнее, чем может стандартное число с плавающей запятой IEEE ® с двойной точностью.
T
- Числовой тип выходаnumerictype
объектЧисловой тип выхода, заданный как a numerictype
объект.
a
- ЧислительЧислитель, заданный как скалярный, векторный, матричный или многомерный массив.
a
и b
должны иметь одинаковые размерности, если только он не является скаляром. Если либо a
или b
скаляром, тогда c
имеет размерности нескалярного объекта.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| fi
Поддержка комплексного числа: Да
b
- ЗнаменательЗнаменатель, заданный как действительный скаляр, вектор, матрица или многомерный массив.
a
и b
должны иметь одинаковые размерности, если только он не является скаляром. Если либо a
или b
скаляром, тогда c
имеет размерности нескалярного объекта.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| fi
Поддержка комплексного числа: Да
c
- Частный коэффициентЕсли a
и b
являются ли оба fi
объекты, c
имеет то же fimath
объект как a
. Если c
имеет fi
Fixed
тип данных, и любой из входов имеет fi
типы данных с плавающей точкой, затем fi
с плавающей точкой преобразуется в значение с фиксированной точкой. Промежуточные величины вычисляются с помощью fimath
объект a
.
Если либо a
или b
является fi
объект, а другой - MATLAB® встроенный числовой тип, затем встроенный объект приведен к размеру слова fi
объект, сохраняющий лучшую точность длины дроби. Промежуточные величины вычисляются с помощью fimath
объект входного fi
объект.
Если a
и b
оба MATLAB встроены в двойной точности, затем c
является частным элементом с плавающей точкой a./b
, и numerictype
T
игнорируется.
Для синтаксисов, для которых программное обеспечение Fixed-Point Designer™ использует numerictype
T объекта
, а divide
функция выполняется в соответствии с правилами распространения типов данных, приведенными в следующей таблице. В большинстве случаев распространяются типы данных с плавающей точкой. Это позволяет вам записать код, который может использоваться как с входами с фиксированной точкой, так и с плавающей точкой.
Тип данных входных объектов fi a и b | Тип данных числового типа объекта T | Тип данных выхода c | |
---|---|---|---|
Встроенные | Встроенные | Любой | Встроенные |
|
|
| Тип данных |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| fi
single |
|
|
|
|
|
|
|
|
|
|
|
|
| Если все входные |
|
|
|
|
|
|
|
|
|
|
| Если все входные |
Указания и ограничения по применению:
Любые не- fi
вход должен быть постоянным; то есть его значение должно быть известно во время компиляции, чтобы можно было привести к fi
объект.
Комплексные и мнимые делители не поддерживаются.
Генерация кода не поддерживает синтаксис T.divide(a,b)
.
Для генерации HDL-кода делитель должен быть константой и степенью двойки.
Не- fi
входы должны быть постоянными; то есть их значения должны быть известны во время компиляции, чтобы их можно было перенести в fi
объекты.
Комплексные и мнимые делители не поддерживаются.
Генерация кода в MATLAB не поддерживает синтаксис T.divide(a,b)
.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.