matlab矩阵分析

原创 2016年08月31日 01:57:34
矩阵分析
norm 求矩阵或者向量的范数 normest 估计矩阵的 2 阶范数 rank 矩阵的秩,即求对角元素的和 det 矩阵的行列式 trace 矩阵的迹 null 0 空间 orth 正交化空间 rref 约化行阶梯形式 subspace 求两个矩阵空间的角度
cond 判断奇异与非奇异

解线性方程组
? X=A\B      表示求矩阵方程 AX=B 的解; ? X=B/A      表示求矩阵方程 XA=B 的解。
? m=n 恰定方程组,MATLAB7.0 会寻求精确解; ? m>n 超定方程组,MATLAB7.0 会寻求最小二乘解; ? m<n 欠定方程组,MATLAB7.0 会寻求基本解,该解最多有 m 个非零元素

解恰定方程组(非奇异矩阵):X=A\B (奇异矩阵)X=pinv(A)*B 再A*X验证
解超定方程组(拟合抛物线)A*[c1 c2]’=y
x=(0:0.1:1)’;
y=([-0.01 0.045 0.12 0.2 0.33 0.52 0.67 0.95 1.2 1.45 1.78])’;
A(:,1)=x’;
A(:,2)=x’.^2;
c=A\y
y_fit=c(1)*x+c(2)*x.^2;
plot(x,y_fit,’-’,x,y,’o’)
解欠定方程组 方程个数小于未知数 X 通解 = X + Z*q
A=[3 1 4 8;4 2 6 0;4 2 1 6];
B=[1;2;3];
format rat;
X=A\B
Z=null(A,’r’)

矩阵分解
chol Cholesky 分解 cholinc 稀疏矩阵的不完全 Cholesky 分解 lu 矩阵 LU 分解 luinc 稀疏矩阵的不完全 LU 分解 qr 正交三角分解 svd 奇异值分解 gsvd 一般奇异值分解 schur 舒尔分解

Cholesky chol()  分解是把一个对称正定矩阵 A 表示为一个上三角矩阵 R 与其转置的乘积,示例 如下: A=R’*R   cholinc()来做不完全 Cholesky 分解
Cholesky分解实例:对非正定矩阵进行 chol 分解,具体代码如下:
S = [ 1     0     3     0;
      0    25     0    30;
      3     0     9     0;
     0    30     0   661 ];
R = chol(S);

LU 分解,高斯消去法又称 ,它可以将任意一个方阵 A 分解为一个“心理”下三角矩阵 L 和一个上三角矩阵 U 的乘积,即 A=LU。“心理”下三角矩阵定义为下三角矩阵与置换矩阵 的乘积    luinc()来做不完全 LU 分解
LU分解实例:计算一个稀疏矩阵的不完全分解,并观察其非零元素的个数
 load west0479;                  %加载 MATLAB 7.0 自带的一个稀疏矩阵
S = west0479; [L,U,P] = luinc(S,'0');             %做不完全 LU 分解    
figure(1);                       %新开一个图形显示窗口
subplot(2,3,1);                   %把该窗口分成 2*3 个字窗口,并在第 1 个字窗口上画图
spy(S);                         %显示稀疏矩阵 S
title('S');                        %给图添上标题
 subplot(2,3,2);                   %在第 2 个字窗口上画图
 spy(L);                         %显示稀疏矩阵 L
 title('L');                        %给图添上标题
 subplot(2,3,3);                   %在第 2 个字窗口上画图
 spy(U);                         %显示稀疏矩阵 U
title('U');                        %给图添上标题
 subplot(2,3,4);                   %在第 2 个字窗口上画图
 spy(P*S);                       %显示稀疏矩阵 P*S
 title('P*S');                      %给图添上标题
 subplot(2,3,5);                   %在第 2 个字窗口上画图
 spy(L*U);                       %显示稀疏矩阵 L*U
title('L*U');                     %给图添上标题

矩形矩阵的正交分解又称 QR 分解  qr() 。QR 分解把一个 m×n 的矩阵 A 分解为一个正交矩阵 Q 和一个上三角矩阵 R 的乘积,即 A=Q*R。
QR分解实例 :通过 QR 分解分析矩阵的秩,具体代码如下:
A =  [ 1     2     3
       4     5     6
       7     8     9
      10    11    12];
