矩阵的五种分解的matlab实现
由于这学期修了矩阵分析这门课,课程要求用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实现的更多相关文章
- 五通信算法:五种编码增益比较matlab模拟
1. 卷积编码增益性能.BER 信道环境:AWGN 信噪比SNR :0:0.1:6 MATALB仿真架构:源比特 +卷积码 +BPSK +AWGN +Viterbi +BER 说明:卷积编码,不同的R ...
- MATLAB 进行五种边缘检测
自定义函数: function []=edge_detect(image_name) a=imread(image_name); I=rgb2gray(a); BW1=edge(I,'Roberts' ...
- 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. 网络 ...
- 提高CSS文件可维护性的五种方法
当完成一项前端的工作之后,许多人都会忘记该项目的结构与细节.然而代码并不是马上就能完全定型,在余下的时间里还有不断的维护工作,而这些工作也许不会是你自己完成.所以,结构优良的代码能很大程度上优化它的可 ...
- 聊聊 Linux 中的五种 IO 模型
本文转载自: http://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=2666538919&idx=1&sn=6013c451 ...
- SSH深度历险(六) 深入浅出----- Spring事务配置的五种方式
这对时间在学习SSH中Spring架构,Spring的事务配置做了详细总结,在此之间对Spring的事务配置只是停留在听说的阶段,总结一下,整体把控,通过这次的学习发觉Spring的事务配置只要把思路 ...
- I/O模型之一:Unix的五种I/O模型
目录: <I/O模型之一:Unix的五种I/O模型> <I/O模型之二:Linux IO模式及 select.poll.epoll详解> <I/O模型之三:两种高性能 I ...
- 浅谈Linux下的五种I/O模型 两篇别人的博客
http://blog.csdn.net/sinat_34990639/article/details/52778562 http://www.cnblogs.com/chy2055/p/5220 ...
- iOS 开发之模糊效果的五种实现
前言 在iOS开发中我们经常会用到模糊效果使我们的界面更加美观,而iOS本身也提供了几种达到模糊效果的API,如:Core Image,使用Accelerate.Framework中的vImage A ...
随机推荐
- GitLab CI/CD的官译【原】
CI / CD方法简介 软件开发的持续集成基于自动执行脚本,以最大限度地减少在开发应用程序时引入错误的可能性.从新代码的开发到部署,它们需要较少的人为干预甚至根本不需要干预. 它涉及在每次小迭代中不断 ...
- drf序列化与反序列化
序列化器-Serializer 定义序列化器 Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serial ...
- python基础04day
一 引子 数据类型 用途 定义方式 是否多项 有/无序 可/不可变 对应状态 数字 否 —— 不可 字符串 “”‘’“““””” 否 有 不可 列表 [] 是 有 可 同 ...
- CentOS7下载配置PostgreSQL的pgAgent运行代理作业
1.安装PostgreSQL 参考官方文档https://www.postgresql.org/download/linux/redhat/,运行如下命令 yum install https://do ...
- ReactiveObjC basic
基础-> https://www.jianshu.com/p/cd4031fbf8ff 在RAC中,万物皆信号. RAC 指的就是 RactiveCocoa ,是 Github 的一个开源框架, ...
- 爬虫requests库 之爬虫贴吧
首先要观察爬虫的URL规律,爬取一个贴吧所有页的数据,观察点击下一页时URL是如何变化的. 思路: 定义一个类,初始化方法什么都不用管 定义一个run方法,用来实现主要逻辑 3 class Tieba ...
- UISlider基本使用
UISlider是一个很常用的UI控件,调节屏幕亮度或者调节音量大小等很多地方都可以用到,而且使用方便,下面我来介绍一下UISlider的基本使用. 首先介绍一下基本属性和常用方法: //设置当前sl ...
- DLL Injection with Delphi(转载)
原始链接 I had recently spent some time playing around with the simple to use DelphiDetours package from ...
- xshell免费版
1.说明 百度搜索xshell有时候会跳到国内的一个网站,从那个网站下载的xshell是收费的,但是国外的网站还是可以下载到免费为学生和学校使用的版本. 2.下载网址 网址:https://www.n ...
- Django之auth认证
Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的 ...