我正在matlab中对大矩阵进行正交化,我注意到函数orth比qr慢得多,例如:
>> a = randn(200000, 80);
tic; orth(a); toc;
Elapsed time is 2.472516 seconds.
>> tic; qr(a); toc;
Elapsed time is 0.610215 seconds.
什么可能导致如此大的差异?
答案 0 :(得分:1)
qr
似乎确实是更快捷的方式。
逻辑上这意味着它必须有缺点,否则Matlab将不会继续使用这种较慢的方法。
你最想要注意的两件事:
虽然有可能其他东西是实现orth
的原因,但我的猜测就是其中之一。
旁注您可能还想查看这个简单的Gram Schmidt解决方案以进行比较。