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

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

在处理用于机器学习的数据时,如果以矩阵的形式存储,就很容易对数据进行操作。在处理数据时,逆运算是重要的操作之一,在很多地方都会用到。以下是在不同情况下使用的两种查找矩阵逆的方法。

pinv()

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

语法:

pinv(A) 

其中A是一个阶数为M x N的矩阵。

示例:

% Matrix
A = [1 2 3; 4 5 6; 7 8 9]
 
% Using inv()
pinv(A)

输出:

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

inv()

  • 它被用来处理非星形矩阵,它指的是矩阵的逆。
  • inv()函数不涉及使用浮点运算。

语法:

inv(A)

其中A是一个阶数为M x N的矩阵。

示例:

% Matrix
A = [1 2 3; 4 5 6; 7 8 9]
 
% Using inv()
inv(A)

输出:

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

假设有一个名为A的矩阵,其中有一些数值,我们需要用内置函数找到矩阵A的逆,所以pinv(A)和inv(A)都可以用来找到矩阵的逆。请看下面的程序。

% Matrix
A = [1 2; 3 4]
 
% Using inv()
inv(A)
 
% Using pinv()
pinv(A)

输出:

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

我们可以看到,对于一个正常的矩阵,这两个函数产生了相同的结果。现在我们将使用一个奇异矩阵,并应用这两个函数来寻找它的逆值。

% Matrix
A = [1 3; 2 6]
 
% Using inv()
inv(A)
 
% Using pinv()
pinv(A)

输出:

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

因此,如果Matrix是单数,我们就不能使用inv()。但使用相同的矩阵,可以用pinv()函数来计算逆值。

在MATLAB中,pinv()和inv()都是用来寻找矩阵的逆的。然而,不同的是,pinv指的是伪逆,而inv指的是逆。下面是这两个函数的一些主要区别。

pinv()和inv()的区别表

pinv(A) inv(A)
pinv()函数能够处理非方形矩阵。 inv()函数不能处理非方形矩阵。
pinv()的运行时间比inv()多。 pinv()的运行时间比inv()多。
它将总是返回矩阵的逆值。 它不一定会返回矩阵的非平方反值。
OCTAVE/MATLAB中的pinv()函数使用奇异值返回一个矩阵的Moore-Penrose伪逆。 inv()函数返回矩阵的逆值。
当你的矩阵是不可逆的(奇异矩阵)或该矩阵的行列式=0时,pinv()函数很有用。 如果你的矩阵是不可逆的(奇异矩阵),inv()函数就没有用了。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程