A_rank=rank(A); disp([’矩阵 A 的秩 = ’ num2str(A_rank)]);
[Q,R]=qr(A)   

奇异值分解在矩阵分析中占有极其重要的地位, svd()  即对于 m×n 的矩阵 A,若存在 m×m 的 酉矩阵 U 和 n×n 的酉矩阵 V,使得 A=U*ƒ†*V’,其中 ƒ†为一个 m×n 的非负对角矩阵,并且其 对角元素的值按降序排列,则式子 A=U*ƒ†*V’即为矩阵 A 的奇异值分解,U 、 ƒ†和 V 称为矩 阵 A 的奇异值分解的三对组。 gsvd()来进行一般 奇异值分解
奇异值分解实例:把矩阵 A 分解为奇异值的三对组,具体代码如下:
A=[1 2;3 4;5 6];
[U S V]=svd(A)

舒尔分解定义式为:
A=U*S*U’ 其中 A 必须是一个方阵,U 是一个酉矩阵,S 是一个块对角化矩阵,由对角线上的 1×1 和 2×2 块组成。特征值可以由矩阵 S 的对角块给出,而矩阵 U 给出比特征向量更多的数值特征。此外,对缺陷矩阵也可以进行舒尔分解  schur()
舒尔分解实例:对 4 阶魔方矩阵做舒尔矩阵,具体代码如下:
A=magic(4);% 4 阶魔方矩阵
[U S]=schur(A)


矩阵的特征值和特征向量
• d = eig(A),返回矩阵 A 的所有特征值。
• [V,D] = eig(A),返回矩阵 A 的特征值和特征向量,它们满足如下关系:A*V = V*D
• [V,D] = eig(A,’nobalance’),在求解特征值和特征向量时不采用初期的平衡步骤。一般来 说平衡步骤对输入矩阵进行调整,这使得计算出的特征值和特征向量更加准确。然而 如果输入矩阵中确实含有值很小的元素(可能会导致截断误差),平衡步骤有可能加大 这种误差,从而得到错误的特征值和特征向量。
• d = eig(A,B),返回矩阵 A 和 B 的广义特征值。
• [V,D] = eig(A,B),返回矩阵 A 和 B 的广义特征值和广义特征向量。
• [V,D] = eig(A,B,flag),flag 有’chol’和’qz’两种值。当 flag=’chol’时,计算广义特征值采用 B 的 Cholesky 分解来实现。当 flag=’qz’时,无论矩阵的对称性如何,都采用 QZ 算法 来求解广义特征值
其特征值和特征向量实例:,求解矩阵 A 的特征值和特征向量,具体代码如下:
A = [ 6    12    19
     -9   -20   -33
      4     9    15 ];
[V D]=eig(A)


非线性矩阵运算
expm 矩阵指数运算 logm 矩阵对数运算 sqrtm 矩阵开平方运算 funm 一般非线性矩阵运算
解一个线性微分方程组的问题就等效于计算矩阵指数运算。在 MATLAB 7.0 中函 数 expm()用于计算矩阵指数运算。其调用格式如下。 Y = expm(X),返回矩阵 X 的指数
矩阵指数运算实例:
A = [0    -6    -1;
     6     2   -16;     -5    20   -10];                 %矩阵 A
 x0=[1;1;1];                           %初值 x(0)
 t=0:0.01:1;                           %时间 t
 xt=[];                               %计算结果 x(t)
for i=1:length(t),                      %计算每个时间点上的 x(t)
    xt(i,:)=expm(t(i)*A)*x0;
end; plot3(xt(:,1),xt(:,2),xt(:,3),'-o')           %画三维图显示 x(t)
 grid on;                             %给图添加辅助网格
 xlabel('xt(:,1)');                       %给图的坐标轴 x 命名
 ylabel('xt(:,2)');                       %给图的坐标轴 y 命名
zlabel('xt(:,3)');                       %给图的坐标轴 z 命名
 title('矩阵指数函数结果');             %给图添加标题

