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)
输出:
inv()
- 它被用来处理非星形矩阵,它指的是矩阵的逆。
- inv()函数不涉及使用浮点运算。
语法:
inv(A)
其中A是一个阶数为M x N的矩阵。
示例:
% Matrix
A = [1 2 3; 4 5 6; 7 8 9]
% Using inv()
inv(A)
输出:
假设有一个名为A的矩阵,其中有一些数值,我们需要用内置函数找到矩阵A的逆,所以pinv(A)和inv(A)都可以用来找到矩阵的逆。请看下面的程序。
% Matrix
A = [1 2; 3 4]
% Using inv()
inv(A)
% Using pinv()
pinv(A)
输出:
我们可以看到,对于一个正常的矩阵,这两个函数产生了相同的结果。现在我们将使用一个奇异矩阵,并应用这两个函数来寻找它的逆值。
% Matrix
A = [1 3; 2 6]
% Using inv()
inv(A)
% Using pinv()
pinv(A)
输出:
因此,如果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()函数就没有用了。 |