我想在MATLAB中使用以下约束生成M * N矩阵(M不等于N):
步骤1.将矩阵的每个条目设置为i.i.d. N(0,1)值。
步骤2.使用Gram-Schmidt算法对矩阵的M行进行正交化。
步骤3.将矩阵的行标准化为单位长度。
我不知道如何实施上述第二步。
感谢任何帮助。
答案 0 :(得分:4)
您可能需要查看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