Matlab 生成具有特定秩的随机矩阵
我想知道如何在Matlab中生成具有特定秩(轴列数)的nxn矩阵。我知道您可以使用命令Matlab 生成具有特定秩的随机矩阵,matlab,matrix,Matlab,Matrix,我想知道如何在Matlab中生成具有特定秩(轴列数)的nxn矩阵。我知道您可以使用命令randi(IMAX,m,n)生成一个m x n矩阵,其中包含1到IMAX之间的随机项,但是是否可以生成一个4 x 4矩阵,其中包含随机项,但只有2个轴列?提前感谢。我意识到,因为randi(IMAX,m,n)形成一个包含尽可能多的轴列的m x n矩阵,所以可以使用k个轴列和1到IMAX之间的随机项,使用以下代码形成一个n x n矩阵A: A = randi(IMAX, n, k)*randi(IMAX, k,
randi(IMAX,m,n)
生成一个m x n矩阵,其中包含1到IMAX之间的随机项,但是是否可以生成一个4 x 4矩阵,其中包含随机项,但只有2个轴列?提前感谢。我意识到,因为randi(IMAX,m,n)
形成一个包含尽可能多的轴列的m x n矩阵,所以可以使用k个轴列和1到IMAX之间的随机项,使用以下代码形成一个n x n矩阵A:
A = randi(IMAX, n, k)*randi(IMAX, k, n)
因为
randi(IMAX,n,k)
和randi(IMAX,k,n)
中的每一个都只有k
透视列,所以他们的产品也只有k个透视列。一种(公认效率低下的)方法可能是生成完整的矩阵(在您的示例中为4x4),然后使用SVD分解将其分离,并将一些奇异值归零(本例中有2个条目)。我相信重新组合的矩阵将具有所需的秩。或者,如果您对控制生成矩阵的奇异值感兴趣,您可以使用测试矩阵库中的randSVD函数:可能属于,或者请注意,这不会在该空间上生成均匀分布,元素也会在[1,IMAX^2]范围内。+1这是正确的方法,无论您是使用rand
,randi
,都应该有效,或randn
。通常,您也可以使用相同的矩阵,即X=randn(4,2)代码>,Y=X*X'代码>。此外,我编辑了您的答案,以包含代码突出显示。干杯,先生。鲍尔斯,谢谢你清理它,让它看起来很专业。祝你好运!元素的范围实际上是[1,IMAX^2*k]。