由于这学期修了矩阵分析这门课,课程要求用matlab实现矩阵的5种分解,仅仅是实现了分解,上传到博客存档,万一哪天某位同学就需要了呢。。

1.矩阵的满秩分解

  • 代码实现
 1 %矩阵的满秩分解
clear
%设输入矩阵为M(P152 例4.1.1)
A = [1,4,-1,5,6;
2,0,0,0,-14;
-1,2,-4,0,1;
2,6,-5,5,-7]
A1 = rref(A); %将矩阵A化成行最简形式保存在A1中
[m,n]=size(A); %获取矩阵A的大小:m行n列
B0= [];%生成一个空向量
C0= [];%生成一个空向量
for i=1:m %依次扫描矩阵m行
flag=1;
for j=1:n %依次扫描矩阵n列
if A1(i,j)==1 %若A1(i, j)等于1
for k=1:i-1 %固定j列,扫描此列的第1行到i-1行元素
if A1(k,j)~=0 %判断是否全为0
flag=0; %若不全为0,则将flag置为0(说明此列不是单位矩阵的列)
break;
end
end
for k=i+1:m %固定j列,扫描此列的第i+1行到m行(即最后一行)元素
if A1(k,j)~=0 %判断是否全为0
flag=0; %若不全为0,则将flag置为0(说明此列不是单位矩阵的列)
break;
end
end
if flag==1 %若flag为1(不为0),则说明此列是【矩阵的行最简形式矩阵】的单位矩阵的列
B0=[B0,A(:,j)]; %将矩阵A的j列加到B0列向量之后
C0=[C0;A1(i,:)]; %将矩阵A1的i行加到C0行向量之后,
end
end
end
end
[m1,n1]=size(B0); %获取矩阵B0的大小:m1行n1列
[m2,n2]=size(C0); %获取矩阵C0的大小:m2行n2列
B=B0(:,1:n1) %将矩阵B0的第1列到最后一列赋值给矩阵B
C=C0(1:m2,:) %将矩阵C0的第1行到最后一行赋值给矩阵C
%验证:BC=A
A_1= B*C

2.矩阵的正交三角分解

  • 代码实现

直接调用matlab自带qr()函数即可

 %矩阵的正交三角分解
