MATLAB中的对角化矩阵

时间:2014-05-03 02:01:13

标签: algorithm matlab

有没有办法在MATLAB中生成N x N随机对角化矩阵?我试着如下:

N = 10;
A = diag(rand(N,N))

但它给了我一个N x 1矩阵。我还需要矩阵是对称的。

2 个答案:

答案 0 :(得分:1)

假设您正在考虑实值矩阵:每个实对称矩阵都是diagonalizable。因此,您可以随机生成一些矩阵A,例如使用A = rand(N, N),然后将其对称,例如由

A = A + A'

对于复杂矩阵,对角化的条件是矩阵为normal。如果A是任意方形随机矩阵,则可以通过

对其进行标准化
A = A * A'

答案 1 :(得分:0)

所有全秩矩阵都可以通过SVD或特征分解进行对角化。

如果你想要一个随机对称矩阵......

N = 5
V = rand(N*(N+1)/2, 1)

M = triu(ones(N))
M(M==1) = V
M = M + tril(M.',-1)

@DavidEisenstat是对的。我试过他的榜样。对不起,这是虚假陈述。这是一个与您的情况特别相关的真实陈述,但不是一般的:随机矩阵几乎可以保证是可对角化的。