主要内容

确定复最小二乘矩阵不动点类型的算法

这个例子展示了算法fixed.complexQRMatrixSolveFixedpointTypes函数用于解析确定复最小二乘矩阵方程解的不动点类型 一个 X B ,在那里 一个 是一个 ——- - - - - - n 矩阵 n B ——- - - - - - p , X n ——- - - - - - p

概述

你可以解定点最小二乘矩阵方程 一个 X B 使用QR分解。利用一系列正交变换,QR分解变换矩阵 一个 在上三角形的位置 R ,并变换矩阵 B 就地来 C B ,在那里 R 一个 为经济规模的QR分解。这将方程简化为一个上三角方程组 R X C .来解 X ,计算 X R C 通过反代入 R C

可以为最小二乘矩阵方程确定适当的不动点类型 一个 X B 通过根据您的要求定义的精度位数选择分数长度。的fixed.complexQRMatrixSolveFixedpointTypes函数解析地计算下面的上界 R 一个 C B , X 确定避免溢出[1,2,3]所需的整数位数。

元素大小的上界 R 一个

马克斯 | R | 马克斯 | 一个 |

元素大小的上界 C B

马克斯 | C | 马克斯 | B |

元素大小的上界 X 一个 B

马克斯 | X | 马克斯 | B | 最小值 圣言会 一个

因为计算 圣言会 一个 在计算上比解方程组更昂贵fixed.complexQRMatrixSolveFixedpointTypes函数估计的下界 最小值 圣言会 一个

矩阵方程解的不动点类型 一个 X B 通常是有界的,如果行数, 的, 一个 比列数大得多, n (即。 n ), 一个 是满秩。如果 一个 本身不是满秩的,那么它可以通过添加随机噪声来实现。随机噪声自然出现在物理系统中,例如雷达或通信系统中的热噪声。如果 n ,则系统的动态范围可以是无界的,例如在标量方程中 x 一个 / b 而且 一个 b - 1 1 ,然后 x 可以任意大,如果 b 接近于 0

边界的证明

向量和矩阵规范的性质和定义

边界的证明使用下列性质和矩阵和向量规范的定义,其中 是正交矩阵,和 v 向量是长度的吗 [6]。

| | 一个 v | | 2 | | 一个 | | 2 | | v | | 2 | | | | 2 1 | | v | | 马克斯 | v | | | v | | | | v | | 2 | | v | |

如果 一个 是一个 ——- - - - - - n 矩阵和 R 一个 经济规模的QR分解是 一个 ,在那里 是正交的 ——- - - - - - n 而且 R 是上三角形 n ——- - - - - - n 的奇异值 R 等于的奇异值 一个 .如果 一个 非奇异吗

| | R - 1 | | 2 | | R - 1 | | 2 1 最小值 圣言会 R 1 最小值 圣言会 一个

R = Q'A的上界

元素大小的上界 R

马克斯 | R | 马克斯 | 一个 |

R = Q'A的上界证明

j 的第Th列 R 等于 R j 一个 j ,所以

马克斯 | R j | | | R j | | | | R j | | 2 | | 一个 j | | 2 | | | | 2 | | 一个 j | | 2 | | 一个 j | | 2 | | 一个 j | | 马克斯 | 一个 j | 马克斯 | 一个 |

马克斯 | R j | 马克斯 | 一个 | 对所有 1 j ,然后

马克斯 | R | 马克斯 | 一个 |

C = Q'B的上限

元素大小的上界 C B

马克斯 | C | 马克斯 | B |

C = Q'B上界的证明

的上界证明 C B 和的上界证明是一样的吗 R 一个 C R 而且 B 一个

X = A\B的上界

元素大小的上界 X 一个 B

马克斯 | X | 马克斯 | B | 最小值 圣言会 一个

X = A\B的上界证明

如果 一个 那么不是满衔的吗 最小值 圣言会 一个 0 ,如果 B 不等于0,那么 马克斯 | B | / 最小值 圣言会 一个 所以这个不等式成立。

如果 一个 那么是满级了 x R - 1 b .让 x X j j 的第Th列 X , b B j j 的第Th列 B .然后

马克斯 | x | | | x | | | | x | | 2 | | R - 1 b | | 2 | | R - 1 | | 2 | | | | 2 | | b | | 2 1 / 最小值 圣言会 一个 1 | | b | | 2 | | b | | 2 / 最小值 圣言会 一个 | | b | | / 最小值 圣言会 一个 马克斯 | b | / 最小值 圣言会 一个

马克斯 | x | 马克斯 | b | / 最小值 圣言会 一个 的所有行和列 B 而且 X ,然后

马克斯 | X | 马克斯 | B | 最小值 圣言会 一个

最小值的下界(svd(A))

你可以估计一个下界 年代 最小值 圣言会 一个 为复数 一个 用下面的公式,

年代 σ N 2 γ - 1 p 年代 Γ - n + 2 2 Γ n Γ + 1 Γ - n + 1 - n + 1 - n + 1

在哪里 σ N 的元素中是否加入了随机噪声的标准差 一个 1 - p 年代 概率是 年代 最小值 圣言会 一个 Γ γ功能, γ - 1 逆函数是不完全函数吗gammaincinv

证明在[1]中找到。由[3]对引理3.4中的公式积分,重新排列项得到。

年代 最小值 圣言会 一个 的概率 1 - p 年代 ,那么你就可以限定元素的大小 X 没有计算 圣言会 一个

马克斯 | X | 马克斯 | B | 最小值 圣言会 一个 马克斯 | B | 年代 的概率 1 - p 年代