矩阵对数运算是矩阵指数运算的逆运算,在 MATLAB 7.0 中函数 logm()用来实现矩阵对 数运算,其调用格式如下。
矩阵对数运算实例: logm()是函数 expm()的反函数,具体代码如下:
A=[1 2 3;4 5 6;7 8 9];
Y=expm(A)
A_expm_logm=logm(Y)

对矩阵 A 开平方得到矩阵 X,满足 X*X=A。如果矩阵 A 的某个特征值具有负实部,则 其平方根 X 为复数矩阵。如果矩阵 A 是奇异的,则它有可能不存在平方根 X。在 MATLAB 7.0 中有两种计算矩阵平方根的方法:A^0.5 和 sqrtm(A)。函数 sqrtm()比 A^0.5 的运算精度更高。 函数 sqrtm()的调用方法如下:
矩阵开平方运算实例:求一个正定矩阵 A 的平方根 X,并验证 X*X=A,具体代码如下:
A=[  5   -4    1;
    -4    6   -4;          1   -4    6];               %矩阵 A X=sqrtm(A)                       %矩阵的平方根 X
XX=X*X                           %X*X

一般非线性矩阵运算
MATLAB 7.0 提供了计算一般非线性矩阵运算的函数 funm(),其基本调用格式如下。 • F = funm(A,fun),把函数 fun 作用在方阵 A 上,其中 fun 是一个函数句柄。函数 fun 的 格式是 fun(X,k),其中 X 是一个向量,k 是一个标量。fun(X,k)返回的值应该是 fun 代 表的函数的 k 阶导数作用在向量 X 的值。fun 代表的函数的泰勒展开在无穷远处必须 是收敛的(函数 logm()是惟一的例外)。
exp funm(A, @exp) log funm(A, @log) sin funm(A, @sin) cos funm(A, @cos) sinh funm(A, @sinh) cosh funm(A, @cosh)
一般非线性矩阵运算实例:计算矩阵 A 的正弦函数,具体代码如下:
A=[  5   -4    1;
    -4    6   -4;          1   -4    6];               %矩阵 A A_sin=funm(A,@sin)               %计算矩阵 A 的正弦函数



矩阵元素的数学函数
三角函数
sin 正弦 sind 正弦,输入以度为单位 sinh 双曲正弦 asin 反正弦 asind 反正弦,输出以度为单位 asinh 反双曲正弦 cos 余弦 cosd 余弦,输入以度为单位 cosh 双曲余弦 acos 反余弦 acosd 反余弦,输出以度为单位 acosh 反双曲余弦 tan 正切 tand 正切,输入以度为单位 tanh 双曲正切 atan 反正切 atand 反正切,输出以度为单位 atan2 四象限反正切 atanh 反双曲正切 sec 正割 
函数名 功能描述 secd 正割,输入以度为单位 sech 双曲正割 asec 反正割 asecd 反正割,输出以度为单位 asech 反双曲正割 csc 余割 cscd 余割,输入以度为单位 csch 双曲余割 acsc 反余割 acscd 反余割,输出以度为单位 acsch 反双曲余割 cot 余切 cotd 余切,输入以度为单位 coth 双曲余切 acot 反余切 acotd 反余切,输出以度为单位 acoth 反双曲余切
三角函数实例:计算 0°~360°的正弦函数、余弦函数和它们平方和的值,具体代码如下:
x=0:10:360;                                     %角度 0°~360°
 figure(1);                                       %新开一个画图窗口
square_sum=sind(x).^2+cosd(x).^2;                  %正弦函数和余弦函数的平方和
plot(x,sind(x),'ro-',x,cosd(x),'g+-',x,square_sum,'bd-');    %画图
 xlabel('角度');                                    %标注横坐标
 ylabel('函数值');                                  %标注纵坐标
 legend('正弦函数','余弦函数','sin(x)^2+cos(x)^2');      %给图添加图例

