我想知道如何在Matlab中生成具有特定等级(枢轴列数)的n×n矩阵。我知道您可以使用命令randi(IMAX, m, n)
生成一个m×n矩阵,其中包含1到IMAX之间的随机条目,但是,例如,是否可以生成带有随机条目但只有2个透视列的4 x 4矩阵?提前谢谢。
答案 0 :(得分:8)
我意识到因为randi(IMAX, m, n)
形成一个具有尽可能多的数据透视列的mxn矩阵,所以可以使用以下代码形成一个带有k个透视列和1到IMAX之间的随机条目的nxn矩阵A. / p>
A = randi(IMAX, n, k)*randi(IMAX, k, n)
因为randi(IMAX, n, k)
和randi(IMAX, k, n)
中的每一个只有k
个数据透视列,所以他们的产品也只有k个透视列。
答案 1 :(得分:1)
一种(公认效率低下)方法可能是生成完整矩阵(在您的示例中为4x4),然后使用SVD分解将其分离并将一些奇异值(在您的情况下为2个条目)归零。我相信重组的矩阵将具有所需的等级。
答案 2 :(得分:1)
或者,如果您对控制生成矩阵的奇异值感兴趣,可以使用测试矩阵库中的randSVD函数:(link)