确定QR分解的定点类型
这个例子展示了如何使用fixed.qrFixedpointTypes
分析确定QR分解计算的定点类型。
定义矩阵维度
指定矩阵中的行数 而且 ,表示矩阵中的列数 ,和矩阵中的列数 .这个例子设置了 使单位矩阵的行数与 .
M = 10;矩阵A和B中的行数%N = 3;矩阵A中的列数
生成矩阵A和B
使用helper函数realUniformRandomArray
生成一个随机矩阵
这样的元素
之间
而且
.矩阵
是单位矩阵。
rng (“默认”) A = fixed.example.realUniformRandomArray(-1,1,m,n);B =眼睛(m);
选择定点类型
使用fixed.qrFixedpointTypes
为矩阵选择定点数据类型
而且
保证在转换过程中不会发生溢流
就地来
而且
就地来
.
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
是否为转换计算类型
来
放置到位,以免溢出。
T.A
ans = [] DataTypeMode: Fixed-point: binary point scaling signdness: Signed WordLength: 29 FractionLength: 24
肺结核
是否为转换计算类型
来
放置到位,以免溢出。
肺结核
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
转换
来
而且
来
.在这个例子中,
是单位矩阵吗
为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 = 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 >