Разделите два 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
Поддержка комплексного числа: Да
Если 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 | Тип данных Объекта numerictype T | Тип данных Выхода c | |
---|---|---|---|
Встроенный | Встроенный | Любой | Встроенный |
|
|
| Тип данных |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| fi
single |
|
|
|
|
|
|
|
|
|
|
|
|
| Если любой вход |
|
|
|
|
|
|
|
|
|
|
| Если любой вход |
Указания и ограничения по применению:
Любой non-fi
введите должно быть постоянным; то есть, его значение должно быть известно во время компиляции так, чтобы это могло быть брошено к fi
объект.
Комплексные и мнимые делители не поддерживаются.
Генерация кода не поддерживает синтаксис T.divide(a,b)
.
Для генерации HDL-кода делитель должен быть константой и степенью двойки.
Non-fi
входные параметры должны быть постоянными; то есть, их значения должны быть известны во время компиляции так, чтобы они могли быть брошены к fi
объекты.
Комплексные и мнимые делители не поддерживаются.
Генерация кода в MATLAB не поддерживает синтаксис T.divide(a,b)
.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.