📜  MATLAB 中 inv() 和 pinv() 函数的区别

📅  最后修改于: 2022-05-13 01:55:48.177000             🧑  作者: Mango

MATLAB 中 inv() 和 pinv() 函数的区别

在用于机器学习的处理数据时,如果以矩阵的形式存储数据,则可以轻松地对数据进行操作。其中 inverse 是处理数据时在许多地方使用的重要操作之一。以下是在不同情况下使用的两种求矩阵逆的方法。

pinv()

  • 它用于处理奇异矩阵和非奇异矩阵,它指的是矩阵的伪逆
  • pinv()函数涉及使用浮点运算。

句法:

例子:



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()函数不涉及使用浮点运算。

句法:

例子:

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).