对矩阵进行满秩分解的MATLAB算法
来源:互联网 发布:洗车优惠的软件 编辑:程序博客网 时间:2024/05/16 11:48
算法程序是从网上摘抄过来的,但是我添加了注释
由于MATLAB中只有对矩阵直接分解成行最简形式
E(r)D00的函数,不方便直接看出矩阵的满秩分解形式,即A=P*Q中的P和Q矩阵,因此我找了下网上的程序。说明:程序中对(m*n)矩阵A进行了满秩分解,分解为P*Q,其中P是m*r矩阵,Q是r*n矩阵,r是矩阵A的秩
B=rref(A);%将矩阵A化成行最简形式(rref,Reduced row echelon form),保存在B中[m,n]=size(A);%获取矩阵A的大小:m行n列P0(1:m,:)=0;%生成一个m行1列的列向量,全部值均为0Q0(:,1:n)=0;%生成一个1行n列的行向量,全部值均为0for i=1:m%依次扫描矩阵m行 flag=1; for j=1:n%依次扫描矩阵n列 if B(i,j)==1%若B(i, j)等于1 for k=1:i-1%固定j列,扫描此列的第1行到i-1行元素 if B(k,j)~=0%判断是否全为0 flag=0;%若不全为0,则将flag置为0(说明此列不是单位矩阵的列) break; end end for k=i+1:m%固定j列,扫描此列的第i+1行到m行(即最后一行)元素 if B(k,j)~=0%判断是否全为0 flag=0;%若不全为0,则将flag置为0(说明此列不是单位矩阵的列) break; end end if flag==1 %若flag为1(不为0),则说明此列是【矩阵的行最简形式矩阵】的单位矩阵的列 P0=[P0,A(:,j)];%将矩阵A的j列加到P0列向量之后,如P0=[[0;1;2;3;4],[5;6;7;8;9]] Q0=[Q0;B(i,:)];%将矩阵B的i行加到Q0行向量之后,如Q0=[ 0,1,2,3,4 ; 5,6,7,8,9 ]或Q0=[[0,1,2,3,4];[5,6,7,8,9]] end end end end[m1,n1]=size(P0);%获取矩阵P0的大小:m1行n1列[m2,n2]=size(Q0);%获取矩阵Q0的大小:m2行n2列P=P0(:,2:n1);%将矩阵P0的第2列到最后一列赋值给矩阵P(因为第一列是列向量初始化列,其全为0)Q=Q0(2:m2,:);%将矩阵Q0的第2行到最后一行赋值给矩阵Q(因为第一行是行向量初始化行,其全为0)
0 0
- 对矩阵进行满秩分解的MATLAB算法
- Matlab 实现矩阵的满秩分解(最大秩分解)
- Matlab中矩阵的分解
- 矩阵的满秩分解
- 矩阵的LU分解(Matlab程序)
- matlab中矩阵的各种分解
- Matlab与线性代数--矩阵的LU分解
- Matlab与线性代数--矩阵的正交分解
- Matlab与线性代数--矩阵的Cholesky分解
- matlab 矩阵分解
- MATLAB 矩阵分解
- matlab 中的矩阵分解
- 矩阵分解大全matlab
- MATLAB矩阵分解
- Matlab矩阵分解
- matlab矩阵分解
- matlab 中的矩阵分解
- 矩阵分解大全matlab
- jfinal2
- nyoj 15 括号配对(二)
- NOJ1308 背包问题 (背包记录路径)
- s1.1.3Friday the Thirteenth(数组)
- Eclipse bookmark的使用 & 添加快捷键
- 对矩阵进行满秩分解的MATLAB算法
- MyEclipse环境搭建系列之开篇(第一章)——MyEclipse的jad(java反编译器)安装
- Android打开QQ临时会话以及一键加群的两种方法
- Opencv关于滑动条bar操作的实例
- 使用MapReduce来实现PageRank算法
- Photoshop序列图处理工具
- 线性结构(三) - 队列的原理与实现
- OpenCV以及GPU加速
- 黑马程序员--------java 网络编程