Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab/Octave中的法向方程和pinv()_Matlab_Matrix_Octave_Matrix Inverse - Fatal编程技术网

Matlab/Octave中的法向方程和pinv()

Matlab/Octave中的法向方程和pinv(),matlab,matrix,octave,matrix-inverse,Matlab,Matrix,Octave,Matrix Inverse,我正在学习机器学习的基础知识,当我读到关于Matlab中正态方程的使用时,我有一个问题 如果正态方程为: 及 是伪逆,因此: 和pinv(X)计算X的伪逆 为什么,在Matlab/Octave中,有些人使用: theta = pinv(X'*X)*X'*y ...(4) 而不是 theta = pinv(X)*y ...(5) ? (4)不是多余的吗?难道不是pinv(X)为我们计算伪逆公式吗 谢谢大家! (4)似乎是多余的,是的。你在哪里见过这件事?也许是谁编写了这样的代码,却没有像你那样

我正在学习机器学习的基础知识,当我读到关于Matlab中正态方程的使用时,我有一个问题

如果正态方程为:

伪逆,因此:

pinv(X)
计算
X
的伪逆

为什么,在Matlab/Octave中,有些人使用:

theta = pinv(X'*X)*X'*y ...(4)
而不是

theta = pinv(X)*y ...(5)
?

(4)不是多余的吗?难道不是
pinv(X)
为我们计算伪逆公式吗


谢谢大家!

(4)似乎是多余的,是的。你在哪里见过这件事?也许是谁编写了这样的代码,却没有像你那样建立精神联系,而是一字不差地遵循了一个公式。我想值得指出的是,(2)不适用于复杂的输入(因为伪逆实际上是通过厄米特转置定义的,而不是简单的转置),因此如果(1)也适用于复杂的输入(如果是这样的话,我就不知道了),那么在处理复杂的输入时,您将无法使用(5),您必须直接使用(4)。但我很怀疑这是否是在野外观看的原因。可能是有人将公式逐字复制到代码中。@TasosPapastylianou,谢谢你的回复,很抱歉我稍后的回复。前几天我有一些问题。我在Coursera学习Andrew Ng的机器学习课程。在他们的例子中,他使用了(4)代码。然后,我一直在寻找github中的更多示例,这些示例很有效,但我想知道为什么不使用(5)代码。@tasospapstyllanou。是的,数字(2)不适用于复杂输入。我假设X矩阵充满了实数。是的,我对复制公式也有同样的想法,但也许有一个解释,也许。事实上,我现在也很好奇!我知道在Stackoverflow中交叉发布是不受欢迎的,但是如果你去掉问题中的matlab编程特定元素并坚持数学,那么对于stats.stackexchange.com来说,这个独立的问题可能是一个更好的问题。如果你在那里发布这样的问题,你介意在这里分享问题链接吗?:)