Matlab在一个表达式中使用r divide两次

时间:2013-12-05 15:41:42

标签: matlab

如果我想计算:

var(B(k))=sigma^2(X'X+k*I_p)^-1*(X'X)*(X'X+k*I_p)^-1

其中sigmak是常量,I_p是正确维度的单位矩阵,Xn*p矩阵

在MATLAB中

这是正确的语法吗?

var_alpha_Ridge=sigma2*(Gamma+lambda)\Gamma\(Gamma+lambda);

其中Gamma=(X'X)lambda=k*eye(p)

1 个答案:

答案 0 :(得分:1)

如果您想通过/\运营商进行此操作,那么

var_alpha_Ridge=sigma2*(Gamma+lambda)/Gamma\(Gamma+lambda);

但是,我更喜欢预先计算逆转

iGl = inv(Gamma+lambda);
var_alpha_Ridge=sigma2*iGl*Gamma*iGl;

如果您担心数值稳定性,请改用pinv

iGl = pinv(Gamma+lambda);
var_alpha_Ridge=sigma2*iGl*Gamma*iGl;

由于lambda部分,您反转的矩阵可能已经很好地调节了,我不希望这三种计算方法之间存在很大差异。