加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Matlab求解非方阵的广义逆矩阵程序

(2016-11-14 21:20:44)
标签:

matlab

广义逆

矩阵

clear all
close all
clc

G = [0 1 0 0 1 0 0 0;0 0 1 0 0 0 -1 0;1 0 0 0 0 1 0 0;
    -1 0 0 0 0 1 0 0;0 0 0 1 0 0 0 -1;0 1 0 0 -1 0 0 0];
% G = [2 4 1 1;1 2 -1 2;-1 -2 -2 1];    %非行满秩非列满秩示例

k = rank(G)  %求解矩阵秩
[m,n] = size(G);    %提取矩阵行数和列数

if k == m   %判断矩阵是否行满秩
    G0 = G'*inv(G*G');  %行满秩时广义逆求解
elseif k == n   %判断矩阵是否列满秩
        G0 = inv(G'*G)*G';  %列满秩时广义逆求解
else    %既非行满秩也非列满秩时广义逆求解
    A = orth(G);    %行满秩分解
    B = A'*G;       %行满秩分解
    G0 = B'*inv(B*B')*inv(A'*A)*A';
end
GG = vpa(G0)    %化简结果
%G1 = pinv(G);  %调用matlab函数pinv()求解

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有