指数和对数函数
exp 指数 realpow 对数,若结果是复数则报错 expm1 准确计算 exp(x)-1 的值 reallog 自然对数,若输入不是正数则报错 log 自然对数(以 e 为底) realsqrt 开平方根,若输入不是正数则报错 log1p 准确计算 log(1+x) 的值 sqrt 开平方根 log10 常用对数(以 10 为底) nthroot 求 x 的 n 次方根
log2 以 2 为底的对数 nextpow2
返回满足 2^P >= abs(N)的最小正整 数 P,其中 N 为输入 pow2 以 2 为底的指数
指数和对数函数实例:计算 ex和 2x的值,具体代码如下
x=-1:0.1:4;                                % x 值
 figure(1);                                 %新开一个画图窗口
plot(x,exp(x),'ro-',x,pow2(x),'g+-');             %画图
xlabel('x');                                %标注横坐标
 ylabel('函数值');                           %标注纵坐标
legend('e^x','2^x');                          %给图添加图例

复数函数
abs 绝对值(复数的模) real 复数的实部 angle 复数的相角 unwrap 调整矩阵元素的相位 complex 用实部和虚部构造一个复数 isreal 是否为实数矩阵 conj 复数的共轭 cplxpair 把复数矩阵排列成为复共轭对 imag 复数的虚部  
复数函数中除了函数 unwrap()和 cplxpair()的用法比较复杂外,其他函数都比较简单。下 面就详细介绍函数 unwrap()和 cplxpair()。 函数 unwrap()用于对表示相位的矩阵进行校正,当矩阵相邻元素的相位差大于设定阈值 (默认值为 π)时,函数 unwrap()通过加±2π来校正相位。函数 unwrap()的基本调用格式如下。 • Q = unwrap(P),当相位大于默认阈值 π时,矫正相位; • Q = unwrap(P,tol),用 tol 来设定阈值; • Q = unwrap(P,[],dim),用默认阈值 π在给定维 dim 上做相位矫正; • Q = unwrap(P,tol,dim),用阈值 tol 在给定维 dim 上做相位矫正
复数函数实例:下面数据是滤波器的相位响应,其中 w 为频率,p 为相位。下面程序将比较数据 校正前和程序后的差别,具体代码如下:
 w = 1000*[0.2:.2:3,3.5:1:10];                              %频率
p = [-1.5728 -1.5747 -1.5772 -1.5790 -1.5816 -1.5852 -1.5877 -1.5922 ...
     -1.5976 -1.6044 -1.6129 -1.6269 -1.6512 -1.6998 -1.8621 1.7252 ...       1.6124  1.5930  1.5916  1.5708  1.5708  1.5708 ]; %相位 
 figure(1);                                            %开一个新的画图窗口  
semilogx(w,p,’ro-’);                                    %用半对数坐标画原始数据  
hold on;                                             %保持原来的图  
semilogx(w,unwrap(p),’b*-’);                            %用半对数坐标画校正后数据  
xlabel(’频率’);                                        %添加横坐标说明 
 ylabel(’相位’);                                        %添加纵坐标说明 
 legend(’原始相频特性曲线’,’矫正后的相频特性曲线’);      %添加图例
函数 cplxpair()把复数数组排列成复数的共轭对。函数 cplxpair()的基本调用格式如下。 • B = cplxpair(A),以默认的误差容限 100*eps 寻找复数的共轭对; • B = cplxpair(A,tol),以指定的误差容限 tol 寻找复数的共轭对; • B = cplxpair(A,[],dim),在 dim 维度上,以默认的误差容限寻找复数的共轭对; • B = cplxpair(A,tol,dim),在 dim 维度上,以指定的误差容限 tol 寻找复数的共轭对
把复数数组排列成复数的共轭对,具体代码如下:
A=[1+i,2,0.5-3i,5+4i,6,1-i,5-4i,0.5+3i];            %复数矩阵
cplxpair(A)                                  %排列成共轭对

截断和求余函数
fix 向零取整 mod 除法求余(与除数同号) floor 向负无穷方向取整 rem 除法求余(与被除数同号) ceil 向正无穷方向取整 sign 符号函数 round 四舍五入
实例:采用下面的例子来说明函数 fix()、floor()、ceil()和 round()的区别,具体代码如下:
a=[-1.55 -1.45 1.45 1.55];
a_fix=fix(a)
a_floor=floor(a)
a_ceil=ceil(a)
a_round=round(a)
实例:用下面的例子说明函数 mod()和 rem()的区别,具体代码如下:
a=[10 -10 10 -10];
b=[8 -8 -8 8];
c_rem=rem(a,b)
c_mod=mod(a,b)
实例:求矩阵的符号使用函数 sign(),示例代码如下:
a=-2:2;
a_sign=sign(a)