clear;
A = [-3,1,-2;1,1,1;1,-1,0;1,-1,1]
[Q, R] = qr(A) %正交三角分解,Q为酉矩阵,R为正交下三角矩阵
%验证:QR是否为A,以及Q是否为酉矩阵
A_1 = Q * R
Q_1 = Q * conj(Q.')

3.矩阵的奇异值分解

  • 代码实现
 %矩阵的奇异值分解
clear,clc
A = [1,1;0,0;1,1];
[U,S,V] = svd(A) %返回一个与A同大小的对角矩阵S,两个酉矩阵U和V,且满足A= U*S*V~H。
%若A为m×n阵,则U为m×m阵,V为n×n阵。奇异值在S的对角线上,非负且按降序排列。 %验证A=USV~H
A = [1,1;0,0;1,1]
A_1 = U*S*conj(V.')

4.矩阵的极分解

  • 代码实现
 %矩阵的极分解
clear,clc;
A = [2,1,2;0,1,3;1,0,0];
H1 = sqrtm(A*A') %返回矩阵的主要平方根
U1 = inv(H1)*A %求逆
A_1 = H1*U1
H2 = sqrtm(A)
U2 = A*inv(H2)
A_2 = U2*H2

5.矩阵的谱分解

以正规矩阵为例:

  • 代码实现
 %矩阵的谱分解
clear,clc
A = [4,6,0;-3,-5,0;-3,-6,1]; %单纯矩阵
%A = [-2i,4,-2;-4,-3i,-3i;2,-2i,-5i]; %正规矩阵
[V,D] = eig(A) %求特征值与特征向量 %正交归一化
V_C = orth(V) ;%特征向量正交化
V_C_Z = V_C./repmat(sqrt(sum(V_C.^2,1)),size(V_C,1),1); %特征向量列归一化 A_H = A * conj(A');%求A的共轭转置
if A == A_H | A == -(A_H) %判断是否是正规矩阵
[m,n] = size(V_C_Z);
G2 = zeros(m,n);
for i=1:n
G1 = V_C_Z(:,i) * conj(V_C_Z');
G2 = G2 + D(i, i) * G1;
end
G_Z = G2
else %否则是单纯矩阵
P_1 = (inv(V))';
[m,n] = size(P_1);
G3 = zeros(m,n);
for i=1:n
G4 = V(:,i) * (P_1(:,i))';
G3 = G3 + D(i,i)* G4;
end
G_R = G3
end

 PS:满秩分解的参考地址记不住了,这里就不备注了,仅仅出于学习的目的,不喜勿喷。

矩阵的五种分解的matlab实现的更多相关文章

  1. 五通信算法:五种编码增益比较matlab模拟

    1. 卷积编码增益性能.BER 信道环境:AWGN 信噪比SNR :0:0.1:6 MATALB仿真架构:源比特 +卷积码 +BPSK +AWGN +Viterbi +BER 说明:卷积编码,不同的R ...

  2. MATLAB 进行五种边缘检测

    自定义函数: function []=edge_detect(image_name) a=imread(image_name); I=rgb2gray(a); BW1=edge(I,'Roberts' ...

  3. Atitit  五种IO模型attilax总结 blocking和non-blocking synchronous IO和asynchronous I

    Atitit  五种IO模型attilax总结 blocking和non-blocking synchronous IO和asynchronous I   1.1. .3 进程的阻塞1 1.2. 网络 ...

  4. 提高CSS文件可维护性的五种方法

    当完成一项前端的工作之后,许多人都会忘记该项目的结构与细节.然而代码并不是马上就能完全定型,在余下的时间里还有不断的维护工作,而这些工作也许不会是你自己完成.所以,结构优良的代码能很大程度上优化它的可 ...

  5. 聊聊 Linux 中的五种 IO 模型

    本文转载自: http://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=2666538919&idx=1&sn=6013c451 ...

  6. SSH深度历险(六) 深入浅出----- Spring事务配置的五种方式

    这对时间在学习SSH中Spring架构,Spring的事务配置做了详细总结,在此之间对Spring的事务配置只是停留在听说的阶段,总结一下,整体把控,通过这次的学习发觉Spring的事务配置只要把思路 ...

  7. I/O模型之一:Unix的五种I/O模型

    目录: <I/O模型之一:Unix的五种I/O模型> <I/O模型之二:Linux IO模式及 select.poll.epoll详解> <I/O模型之三:两种高性能 I ...

  8. 浅谈Linux下的五种I/O模型 两篇别人的博客

     http://blog.csdn.net/sinat_34990639/article/details/52778562  http://www.cnblogs.com/chy2055/p/5220 ...

  9. iOS 开发之模糊效果的五种实现

    前言 在iOS开发中我们经常会用到模糊效果使我们的界面更加美观,而iOS本身也提供了几种达到模糊效果的API,如:Core Image,使用Accelerate.Framework中的vImage A ...

随机推荐

  1. C#读写设置修改调整UVC摄像头画面-增益

    有时,我们需要在C#代码中对摄像头的增益进行读和写,并立即生效.如何实现呢? 建立基于SharpCamera的项目 首先,请根据之前的一篇博文 点击这里 中的说明,建立基于SharpCamera的摄像 ...

  2. Kafka分布式的消息顺序

    Kafka分布式的单位是partition,同一个partition用一个write ahead log组织,所以可以保证FIFO的顺序.不同partition之间不能保证顺序. 但是绝大多数用户都可 ...

  3. SpringBoot与SpringDateJPA和Mybatis的整合

    一.SpringBoot与SpringDateJPA的整合 1-1.需求 查询数据库---->得到数据------>展示到页面上 1-2.整合步骤 1-2-1.创建SpringBoot工程 ...

  4. 英语muttonfatjade羊脂玉muttonfatjade单词

    羊脂玉英文(mutton fat jade) 中文名羊脂玉 外文名muttonfatjade 羊脂玉又称白玉,为软玉中之上品,极为珍贵.主要含有透闪石(95%).阳起石和绿帘石.非常洁白,质地细腻,光 ...

  5. ArrayList的subList方法带来的坑

    最近在项目中遇到了一个问题,由一个对象序列化的结构,在反序列化时一直提示失败,真的百思不得其解啊.在对问题排查了好久之后,才发现是这个序列化的对象中的list调用了ArrayList的sublist方 ...

  6. Python学习日记(三十六) Mysql数据库篇 四

    MySQL作业分析 五张表的增删改查: 完成所有表的关系创建 创建教师表(tid为这张表教师ID,tname为这张表教师的姓名) create table teacherTable( tid int ...

  7. 大数据:Hadoop(HDFS 的设计思路、设计目标、架构、副本机制、副本存放策略)

    一.HDFS 的设计思路 1)思路 切分数据,并进行多副本存储: 2)如果文件只以多副本进行存储,而不进行切分,会有什么问题 缺点 不管文件多大,都存储在一个节点上,在进行数据处理的时候很难进行并行处 ...

  8. (二)Kubernetes kubeadm部署k8s集群

    kubeadm介绍 kubeadm是Kubernetes项目自带的及集群构建工具,负责执行构建一个最小化的可用集群以及将其启动等的必要基本步骤,kubeadm是Kubernetes集群全生命周期的管理 ...

  9. 第一篇 -- XML基础

    一.XML简介 XML是一种标记语言,用于描述数据,它提供一种标准化的方式来来表示文本数据.XML文档以.xml为后缀.需要彻底注意的是XML是区分大小写的. 先从一个简单的XML例子来了解下xml基 ...

  10. 云打印 对 追光的人 的Beta产品测试报告

    云打印 对追光的人的Beta产品测试报告 课程名称:软件工程1916|W(福州大学) 团队名称: 云打印 作业要求: 项目Beta冲刺(团队) 作业目标:作业集合 团队队员 队员学号 队员姓名 个人博 ...