MATLAB 中 inv() 和 pinv() 函数的区别
在用于机器学习的处理数据时,如果以矩阵的形式存储数据,则可以轻松地对数据进行操作。其中 inverse 是处理数据时在许多地方使用的重要操作之一。以下是在不同情况下使用的两种求矩阵逆的方法。
pinv()
- 它用于处理奇异矩阵和非奇异矩阵,它指的是矩阵的伪逆。
- pinv()函数涉及使用浮点运算。
句法:
pinv(A)
Where A is a Matrix of Order M x N.
例子:
Matlab
% Matrix
A = [1 2 3; 4 5 6; 7 8 9]
% Using inv()
pinv(A)
Matlab
% Matrix
A = [1 2 3; 4 5 6; 7 8 9]
% Using inv()
inv(A)
Matlab
% Matrix
A = [1 2; 3 4]
% Using inv()
inv(A)
% Using pinv()
pinv(A)
Matlab
% Matrix
A = [1 3; 2 6]
% Using inv()
inv(A)
% Using pinv()
pinv(A)
输出:
inv()
- 它用于处理非奇异矩阵,它指的是矩阵的逆。
- inv()函数不涉及使用浮点运算。
句法:
inv(A)
Where A is a Matrix of Order M x N.
例子:
MATLAB
% Matrix
A = [1 2 3; 4 5 6; 7 8 9]
% Using inv()
inv(A)
输出:
让我们假设有一个名为 A 的矩阵,其中取了一些值,我们需要使用内置函数找到矩阵 A的逆矩阵,因此pinv(A)和inv(A)都可以用来找到 矩阵的逆矩阵。考虑以下程序:
MATLAB
% Matrix
A = [1 2; 3 4]
% Using inv()
inv(A)
% Using pinv()
pinv(A)
输出:
正如我们所看到的,这两个函数对普通矩阵产生相同的结果。现在我们将使用奇异矩阵并应用这两个函数来找到它的逆矩阵。
MATLAB
% Matrix
A = [1 3; 2 6]
% Using inv()
inv(A)
% Using pinv()
pinv(A)
输出:
所以,如果 Matrix 是奇异的,我们就不能使用 inv() 。但是使用相同的矩阵,可以使用pinv()函数计算逆。
pinv()和inv()都用于在 MATLAB 中查找矩阵的逆。但是,不同之处在于pinv指的是伪逆,而inv指的是逆。以下是这两个功能之间的一些主要区别:
pinv() 和 inv() 的区别表
pinv(A) | inv(A) |
---|---|
The pinv() function is able to handle non-square matrices. | The inv() function is not able to handle non-square matrices. |
The runtime of pinv() is more than inv(). | The runtime of pinv() is more than inv(). |
It will always return the inverse of a Matrix. | It might not always return the non-square inverse of a Matrix. |
The pinv() function in OCTAVE/MATLAB returns the Moore-Penrose pseudo inverse of a matrix using Singular value. | The inv() function returns the inverse of the matrix. |
The pinv() function is useful when your matrix is non-invertible(singular matrix) or Determinant of that Matrix =0. | The inv() function will not be useful if your matrix is non-invertible(singular matrix). |