Main Content

divide

将两个 fi 对象相除

说明

示例

c = divide(T,a,b)a 的元素除以 b 的元素。结果 c 具有由 numerictype 对象 T 指定的数值类型。

示例

全部折叠

此示例说明如何控制 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 函数时,无论 ab 的精度如何,商都计算到完整的 80 位。因此,fi 对象 c 可比 IEEE® 标准双精度浮点数更精确地表示 1/10。

输入参数

全部折叠

输出的数值类型,指定为 numerictype 对象。

分子,指定为标量、向量、矩阵或多维数组。

输入 ab 的大小必须相同或兼容。有关详细信息,请参阅基本运算的兼容数组大小

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | fi
复数支持:

分母,指定为实数标量、向量、矩阵或多维数组。

输入 ab 的大小必须相同或兼容。有关详细信息,请参阅基本运算的兼容数组大小

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | fi
复数支持:

输出参数

全部折叠

解,以标量、向量、矩阵或多维数组形式返回。

c 的大小由 ab 的维度的隐式扩展决定。有关详细信息,请参阅基本运算的兼容数组大小

算法

全部折叠

如果 ab 均为 fi 对象,则 ca 具有相同的 fimath 对象。如果 c 具有 fi Fixed 数据类型,并且任一输入具有 fi 浮点数据类型,则 fi 浮点值会转换为定点值。使用 afimath 对象计算中间量。

如果 abfi 对象,而另一个为 MATLAB® 内置数值类型,则内置对象会转换为 fi 对象的字长,保留最佳精度小数长度。使用输入 fi 对象的 fimath 对象计算中间量。

如果 ab 均为 MATLAB 内置双精度值,则 c 为浮点商 a./b,并且 numerictype T 将被忽略。

数据类型传播规则

对于 Fixed-Point Designer™ 软件使用 numerictype 对象 T 的语法,divide 函数遵循下表中列出的数据类型传播规则。在大多数情况下传播浮点数据类型。这样,您可以编写同时适用于定点和浮点输入的代码。

输入 fi 对象 a 和 b 的数据类型numerictype 对象 T 的数据类型输出 c 的数据类型

内置 double

内置 double

任一值

内置 double

fi Fixed

fi Fixed

fi Fixed

numerictype 对象 T 的数据类型

fi Fixed

fi Fixed

fi double

fi double

fi Fixed

fi Fixed

fi single

fi single

fi Fixed

fi Fixed

fi ScaledDouble

具有 numerictype 对象 T 的属性的 fi ScaledDouble

fi double

fi double

fi Fixed

fi double

fi double

fi double

fi double

fi double

fi double

fi double

fi single

fi single

fi double

fi double

fi ScaledDouble

fi double

fi single

fi single

fi Fixed

fi single

fi single

fi single

fi double

fi double

fi single

fi single

fi single

fi single

fi single

fi single

fi ScaledDouble

fi single

fi ScaledDouble

fi ScaledDouble

fi Fixed

如果输入 ab 的类型为 fi ScaledDouble,则输出 c 的类型为 fi ScaledDouble,其属性为 numerictype 对象 T

fi ScaledDouble

fi ScaledDouble

fi double

fi double

fi ScaledDouble

fi ScaledDouble

fi single

fi single

fi ScaledDouble

fi ScaledDouble

fi ScaledDouble

如果输入 ab 的类型为 fi ScaledDouble,则输出 c 的类型为 fi ScaledDouble,其属性为 numerictype 对象 T

扩展功能

版本历史记录

在 R2006a 之前推出

全部展开

另请参阅

| | | | | | | |