主要内容

确定QR分解的定点类型

这个例子展示了如何使用fixed.qrFixedpointTypes分析确定QR分解计算的定点类型。

定义矩阵维度

指定矩阵中的行数 一个 而且 B ,表示矩阵中的列数 一个 ,和矩阵中的列数 B .这个例子设置了 B 使单位矩阵的行数与 一个

M = 10;矩阵A和B中的行数%N = 3;矩阵A中的列数

生成矩阵A和B

使用helper函数realUniformRandomArray生成一个随机矩阵 一个 这样的元素 一个 之间 - 1 而且 + 1 .矩阵 B 是单位矩阵。

rng (“默认”) A = fixed.example.realUniformRandomArray(-1,1,m,n);B =眼睛(m);

选择定点类型

使用fixed.qrFixedpointTypes为矩阵选择定点数据类型 一个 而且 B 保证在转换过程中不会发生溢流 一个 就地来 R 一个 而且 B 就地来 C B

max_abs_A = 1;max(A(:))的上限max_abs_B = 1;max(B(:))的上限precisionBits = 24;%精度位数T = fixed.qrFixedpointTypes(m,max_abs_A,max_abs_B,precisionBits)
T =带字段的结构:答:[0x0嵌入。B: [0x0 embedded.fi]

T.A是否为转换计算类型 一个 R 一个 放置到位,以免溢出。

T.A
ans = [] DataTypeMode: Fixed-point: binary point scaling signdness: Signed WordLength: 29 FractionLength: 24

肺结核是否为转换计算类型 B C B 放置到位,以免溢出。

肺结核
ans = [] DataTypeMode: Fixed-point: binary point scaling signdness: Signed WordLength: 29 FractionLength: 24

使用指定类型计算QR分解

将输入转换为所确定的类型fixed.qrFixedpointTypes

A = cast(A,“喜欢”, T.A);B = cast(B,“喜欢”、肺结核);

加速fixed.qrAB通过使用fiaccel生成MATLAB可执行(MEX)函数。

fiaccelfixed.qrABarg游戏{A、B}- oqrAB_mex

计算QR分解。

[C,R] = qrAB_mex(A,B);

提取经济规模的Q

这个函数fixed.qrAB转换 一个 R 一个 而且 B C B .在这个例子中, B 是单位矩阵吗 C 为QR分解的经济规模正交因子。

Q = c ';

验证Q是正交的,R是上三角的

正交,所以 是舍入误差范围内的单位矩阵。

I = q '* q
I = 1.0000 -0.0000 -0.0000 -0.0000 1.0000 -0.0000 -0.0000 1.0000 DataTypeMode:定点:二进制点缩放signness: Signed WordLength: 62 FractionLength: 48

R 是一个上三角矩阵。

R
R = 2.2180 0.8559 -0.5607 0 2.0578 -0.4017 0 0 1.7117 DataTypeMode:定点:二进制点缩放signdness: Signed WordLength: 29 FractionLength: 24
isequal (R, triu (R))
ans =逻辑1

验证输出的准确性

评价的准确性fixed.qrAB函数,计算相对误差。

相对误差= norm(double(Q*R - A))/norm(double(A))
Relative_error = 1.5886e-06

抑制mlint警告。

% #好< * NOPTS >

另请参阅

功能