复杂部分收缩QR分解
库:
定点设计HDL支持/矩阵和线性代数/矩阵分解金宝app
描述
的复杂部分收缩QR分解块采用QR分解计算R而且C=问'B,在那里问R=一个,一个而且B都是复值矩阵。的最小二乘解一个x=B是x=R\C.R上三角矩阵和问是一个正交矩阵。来计算C=问的,设置B是单位矩阵。
当正则化参数是非零的复杂部分收缩QR分解块变换
就地来
而且
就地来
在哪里λ为正则化参数,QR为经济规模QR分解
,一个是一个米——- - - - - -n矩阵,p列的数量是多少B,我n=眼睛(n)
,0氮、磷=0 (n,p)
.
例子
港口
输入
(我,:)- - - - - -矩阵行数一个
向量
矩阵行数一个,指定为一个向量。一个是一个米——- - - - - -n矩阵米≥2而且n≥2.如果B是单双的,一个必须是相同的数据类型B.如果一个是定点数据类型,一个必须有符号,使用二进制点缩放,并且字长与B.定点数据类型不支持坡度偏置表示。金宝app
数据类型:单
|双
|不动点
复数支持:金宝app是的
B(我,:)- - - - - -矩阵行数B
向量
矩阵行数B,指定为一个向量。B是一个米——- - - - - -p矩阵米≥2.如果一个是单双的,B必须是相同的数据类型一个.如果B是定点数据类型,B必须有符号,使用二进制点缩放,并且字长与一个.定点数据类型不支持坡度偏置表示。金宝app
数据类型:单
|双
|不动点
复数支持:金宝app是的
validIn- - - - - -输入是否有效
布尔
标量
输入是否有效,指定为布尔标量。此控制信号指示何时数据从(我,:)
而且B(我,:)
输入端口有效。当该值为1 (真正的
)的值准备好了
是1 (真正的
),该块捕获的值(我,:)
而且B(我,:)
输入端口。当该值为0时(假
),块忽略输入的样本。
在发送真正的
validIn
信号,之前可能会有延迟准备好了
设置为假
.为了确保所有数据都得到处理,必须等到准备好了
设置为假
在发送另一个之前真正的
validIn
信号。
数据类型:布尔
重新启动- - - - - -是否清除内部状态
布尔
标量
是否清除内部状态,指定为布尔标量。当该值为1 (真正的
),该块停止当前计算并清除所有内部状态。当该值为0时(假
),以及validIn
值为1 (真正的
),块开始一个新的子帧。
数据类型:布尔
输出
R- - - - - -矩阵R
矩阵
经济规模的QR分解矩阵R,作为矩阵返回。R是一个上三角矩阵。矩阵的大小R是n——- - - - - -n.R数据类型与一个.
数据类型:单
|双
|不动点
C- - - - - -矩阵C=问'B
矩阵
经济规模的QR分解矩阵C=问'B,作为矩阵或向量返回。C行数和R.C数据类型与B.
数据类型:单
|双
|不动点
validOut- - - - - -输出数据是否有效
布尔
标量
输出数据是否有效,作为布尔标量返回。该控制信号指示何时数据在输出端口R
而且C
是有效的。当该值为1 (真正的
)时,该块已成功计算R而且C矩阵。当该值为0时(假
),则输出数据无效。
数据类型:布尔
准备好了- - - - - -block是否就绪
布尔
标量
块是否准备就绪,作为布尔标量返回。该控制信号指示块何时准备好接受新的输入数据。当该值为1 (真正的
),以及validIn
值为1 (真正的
),该块接受下一个时间步的输入数据。当该值为0时(假
),该块将忽略下一个时间步中的输入数据。
在发送真正的
validIn
信号,之前可能会有延迟准备好了
设置为假
.为了确保所有数据都得到处理,必须等到准备好了
设置为假
在发送另一个之前真正的
validIn
信号。
数据类型:布尔
参数
矩阵A和B中的行数- - - - - -输入矩阵A和B中的行数
4
(默认)|正整数值标量
输入矩阵中的行数一个而且B,指定为正整数值标量。
编程使用
块参数:米 |
类型:特征向量 |
价值观:正整数值标量 |
默认值:4 |
矩阵A中的列数- - - - - -输入矩阵A中的列数
4
(默认)|正整数值标量
输入矩阵中的列数一个,指定为正整数值标量。
编程使用
块参数:n |
类型:特征向量 |
价值观:正整数值标量 |
默认值:4 |
矩阵B中的列数- - - - - -输入矩阵B中的列数
1
(默认)|正整数值标量
输入矩阵中的列数B,指定为正整数值标量。
编程使用
块参数:p |
类型:特征向量 |
价值观:正整数值标量 |
默认值:1 |
正则化参数- - - - - -正则化参数
0(默认)|非负标量
正则化参数,指定为非负标量。正则化参数的小正值可以改善问题的条件,并减少估计的方差。虽然有偏差,但与最小二乘估计相比,估计方差的减小通常会导致较小的均方误差。
编程使用
块参数:regularizationParameter |
类型:特征向量 |
价值观:正整数值标量 |
默认值:0 |
算法
实施方法的选择
局部收缩实现优先考虑计算速度而不是空间限制,而突发实现优先考虑空间限制而牺牲操作速度。下表说明了可用于矩阵分解和求解线性方程组的实现之间的权衡。
实现 | 准备好了 | 延迟 | 区域 |
---|---|---|---|
收缩压 | C | O (n) | O (米n2) |
Partial-Systolic | C | O (米) | O (n2) |
部分收缩期伴遗忘因子 | C | O (n) | O (n2) |
破裂 | O (n) | O (锰2) | O (n) |
在哪里C是与数据的字长成正比的常数,米矩阵中的行数是多少一个,n矩阵的列数是多少一个.
有关为应用程序选择块的其他注意事项,请参见为hdl优化的定点矩阵操作选择一个块.
AMBA AXI握手过程
该块使用AMBA AXI握手协议[1]。的有效/准备
握手过程用于传输数据和控制信息。这种双向控制机制允许经理和下属控制信息在经理和下属之间传递的速率。一个有效的
信号表示数据可用。的准备好了
信号表示该块可以接受该数据。数据的传输只发生在两个有效的
而且准备好了
信号很高。
块时间
的部分收缩期QR分解块接受和处理一个而且B一行一行的矩阵。后接受米行,块输出R而且C矩阵是向量。部分收缩实现使用了流水线结构,因此块可以在输出当前矩阵的结果之前接受新的矩阵输入。
例如,假设输入一个而且B矩阵是3乘3的。另外假设validIn
断言之前准备好了
,意味着上游数据源比QR分解更快。
在图中,
A1r1
第一行是第一行吗一个矩阵,R1
是第一个R矩阵,等等。validIn
来准备好了
-从成功的行输入到块准备接受下一行。最后一行
validIn
来validOut
—从输入的最后一行开始,到输出方案的块开始。
的部分收缩期无q QR分解块接受并处理矩阵一个一排一排。后接受米行,块输出R作为单一向量的矩阵。部分收缩实现使用了流水线结构,因此块可以在输出当前矩阵的结果之前接受新的矩阵输入。
例如,假设输入一个矩阵是3乘3的。另外假设validIn
断言之前准备好了
,意味着上游数据源比QR分解更快。
在图中,
A1r1
第一行是第一行吗一个矩阵,R1
是第一个R矩阵,等等。validIn
来准备好了
-从成功的行输入到块准备接受下一行。最后一行
validIn
来validOut
—从输入的最后一行开始,到输出方案的块开始。
方法的计时细节如下表所示部分收缩期QR分解块。
块 | validIn 来准备好了 (周期) |
最后一行validIn 来validOut (周期) |
---|---|---|
真实部分收缩QR分解 | 王+ 7 | (王+ 6) *n+ 6 |
复杂部分收缩QR分解 | 王+ 9 | (王+ 7.5) * 2 *n+ 6 |
实部收缩无q QR分解 | 王+ 7 | (王+ 6) *n+ 3 |
复杂部分收缩期无q QR分解 | 王+ 9 | (王+ 7.5) * 2 *n+ 3 |
在表格中,米表示矩阵中的行数一个,n矩阵的列数是多少一个.王的字长一个.
的数据类型一个是定点吗王是单词长度。
的数据类型一个是双的王是53。
的数据类型一个是单身,那么王是24。
硬件资源利用率
此块支持使用Simul金宝appink生成HDL代码金宝app®HDL工作流顾问。有关示例,请参见基于Simulink模型的HDL代码生成和FPGA合成金宝app(高密度脂蛋白编码器)而且FPGA数字下转换器的实现(DSP HDL工具箱).
在R2023a中:下表显示了资源利用结果的摘要。
这个示例数据是通过在Xilinx上合成块生成的®Zynq®-7 ZC706评估板(-2速度等级)。
采用以下参数进行合成。
块参数:
M = 10
N = 10
P = 1
矩阵一个尺寸:10 *
矩阵B维度:10-by-1
输入数据类型:
sfix18_En12
资源 | 使用 |
---|---|
附近地区 | 108464 |
LUTRAM | 5000 |
触发器 | 68404 |
R2022b:下表分别为驿站地点和路线资源利用结果和时间汇总。
该示例数据是通过在Xilinx Zynq UltraScale™+ RFSoC ZCU111评估板上合成块生成的。合成工具是Vivado®v.2020.2 (win64)。
采用以下参数进行合成。
块参数:
M = 16
N = 16
P = 1
矩阵一个尺寸:16 x16
矩阵B维度:16-by-1
输入数据类型:
sfix16_En14
目标频率:300mhz
资源 | 使用 | 可用 | 利用率(%) |
---|---|---|---|
CLB附近地区 | 319908 | 425280 | 75.22 |
CLB寄存器 | 250839 | 850560 | 29.49 |
需求方 | 0 | 4272 | 0.00 |
块状RAM砖 | 0 | 1080 | 0.00 |
URAM | 0 | 80 | 0.00 |
价值 | |
---|---|
要求 | 3.3333 ns |
数据路径延迟 | 3.299 ns |
松弛 | 0.016 ns |
时钟频率 | 301.45兆赫 |
参考文献
扩展功能
C/ c++代码生成
使用Simulink®Coder™生成C和c++代码。金宝app
定点数据类型不支持坡度偏置表示。金宝app
HDL代码生成
使用HDL Coder™为FPGA和ASIC设计生成Verilog和VHDL代码。
HDL Coder™提供了影响HDL实现和合成逻辑的额外配置选项。
这个块有一个默认的HDL架构。
一般 | |
---|---|
ConstrainedOutputPipeline | 通过在设计中移动现有延迟来放置在输出端的寄存器数量。分布式管道不会重新分发这些寄存器。默认为 |
InputPipeline | 要在生成的代码中插入的输入管道阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认为 |
OutputPipeline | 要在生成的代码中插入的输出管道阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认为 |
金宝app仅支持定点数据类型。
版本历史
R2020b中介绍R2023a:智能展开,提高资源利用率
当您更新图表时,组成部分收缩管道的回路展开。这种更新后的内部架构删除了模拟和生成代码中的死操作,从而显著减少了所需的硬件资源数量。此块与之前版本中这些块的库版本相比,模拟了时钟和位真保真度。
资源 | R2022b中使用 |
R2023a中使用 |
---|---|---|
附近地区 | 177813 | 108464 |
LUTRAM | 6620 | 5000 |
触发器 | 113857 | 68404 |
该示例数据是通过在Xilinx Zynq-7 ZC706评估板(-2速度等级)上合成块生成的。
采用以下参数进行合成。
块参数:
M = 10
N = 10
P = 1
矩阵一个尺寸:10 *
矩阵B维度:10-by-1
输入数据类型:
sfix18_En12
R2021a:HDL资源利用率降低
这个块现在有一个改进的算法,以减少硬件受限的目标平台上的资源利用率。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。