Ran He老师讲他CVPR 2012公式20不是用inv求的,他和学生说过能不用inv,尽量不用,用左除或者右除,解线性方程组。不能受我matlab教材影响,左除或者右除和求inv是不等价的。Feiping Nie的NIPS 2010公布代码L21R21第45行实现一个矩阵的逆乘以另外一个矩阵,也用右除。类似实现一个矩阵乘以另外一个矩阵的逆,用左除,不用inv

http://zhidao.baidu.com/question/308277515.html
左除要不要求矩阵可逆?为什么一个不可逆的矩阵a在matlaB中用inv(a)*y不可计算,用a\y就可以计算了?
答:左除不要求矩阵可逆,在matlab中inv(a)*y与a\y并不等同,左除命令有更深的内涵,当a为方阵且可逆时,二者都能得到正确结果,但左除精度更高,运算数度快(我实验下来,确实是这样),特别当A为病态矩阵时,inv(A)*y的计算结果不可靠(不过这种矩阵出现的概率很低),但用左除计算出的结果却很可靠,因为左除是matlab设计的一个智能算符,他可以智能地选择算法;当方程为矛盾方程(也就是独立方程个数多余未知数个数)时,此时显然没有精确解,但很多时候我们需要x在最小二乘意义下的解,此时用A\y就能得到x的最小二乘解。

Haiqing Li说他从来不看这些中文的,有些人可能回答得不专业或误解,到matlab帮助搜索arithmetic operators有左除或者右除详细解释

测试例子:
第一个matlab的m文件
% 生成数据
rand('state',0);
n = 10000;% 也可设置为1000
A = randn(n,n);
B = randn(n,1);
save MyFile1 A B;

第二个matlab的m文件
% 测试求逆时间
tic;
load MyFile1;
n = size(A,1);
C1 = inv(A'*A+0.01*eye(n))*B;
save MyFile2 C1;
toc;

第三个matlab的m文件
% 测试左除时间
tic;
load MyFile1;
n = size(A,1);
C2 = (A'*A+0.01*eye(n))\B;
save MyFile3 C2;
toc;