你可以计算 年代 使用fixed.complexSingularValueLowerBound函数,该函数使用低于平均值5个标准差的默认概率, p 年代 1 + 小块土地 - 5 / 2 / 2 2 8 6 6 5 1 0 - 7 ,也就是最小奇异值的估计界的概率 年代 小于的实际最小奇异值 一个 1 - p 年代 0 9 9 9 9 9 9 7

例子

这个例子用许多随机矩阵进行模拟,并将分析边界与的实际奇异值进行比较 一个 最大的元素 R 一个 C B , X 一个 B

定义系统参数

为本例定义矩阵属性和系统参数。

矩阵中的行数是多少一个而且B.在波束形成或测向等问题中,对应于被积分的样本数。

M = 300;

n矩阵的列数是多少一个矩阵中的行X.在最小二乘问题中,大于n,通常要比n.在波束形成或测向等问题中,n对应传感器个数。

N = 10;

p矩阵中的列数是多少B而且X.它对应于同时求解一个方程组p右手边。

P = 1;

在本例中,设置矩阵的秩一个小于列数。在波束形成或测向等问题中, 排名 一个 对应于撞击在传感器阵列上的信号数量。

rankA = 3;

precisionBits定义矩阵求解所需的精度比特数。请根据实际情况设置。

precisionBits = 24;

在这个例子中,是复值矩阵一个而且B元素的实部和虚部的大小都小于或等于1,那么任何元素的最大可能绝对值是多少 | 1 + 1 | 2 .您自己的系统需求将定义这些值是什么。如果你不知道它们是什么一个而且B都是定点输入到系统中,那么可以使用吗upperbound函数确定的定点类型的上界一个而且B

max_abs_A是A的最大幅值元素的上界。

max_abs_A =√(2);

max_abs_B为B的最大幅值元素的上界。

max_abs_B =√(2);

热噪声标准差为热噪声功率的平方根,这是一个系统参数。设计良好的系统具有比热噪声低的量化水平。在这里,套thermalNoiseStandardDeviation相当于 - 5 0 分贝噪声功率。

thermalNoiseStandardDeviation =√(10^(-50/10))
thermalNoiseStandardDeviation = 0.0032

量化复信号的实部和虚部的噪声的标准偏差为 2 - precisionBits / 6 (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是否为转换计算类型 一个 R 放置到位,以免溢出。

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

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

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

T.X是否为解决方案计算了类型 X 一个 B 所以它溢出的概率很小。

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

R和C=Q'B的上界

的上界 R 而且 C B 都是用下面的公式计算的,在哪里 矩阵的行数是多少 一个 而且 B

马克斯 | R | 马克斯 | 一个 |

马克斯 | C | 马克斯 | 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);

你可以看到上界 R 与实测模拟结果的最大值进行比较 R 所有的运行都在一个数量级之内。

upperBoundR
upperBoundR = 24.4949
马克斯(actualMaxR)
Ans = 9.6720

你可以看到上界 C B 与实测模拟结果的最大值进行比较 C B 总体运行也在一个数量级之内。

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,“复杂”);

图中包含一个轴对象。坐标轴对象与标题S i n g u l r空白v一l u e空白d我S t r b t u i o n S空白f o r空白3 y - 1 0 0 0 - b空白c o m p l e x空白m t r c e S空白o f r n k空白3空白w i t h空白σindexOf n o S e空白基线空白= 0。0 0 3 1 6包含20个类型为line, text的对象。

放大到最小的奇异值,可以看到估计的边界接近它。

xlim ([estimatedSingularValueLowerBound * 0.9,马克斯(singularValues (n,:))));

图中包含一个轴对象。坐标轴对象与标题S i n g u l r空白v一l u e空白d我S t r b t u i o n S空白f o r空白3 y - 1 0 0 0 - b空白c o m p l e x空白m t r c e S空白o f r n k空白3空白w i t h空白σindexOf n o S e空白基线空白= 0。0 0 3 1 6包含20个类型为line, text的对象。

估计解的最大值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,复正态分布随机);

图中包含一个轴对象。轴对象标题X空白d i s t r i b u i o n s空白f o r空白3 0 0 - b y - 10 0空白ma ti c es空白o f空白r ank空白3空白with空白sigma索引n o i se基线空白=空白0。0 0 3 1 6包含一个line类型的对象。

万博1manbetx支持功能

runSimulations函数创建一系列随机矩阵 一个 而且 B 的QR分解,并根据计算的类型对其进行量化 一个 ,并解出方程 一个 X B .的最大值 R 一个 而且 C B 的奇异值 一个 的值 X 所以它们的分布可以画出来并与边界进行比较。

函数[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;结束结束

参考文献

  1. 托马斯·布莱恩和珍娜·沃伦。设计参数选择的系统与方法。专利申请中。美国专利申请号16/ 947130。2020.

  2. 使用CORDIC执行QR分解。计算QR时增长边界的推导。MathWorks。2010.url://www.tianjin-qmedu.com/help/fixedpoint/ug/perform-qr-factorization-using-cordic.html

  3. 陈子忠,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

  4. 伯纳德Widrow。奈奎斯特采样理论的粗糙振幅量化研究。见:IRE电路理论3.4(1956年12月),第266-276页。

  5. Bernard Widrow和István Kollár。量化噪声-数字计算,信号处理,控制和通信中的舍入误差。英国剑桥:剑桥大学出版社,2008年。

  6. Gene H. Golub和Charles F. Van Loan。矩阵计算。第二版。巴尔的摩:约翰·霍普金斯大学出版社,1989年。

禁止此文件中的mlint警告。

% #好< * NASGU >% #好< * ASGLU >

另请参阅

功能

相关的话题