主要内容

实现Hardware-Efficient复杂的破裂QR分解

这个例子展示了如何实现一个hardware-efficient QR分解使用QR分解复杂的破裂块。

经济规模QR分解

复杂的破裂QR分解块执行的第一步解决最小二乘矩阵方程AX = B转换一个就地R和B就地C = Q ' B,然后解决了转换系统RX = C, QR的orthogonal-triangular分解。

计算独立QR分解,这个例子集B单位矩阵,这样复杂的输出破裂QR分解块上三角R和C =问”。

定义矩阵维度

指定在A和B矩阵的行数,列数的矩阵A, B和矩阵的列数。这个例子集B是单位矩阵的行数相同的大小。

m = 10;%的行数矩阵A和Bn = 3;%的列数矩阵Ap = m;%的列数矩阵B

生成矩阵A和B

使用辅助函数complexUniformRandomArray生成一个随机矩阵的实部和虚部- 1和+ 1之间的元素,和一个满秩。矩阵B是单位矩阵。

rng (“默认”)= fixed.example.complexUniformRandomArray (1, 1, m, n);B =眼(m);

选择定点数据类型

使用辅助函数qrFixedpointTypes选择定点数据类型矩阵A和B,保证没有溢出的转换将发生在就地R C和B就地=问' B。

元素的实部和虚部是1 - 1,因此,最大可能的任何元素的绝对值是sqrt (2)。

max_abs_A = sqrt (2);%上限马克斯(abs ((:))max_abs_B = 1;%上限马克斯(abs (B (:))precisionBits = 24;%的比特数的精度T = fixed.qrFixedpointTypes (m, max_abs_A, max_abs_B precisionBits);一个=投(,“喜欢”,T.A);B =复杂(cast (B,“喜欢”、肺结核));

打开模型

模型=“ComplexBurstQRModel”;open_system(模型);

在这个模型中,数据处理程序子系统需要复杂的矩阵A和B作为输入。它发送行A和B的QR块使用安巴AXI握手协议。的validIn信号表明当数据是可用的。的准备好了信号表示可以接受的数据块。数据传输发生只有当了validIn准备好了信号是高。你可以设置之间的延迟喂养在a和B的行数据处理程序来模拟上游块的处理时间。validIn仍然很高时rowDelay设置为0,因为这表明数据处理程序总是可用的数据。

设置变量在模型中工作区

使用辅助函数setModelWorkspace上面定义的变量添加到模型空间。这些变量对应的块参数复杂破裂QR分解块。

numSamples = 1;%的样本矩阵rowDelay = 1;%之间的时钟周期延迟喂养在成排的A和Bfixed.example.setModelWorkspace(模型,“一个”一个,“B”B“米”米,“n”n“p”、磷、“numSamples”numSamples,“rowDelay”,rowDelay);

模拟模型

= sim(模型);

构建解决方案从输出数据

复杂的破裂QR分解输出数据块一次一行。当一个结果行输出,块集validOut为true。矩阵的行R和C是用倒序输出适应替换回去,所以你必须重建数据解释结果。重建矩阵R和C从输出数据,使用helper函数qrModelOutputToArray

[C R] = fixed.example.qrModelOutputToArray (out.C out.R, m, n, p, numSamples);

提取大包装问

块计算C = Q ' b。在这个例子中,B是单位矩阵,所以Q = C”是大包装正交因素的QR分解。

Q = C ';

验证Q正交和R是上三角

问orothogonal,所以问'Q舍入内的单位矩阵。

我=问' * Q
我-0.0000 = 1.0000 + 0.0000 + 0.0000我-0.0000 + 0.0000 -0.0000 - 0.0000 1.0000 + 0.0000我-0.0000 + 0.0000 -0.0000 - 0.0000 -0.0000 - 0.0000 1.0000 + 0.0000我DataTypeMode:定点:二进制扩展Signedness:签了字:62 FractionLength: 48

R是一个上三角矩阵。

R
R = 3.1655 + 0.0000我0.4870 + 1.1980 0.1466 - 0.9092 0.0000 + 0.0000我2.2184 + 0.0000 -0.2159 - 0.0972 0.0000 2.2903我0.0000 + 0.0000 + 0.0000 + 0.0000我DataTypeMode:定点:二进制扩展Signedness:签了字:29 FractionLength: 24
isequal (R, triu (R))
ans =逻辑1

验证输出结果的准确性

评估复杂的破裂的准确性QR分解,计算相对误差。

relative_error =标准(双(Q * R - A)) /规范(双(一))
relative_error = 1.2460 e-06

抑制mlint警告。

% #好< * NOPTS >