特殊函数
特殊函数通常是数学物理方程的解,并且经常在数学、物理和工程问题中出现。MATLAB 7.0 提供的特殊函数及其功能如表 3-10 所示。
airy Airy 函数 erfc 余误差函数:erfc(x)=1-erf(x) besselj 第一类 Bessel 函数 erfcx erfcx(x) = exp(x^2) * erfc(x) bessely 第二类 Bessel 函数 erfinv 误差函数的逆函数

besselh 第三类 Bessel 函数 expint 指数积分函数 besseli 第一类 Bessel 函数 gamma Gamma 函数 besselk 第二类改进的 Bessel 函数 gammainc 不完全 Gamma 函数 beta Beta 函数 gammaln 对数 Gamma 函数 betainc 不完全 Beta 函数 psi 多 (Polygamma)函数 betaln 对数 Beta 函数 legendre 连带勒让德函数 ellipj Jacobi 椭圆函数 cross 矢量叉乘 ellipke 完全椭圆积分 dot 矢量点乘 erf 误差函数
Airy 函数、Bessel 函数、Gamma 函数、Beta 函数、Jacobi 椭圆函数和完全 椭圆积分、误差函数、指数积分函数和连带勒让德函数

数论函数
factor 分解质因子 rat 把实数近似为有理数 isprime 是否为素数 rats 利用 rat 函数来显示输出 primes 小于等于输入值的素数 perms 给出向量的所有置换
gcd 最大公因素 nchoosek
计算Ck n
,即 n 种事物中一次取出 k 种事物的组合数目 lcm 最小公倍数 factorial 阶乘
实例:,求 78 的所有质因子,具体代码设置如下:
f=factor(78)
实例:求组合数 ,具体代码设置如下:
c=nchoosek(10,3)

坐标变换函数
cart2sph 笛卡尔坐标系转换为球坐标系 sph2cart 球坐标系转换为笛卡尔坐标系 cart2pol 笛卡尔坐标系转换为极坐标系 hsv2rgb 灰度饱和度颜色空间转换为 RGB 颜色空间 pol2cart 极坐标系转换为笛卡尔坐标系 rgb2hsv RGB颜色空间转换为灰度饱和度颜 色空间
实例:例如,把笛卡尔坐标系中的点(1,1,1)分别转换到球坐标系和极坐标系中,代码设置如 下:
[THETA,PHI,R] = cart2sph(1,1,1)
[THETA,RHO,Z] = cart2pol(1,1,1)



/////////////////////////////的数值计算、符号计 算、矩阵运算的能力和丰富的画图功能////////////////////////
版权声明:本文为博主原创文章,未经博主允许不得转载。

MATLAB矩阵分析与处理

  • 2015年03月08日 19:40
  • 432KB
  • 下载

数组分析 jacobi法求实对称矩阵全部特征值与特征向量 MATLAB实现

Jacobi迭代法求解实对称矩阵的特征值与特征向量。 MATLAB实现 输入:eps允许的误差限,A实对称矩阵;输出:lam是n个特征值,U的列向量对应特征向量...

数值分析 反幂法求矩阵按模最小特征值 MATLAB实现

值分析第四版 颜庆津 计算实习题P238 结果: %function [lam]=jingmi(ep) %反幂法求矩阵按模最小特征值 %2015.11.8 密密编写  (*^__^...

MATLAB矩阵分析与处理

  • 2010年07月10日 10:49
  • 308KB
  • 下载

MATLAB矩阵分析

一、矩阵的基础知识 close all; clear all; clc; %% 改变矩阵尺寸 a=eye(3); a(2,4)=3;%添加第四列,第二行元素为3,其余为0 a(:,4)=3;%添加第...

MATLAB矩阵计算工具箱

  • 2014年11月07日 15:15
  • 546KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:matlab矩阵分析
举报原因:
原因补充:

(最多只允许输入30个字)