文档

单精度数学

这个例子展示了如何用单一精度的数据执行算术和线性代数。它还显示了如何在单精度或双精度下适当地计算结果,这取决于输入。

创建双精度数据

让我们首先创建一些默认为双精度的数据。

Ad = [1 2 0;2 5 1;4 10 1]
广告=3×31 2 0 2 5 -1 4 10 -1

转换为单精度

可以将数据转换为单精度函数。

一个=(广告);% or A = cast(Ad,'single');

创建单个精度0和1

我们还可以用它们各自的函数创建单个精度0和1。

n = 1000;Z = 0 (n, 1“单一”);O = (n, 1,“单一”);

让我们看看工作空间中的变量。

一个广告OZn
Name Size Bytes Class Attributes A 3x3 36 single Ad 3x3 72 double O 1000x1 4000 single Z 1000x1 4000 single n 1x1 8 double

我们可以看到有些变量是type类型的这个变量一个(单精度版广告)需要存储一半的内存字节,因为单个只需要4个字节(32位),而双精度需要8个字节(64位)。

算术与线性代数

我们可以在单结点上进行标准算术和线性代数运算。

B =“%矩阵的转置
B =3 x3单一矩阵1 2 4 2 5 10 0 -1 -1
B
名称大小字节类属性B 3x3 36单一

我们看到了这个操作的结果,B,是单人间。

C = a * b%矩阵乘法
C =3 x3单一矩阵5 12 24 12 30 59 24 59 117
C = a .* b% Elementwise算术
C =3 x3单一矩阵1 4 0 4 25 -10 0 -10
X =发票(A)%反矩阵
X =3 x3单一矩阵5 2 -2 -1 1 0 -2 1
I = inv(A) * A%确认结果为单位矩阵
我=3 x3单一矩阵1 0 0 0 1 0 0 0 1
I = a \ a做矩阵除法的方法比inv好
我=3 x3单一矩阵1 0 0 0 1 0 0 0 1
E = eig (A)%特征值
E =3x1单列向量3.7321 0.2679 1.0000
F = fft ((: 1))% FFT
F =3x1单列向量7.0000 + 0.000 i -2.000 + 1.7321i -2.000 - 1.7321i
S =圣言(A)奇异值分解%
S =3x1单列向量12.3171 0.5149 0.1577
P =圆(poly (A))矩阵的特征多项式
P =1x4单行向量1 -5 5 -1
R =根(P)多项式的根
R =3x1单列向量3.7321 1.0000 0.2679
Q = conv (P, P)%卷积两个向量
Q =1x7单行向量1 -10 35 -52 35 -10
R = conv (P, Q)
R =1x10单行向量1 -15 90 -278 480 -480 278 -90 15 -1
阀杆(右);%绘制结果

适用于单精度或双精度的程序

现在让我们看一个函数来计算斐波那契数列中的足够项,使比率小于正确的机器(每股收益)的数据类型为单或双。

需要多少项才能得到单精度结果?fibodemo (“单一”
ans = 19
需要多少项才能得到双精度结果?fibodemo (“双”
ans = 41
现在让我们看看工作代码。类型fibodemo
function nterms = fibodemo(dtype) % fibodemo用于SINGLEMATH演示。%计算斐波那契数列的项数。% Copyright 1984-2014 The MathWorks, Inc. fcurrent = ones(dtype);fnext =活动;goldenMean = ((dtype) + sqrt (5)) / 2;托尔=每股收益(goldenMean);nterms = 2;while abs(fnext/fcurrent - goldenMean) >= tol nterms = nterms + 1;temp = fnext;Fnext = Fnext + current; fcurrent = temp; end
注意,我们初始化了几个变量,% |fnext|和|goldenMean|,其值依赖于%输入数据类型,|到|的公差取决于该类型%。单精度要求我们计算的项少于%等效双精度计算。
这个话题有用吗?