确定复最小二乘矩阵不动点类型的算法
这个例子展示了算法fixed.complexQRMatrixSolveFixedpointTypes
函数用于解析确定复最小二乘矩阵方程解的不动点类型
,在那里
是一个
——- - - - - -
矩阵
,
是
——- - - - - -
,
是
——- - - - - -
.
概述
你可以解定点最小二乘矩阵方程 使用QR分解。利用一系列正交变换,QR分解变换矩阵 在上三角形的位置 ,并变换矩阵 就地来 ,在那里 为经济规模的QR分解。这将方程简化为一个上三角方程组 .来解 ,计算 通过反代入 成 .
可以为最小二乘矩阵方程确定适当的不动点类型
通过根据您的要求定义的精度位数选择分数长度。的fixed.complexQRMatrixSolveFixedpointTypes
函数解析地计算下面的上界
,
,
确定避免溢出[1,2,3]所需的整数位数。
元素大小的上界 是
.
元素大小的上界 是
.
元素大小的上界 是
.
因为计算
在计算上比解方程组更昂贵fixed.complexQRMatrixSolveFixedpointTypes
函数估计的下界
.
矩阵方程解的不动点类型 通常是有界的,如果行数, 的, 比列数大得多, (即。 ), 是满秩。如果 本身不是满秩的,那么它可以通过添加随机噪声来实现。随机噪声自然出现在物理系统中,例如雷达或通信系统中的热噪声。如果 ,则系统的动态范围可以是无界的,例如在标量方程中 而且 ,然后 可以任意大,如果 接近于 .
边界的证明
向量和矩阵规范的性质和定义
边界的证明使用下列性质和矩阵和向量规范的定义,其中 是正交矩阵,和 向量是长度的吗 [6]。
如果 是一个 ——- - - - - - 矩阵和 经济规模的QR分解是 ,在那里 是正交的 ——- - - - - - 而且 是上三角形 ——- - - - - - 的奇异值 等于的奇异值 .如果 非奇异吗
R = Q'A的上界
元素大小的上界 是
.
R = Q'A的上界证明
的 的第Th列 等于 ,所以
自 对所有 ,然后
C = Q'B的上限
元素大小的上界 是
.
C = Q'B上界的证明
的上界证明 和的上界证明是一样的吗 用 为 而且 为 .
X = A\B的上界
元素大小的上界 是
.
X = A\B的上界证明
如果 那么不是满衔的吗 ,如果 不等于0,那么 所以这个不等式成立。
如果 那么是满级了 .让 是 的第Th列 , 是 的第Th列 .然后
自 的所有行和列 而且 ,然后
.
最小值的下界(svd(A))
你可以估计一个下界 的 为复数 用下面的公式,
在哪里
的元素中是否加入了随机噪声的标准差
,
概率是
,
是γ
功能,
逆函数是不完全函数吗gammaincinv
.
证明在[1]中找到。由[3]对引理3.4中的公式积分,重新排列项得到。
自 的概率 ,那么你就可以限定元素的大小 没有计算 ,
的概率 .
你可以计算
使用fixed.complexSingularValueLowerBound
函数,该函数使用低于平均值5个标准差的默认概率,
,也就是最小奇异值的估计界的概率
小于的实际最小奇异值
是
.
例子
这个例子用许多随机矩阵进行模拟,并将分析边界与的实际奇异值进行比较 最大的元素 , , .
定义系统参数
为本例定义矩阵属性和系统参数。
米
矩阵中的行数是多少一个
而且B
.在波束形成或测向等问题中,米
对应于被积分的样本数。
M = 300;
n
矩阵的列数是多少一个
矩阵中的行X
.在最小二乘问题中,米
大于n
,通常米
要比n
.在波束形成或测向等问题中,n
对应传感器个数。
N = 10;
p
矩阵中的列数是多少B
而且X
.它对应于同时求解一个方程组p
右手边。
P = 1;
在本例中,设置矩阵的秩一个
小于列数。在波束形成或测向等问题中,
对应于撞击在传感器阵列上的信号数量。
rankA = 3;
precisionBits
定义矩阵求解所需的精度比特数。请根据实际情况设置。
precisionBits = 24;
在这个例子中,是复值矩阵一个
而且B
元素的实部和虚部的大小都小于或等于1,那么任何元素的最大可能绝对值是多少
.您自己的系统需求将定义这些值是什么。如果你不知道它们是什么一个
而且B
都是定点输入到系统中,那么可以使用吗upperbound
函数确定的定点类型的上界一个
而且B
.
max_abs_A
是A的最大幅值元素的上界。
max_abs_A =√(2);
max_abs_B
为B的最大幅值元素的上界。
max_abs_B =√(2);
热噪声标准差为热噪声功率的平方根,这是一个系统参数。设计良好的系统具有比热噪声低的量化水平。在这里,套thermalNoiseStandardDeviation
相当于
分贝噪声功率。
thermalNoiseStandardDeviation =√(10^(-50/10))
thermalNoiseStandardDeviation = 0.0032
量化复信号的实部和虚部的噪声的标准偏差为
(4、5)。使用fixed.complexQuantizationNoiseStandardDeviation
函数来计算这个。看到它小于thermalNoiseStandardDeviation
.
quantizationNoiseStandardDeviation = fixed.complexQuantizationNoiseStandardDeviation(precisionBits)
quantizationNoiseStandardDeviation = 2.4333e-08
计算定点类型
在本例中,假设所设计的系统矩阵 没有满秩(感兴趣的信号比矩阵的列数少 ),和测量的系统矩阵 具有比量化噪声更大的附加热噪声。加性噪声构成被测矩阵 拥有满军衔。
集 .
noiseStandardDeviation = thermalNoiseStandardDeviation;
使用fixed.complexQRMatrixSolveFixedpointTypes
计算定点类型。
T = fixed.complexQRMatrixSolveFixedpointTypes(m,n,max_abs_A,max_abs_B,...precisionBits noiseStandardDeviation)
T =带字段的结构:答:[0x0嵌入。fi] B: [0x0嵌入式。fi] X: [0x0 embedded.fi]
T.A
是否为转换计算类型
来
放置到位,以免溢出。
T.A
ans = [] DataTypeMode: Fixed-point: binary point scaling signdness: Signed WordLength: 32 FractionLength: 24
肺结核
是否为转换计算类型
来
放置到位,以免溢出。
肺结核
ans = [] DataTypeMode: Fixed-point: binary point scaling signdness: Signed WordLength: 32 FractionLength: 24
T.X
是否为解决方案计算了类型
所以它溢出的概率很小。
T.X
ans = [] DataTypeMode: Fixed-point: binary point scaling signdness: Signed WordLength: 37 FractionLength: 24
R和C=Q'B的上界
的上界 而且 都是用下面的公式计算的,在哪里 矩阵的行数是多少 而且 .
这些上界用于选择具有所需精度位数的定点类型,以避免溢出。
upperBoundR =√(m)*max_abs_A
upperBoundR = 24.4949
upperBoundQB =√(m)*max_abs_B
upperBoundQB = 24.4949
复合物A的最小值(svd(A))的下界
的下界
是由fixed.complexSingularValueLowerBound
函数用一个概率来估计
不大于实际的最小奇异值。违约概率比均值低5个标准差。属性的最后一个输入参数,可以更改此概率fixed.complexSingularValueLowerBound
函数。
estimatedSingularValueLowerBound = fixed.complexSingularValueLowerBound(m,n,noiseStandardDeviation)
estimatedSingularValueLowerBound = 0.0389
模拟和比较计算边界
边界在模拟结果的一个数量级内。这就足够了,因为比特数转换为相对于值范围的对数刻度。在10的因子内是在3到4位之间。这是指定定点类型的一个很好的起点。如果你对更多的样本进行模拟,那么模拟结果更有可能更接近边界。本例使用有限数量的模拟,因此运行时间不会太长。对于真实的系统设计,您应该运行额外的模拟。
定义样本数,numSamples
,在上面运行模拟。
numSamples = 1e4;
运行模拟。
[actualMaxR,actualMaxQB,singularValues,X_values] = runSimulations(m,n,p,rankA,max_abs_A,max_abs_B,...numSamples noiseStandardDeviation T);
你可以看到上界 与实测模拟结果的最大值进行比较 所有的运行都在一个数量级之内。
upperBoundR
upperBoundR = 24.4949
马克斯(actualMaxR)
Ans = 9.6720
你可以看到上界 与实测模拟结果的最大值进行比较 总体运行也在一个数量级之内。
upperBoundQB
upperBoundQB = 24.4949
马克斯(actualMaxQB)
Ans = 4.4764
的估计下界 与实测的仿真结果相比较 总体运行也在一个数量级之内。
estimatedSingularValueLowerBound
estimatedSingularValueLowerBound = 0.0389
actualsmallstsingularvalue = min(singularValues,[],“所有”)
actualsmallstsingularvalue = 0.0443
在所有模拟运行中绘制奇异值的分布。最大奇异值的分布对应于决定矩阵秩的信号。最小奇异值的分布与噪声相对应。最小奇异值的估计界的推导利用了噪声的随机性质。
clf fixed.example.plot.singularValueDistribution (m, n,蓝卡、noiseStandardDeviation...singularValues estimatedSingularValueLowerBound,“复杂”);
放大到最小的奇异值,可以看到估计的边界接近它。
xlim ([estimatedSingularValueLowerBound * 0.9,马克斯(singularValues (n,:))));
估计解的最大值X,并将其与模拟运行期间发现的X的最大值进行比较。估计在实际值的一个数量级内,这对于估计一个定点数据类型是足够的,因为它在3到4位之间。
这个例子使用了有限的模拟运行次数。通过额外的模拟运行,X的实际最大值将接近X的估计值。
estimated_largest_X = fixed.complexMatrixSolveUpperBoundX(m,n,max_abs_B,noiseStandardDeviation)
estimated_largest_X = 629.3194
actual_largest_X = max(abs(X_values),[],“所有”)
actual_largest_X = 70.2644
绘制X值的分布,并将其与X的估计上界进行比较。
clf fixed.example.plot.xValueDistribution (m, n,蓝卡、noiseStandardDeviation...X_values estimated_largest_X,复正态分布随机);
万博1manbetx支持功能
的runSimulations
函数创建一系列随机矩阵
而且
的QR分解,并根据计算的类型对其进行量化
,并解出方程
.的最大值
而且
的奇异值
的值
所以它们的分布可以画出来并与边界进行比较。
函数[actualMaxR,actualMaxQB,singularValues,X_values] = runSimulations(m,n,p,rankA,max_abs_A,max_abs_B,...numSamples,noiseStandardDeviation,T) precisionBits = T.A.FractionLength;A_WordLength = T.A.WordLength;B_WordLength = T.B.WordLength;actualMaxR = 0 (1,numSamples);actualMaxQB = 0 (1,numSamples);singularValues = 0 (n,numSamples);X_values = 0 (n,numSamples);为j = 1:numSamples A = (max_abs_A/sqrt(2))*fixed.example.complexRandomLowRankMatrix(m,n,rankA);加上正态分布随机噪声,A是非奇异的。A = A + fixed.example.complexNormalRandomArray(0,noiseStandardDeviation,m,n);A = quantizennumeric (A,1,A_WordLength,precisionBits);B = fixed.example.complexUniformRandomArray(-max_abs_B,max_abs_B,m,p);B = quantizennumeric (B,1,B_WordLength,precisionBits);[Q,R] = qr(A,0);C = q '* b;X = r \ c;actualMaxR(j) = max(abs(R(:)));actualMaxQB(j) = max(abs(C(:)));singularValues(:,j) = svd(A); X_values(:,j) = X;结束结束
参考文献
托马斯·布莱恩和珍娜·沃伦。设计参数选择的系统与方法。专利申请中。美国专利申请号16/ 947130。2020.
使用CORDIC执行QR分解。计算QR时增长边界的推导。MathWorks。2010.url://www.tianjin-qmedu.com/help/fixedpoint/ug/perform-qr-factorization-using-cordic.html.
陈子忠,Jack J. Dongarra。高斯随机矩阵的条件数。在:SIAM J.矩阵肛门。应用程序第27.3(2005年7月),第603-620页。issn: 0895 - 4798。doi: 10.1137 / 040616413。url:https://dx.doi.org/10.1137/040616413.
伯纳德Widrow。奈奎斯特采样理论的粗糙振幅量化研究。见:IRE电路理论3.4(1956年12月),第266-276页。
Bernard Widrow和István Kollár。量化噪声-数字计算,信号处理,控制和通信中的舍入误差。英国剑桥:剑桥大学出版社,2008年。
Gene H. Golub和Charles F. Van Loan。矩阵计算。第二版。巴尔的摩:约翰·霍普金斯大学出版社,1989年。
禁止此文件中的mlint警告。
% #好< * NASGU >% #好< * ASGLU >