涉及到使用奇异值分解计算伪逆矩阵,具体推导证明自己去查线性代数相关教材。
过程就是先奇异值分解,[ U, S, V ] = svd( B );
再求算伪逆矩阵 PinvB = V * spdiags( diag( S ).^( -1 ), 0, Columns, Rows ) * U'; % Rows = size( B, 1 ); Columns = size( B, 2 );
于是 w_2 = PinvB * I( :, 1 ); 与左除 w_1 = B \ I( :, 1 ); 两者一致(具体计算出的w_1 与 w_2 会有些微的浮点误差)