我想在 MATLAB 中生成具有以下约束的 M*N 矩阵(M 不等于 N):
步骤 1. 将矩阵的每个条目设置为 iid N(0,1) 值。
步骤 2. 使用 Gram-Schmidt 算法正交化矩阵的 M 行。
步骤 3. 将矩阵的行标准化为单位长度。
我不知道如何实现上面的第二步。
任何帮助表示赞赏。
我想在 MATLAB 中生成具有以下约束的 M*N 矩阵(M 不等于 N):
步骤 1. 将矩阵的每个条目设置为 iid N(0,1) 值。
步骤 2. 使用 Gram-Schmidt 算法正交化矩阵的 M 行。
步骤 3. 将矩阵的行标准化为单位长度。
我不知道如何实现上面的第二步。
任何帮助表示赞赏。
你可能想看看orth
:
A = randn( m, n ); % random iid ~N(0,1)
oA = orth( A.' ).'; % orthogonal rows
nA = bsxfun( @rdivide, oA, sqrt( sum( oA.^2, 2 ) ) ); % normalize to unit length