虚反矩阵指令pinv之应用

简介: pinv指令     在多数解的例子中,有时并不是仅要将其中一变数设定为零之解。为使整个系统得到最佳化,亦可利用pinv指令求得最小模组之合理解。pinv(A)又称为虚反矩阵(pseudoinverse),其功能与反矩阵之计算相同,但它会基于svd(A)函数(或称奇异值分解函数)之计算方式,求得一个不是属于全阶之矩阵A之反矩阵。

pinv指令
     在多数解的例子中,有时并不是仅要将其中一变数设定为零之解。为使整个系统得到最佳化,亦可利用pinv指令求得最小模组之合理解。pinv(A)又称为虚反矩阵(pseudoinverse),其功能与反矩阵之计算相同,但它会基于svd(A)函数(或称奇异值分解函数)之计算方式,求得一个不是属于全阶之矩阵A之反矩阵。这是长方形矩阵求解时,在多重解中求其反矩阵之折衷方式。故若矩阵A为方矩阵或非零矩阵,则其结果应与inv(A)相同。只是在这样的状况,宁可使用inv(A)较为省事。处理这些长方矩阵或特异矩阵时,使用pinv(A)会有意想不到的效果。其解法是根据反矩阵法:

A=[3 2 1; 10 -25 5];

C=[5000 2000]';

>> T=inv(A)*C

Error using inv

inv Matrix must be square.

>> T=pinv(A)*C

 

T =

 

   1.0e+03 *

 

    1.2039

    0.4852

    0.4180

  上面之例因为A不是方形矩阵,故求其反矩阵时会有错误的信息,但若用虚反矩阵指令pinv,反而相安无事,这是将T1、T2以其馀一变数T3表示之情况下,求得其最小平方之组合。其结果是否合用则端视问题之限制与应用而定。 PINV(A,TOL) 之指令後面另有参数TOL,可以输入容许值。其预设值为MAX(SIZE(A)) * NORM(A) * EPS(class(A)),读者可参考手册之说明,以了解其使用方法。

 

inv与pinv的区别

对于非奇异且不接近奇异的方阵两个命令输出结果相同,但是对于接近奇异的矩阵使用两个命令结果却不同,

1.对于方阵A,如果为非奇异方阵,则存在逆矩阵inv(A)
2.对于奇异矩阵或者非方阵,并不存在逆矩阵,但可以使用pinv(A)求其伪逆

 

Matlab中的‘\ ’和‘/’和pinv的关系以及运算

  当A是N阶方阵B为N行的列向量时,X=A\B就是线性方程组A*X=B的解,算法是用高斯消去法。A\EYE(SIZE(A))产生的是方阵A的逆矩阵。

  如果A是M*N的矩阵且M≠N,B是跟A行数(M行)相同的列向量时,X=A\B是非满秩的线性方程组A*X=B的解系,A的秩K由QR分解得出。如果K<N通常结果与PINV(A)*B不等(PINV(A)是求A的广义逆矩阵)。 A\EYE(SIZE(A))得到的是A的广义逆矩阵。

 

  总而言之,A\B就是求A*X=B的解,你可以看作是A的逆矩阵,只不过是广义逆矩阵,这样A不是方阵也可以计算的。

 

  至于A/B,在解线性方程组上比\少用一些,因为通常都把B写成列向量,所以用反除\就可以了。用/的话,B通常是行向量。

可以把B/A看作是X*A=B的解,这里B的列数等于A的列数。

 

A\B=pinv(A)*B 

A/B=A*pinv(B)

可见,'\'用的是高斯消元法。

相关文章
|
计算机视觉
数字图像处理实验(七)| 形态学图像处理{生成结构元素strel、腐蚀运算imerode、膨胀运算imdilate、开运算imopen、闭运算imclose}(附代码和实验截图、汉字视力表项目、总结)
数字图像处理实验(七)| 形态学图像处理{生成结构元素strel、腐蚀运算imerode、膨胀运算imdilate、开运算imopen、闭运算imclose}(附代码和实验截图、汉字视力表项目、总结)
664 0
数字图像处理实验(七)| 形态学图像处理{生成结构元素strel、腐蚀运算imerode、膨胀运算imdilate、开运算imopen、闭运算imclose}(附代码和实验截图、汉字视力表项目、总结)
|
3月前
|
Python
Python计算误码率,输入是0-1比特流矩阵和小数矩阵
本文提供了一个Python函数calculate_ber,用于计算两个NumPy矩阵表示的二进制信号和接收信号之间的误码率(BER),其中包括信号与接收信号的比较、误差计数以及BER的计算过程,并给出了具体的使用示例。
60 2
|
2天前
矩阵转换
【10月更文挑战第30天】矩阵转换。
8 3
|
6月前
|
算法 iOS开发
MT3041 多项式变换求值
MT3041 多项式变换求值
|
6月前
|
算法 测试技术 C#
【数学 排列组合】1643. 第 K 条最小指令
【数学 排列组合】1643. 第 K 条最小指令
|
C++ 计算机视觉
【OpenCv • c++】形态学技术操作 —— 开运算与闭运算
【OpenCv • c++】形态学技术操作 —— 开运算与闭运算
431 0
|
C语言
二值逻辑变量与基本逻辑运算
二值逻辑变量与基本逻辑运算
135 0
|
算法 数据安全/隐私保护 计算机视觉
m基于FPGA的8点DCT变换verilog实现,包含testbench,并对比matlab的计算结果
m基于FPGA的8点DCT变换verilog实现,包含testbench,并对比matlab的计算结果
277 0
|
资源调度 PyTorch 算法框架/工具
pytorch 如何生成指定位置、尺度参数的随机高斯矩阵,并指定这个随机矩阵的形式
在上述代码中,我们使用 torch.normal(mean=mu, std=sigma, size=(m, n)) 函数直接生成了一个形状为 (m, n) 的随机高斯矩阵 data,其中 mean 参数指定了均值,std 参数指定了标准差。 需要注意的是,与 torch.randn() 不同,torch.normal() 生成的是具有指定均值和标准差的高斯分布,因此生成的随机矩阵不一定是标准正态分布。如果需要生成标准正态分布随机矩阵,可以将 mean 参数设置为 0,std 参数设置为 1。
1160 1