我想知道如何在 Matlab 中生成具有特定等级(枢轴列数)的 nxn 矩阵。我知道您可以使用该命令randi(IMAX, m, n)
生成一个 mxn 矩阵,其中随机条目介于 1 和 IMAX 之间,但是是否有可能生成一个 4 x 4 矩阵,其中包含随机条目但只有 2 个枢轴列?提前致谢。
user1214845
问问题
3695 次
3 回答
8
我意识到,因为randi(IMAX, m, n)
形成了一个具有尽可能多的枢轴列的 mxn 矩阵,所以可以使用以下代码形成一个具有 k 个枢轴列和 1 到 IMAX 之间的随机条目的 nxn 矩阵 A:
A = randi(IMAX, n, k)*randi(IMAX, k, n)
因为每个randi(IMAX, n, k)
并且randi(IMAX, k, n)
只有k
枢轴列,所以他们的产品也只有 k 枢轴列。
于 2012-12-03T17:48:10.403 回答
1
一种(诚然效率低下)方法可能是生成完整矩阵(在您的示例中为 4x4),然后使用 SVD 分解将其分离并将一些奇异值归零(在您的情况下为 2 个条目)。我相信重组后的矩阵将具有所需的等级。
于 2012-12-03T21:04:57.630 回答
1
或者,如果您对控制生成矩阵的奇异值感兴趣,可以使用测试矩阵库中的 randSVD 函数:(链接)
于 2012-12-05T22:58:14.527 回答