• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

matlab学习记(一)矩阵

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

为了不拖数模小队【魏公村汽配维修站良乡分站数模岗】的后腿而被他们踢出去 开始学一学matlab
先占个坑,晚上近现代史再搞

1.m文件:
类似于封装函数,m文件名为函数名,以function f(x)开始,保存后可以在命令行中调用该函数
2.数组:
构造:

x=[1,2,3,4,5,6];%无分号就会直接输出左值
x=[1,2,3;4,5,6];%用分号换行构造二维数组
x=m:k:n%从m到n的一维数组,步长为k
x=linspace(m,n,k)%从m到n有k+1个元素

四则运算:

%数组与数 x=[a,b,c,d,e],q;
x+q=[a+q,b+q,c+q,d+q,e+q];
x-q=[a-q,b-q,c-q,d-q,e-q];
x*q=[a*q,b*q,c*q,d*q,e*q];
x/q=[a/q,b/q,c/q,d/q,e/q];
x\.q=[q/a,q/b,q/c,q/d,q/e];
x^q=[a^q,b^q,c^q,d^q,e^q];
q.^x=[q^a,q^b,q^c,q^d,q^e];
%数组与数组

(好吧再列举有点蠢:数组之间乘除法,乘方已有定义,会被当成矩阵,因此需要加上.用来重构,/是左除右,\是右除左)
3.矩阵
1)特殊矩阵

a=eye(m,n)%单位矩阵
b=zeros(m,n)%零矩阵
c=ones(m,n)%全一矩阵
d=rand(m,n)%0-1区间随机矩阵
e=randn(m.n)%均值为0,方差为1的标准正态分布随机矩阵
%缺省一个参数时默认为方阵
b=zeros(m);
b=zeros(size(A)) % 和A矩阵相同大小

2.魔方矩阵
n阶魔方阵由1,2,...\(n^2\)组成,每一行,列,对角线上各n个元素之和都相等=\(1+2+...+n^2=\frac{n+n^3}{2}\)
n>2时有多种魔方阵,magic(n)产生一个特定的魔方阵


>> m=magic(8);
>> sum(m(1,:))

ans =

   260

>> sum(m(:,1))

ans =

   260

3.范德蒙方阵
对于向量v=[v1,v2,...,vn],范德蒙矩阵的一般形式为:倒数第i列是v的i-1次方,范德蒙矩阵常用在各种通信系统的纠错编码中

3.希尔伯特矩阵

n阶希尔伯特矩阵一般形式为h(i,j)=\(\frac{1}{i+j-1}\)

>> format rat
>> h=hilb(4)

h =

       1              1/2            1/3            1/4     
       1/2            1/3            1/4            1/5     
       1/3            1/4            1/5            1/6     
       1/4            1/5            1/6            1/7     

>> 

4.伴随矩阵

设多项式p(x)为\(a_{n}x^{n}+a_{n-1}x^{n-1}+..+a_{1}x+a0\),其伴随矩阵为第一行为an-1~a0/an;其他行是一个少一行的单位矩阵

>> p=[1,-2,-5,6];
>> a=compan(p)

a =

       2              5             -6       
       1              0              0       
       0              1              0       

>> 

伴随矩阵的特征值等于多项式方程的根

5.帕斯卡矩阵

把二项式系数依次填写在矩阵的左侧对角线上

帕斯卡矩阵的逆矩阵各元素也是整数

>> format rat
>> p=pascal(5)

p =

       1              1              1              1              1       
       1              2              3              4              5       
       1              3              6             10             15       
       1              4             10             20             35       
       1              5             15             35             70       

>> inv(p)

ans =

       5            -10             10             -5              1       
     -10             30            -35             19             -4       
      10            -35             46            -27              6       
      -5             19            -27             17             -4       
       1             -4              6             -4              1       

>> 

2)矩阵分块

a[i:j,m:n]%提取a矩阵中i~j行,m~n列的子矩阵
a[:,m:n]%没有数默认为矩阵的边界

3)矩阵合并

%a,b为两矩阵
[a b]a左b右
[a;b]a上b下

4)矩阵运算

a+b
a*b
det(a) % a的行列式
inv(a) % a的逆矩阵
a/b % a*inv(b)
a\b % b*inv(a)

1.提取矩阵的对角线元素

diag(A):矩阵a主对角线元素,产生一个列向量

diag(A,k):提取a第k条对角线的元素,产生一个列向量(与主对角线平行,向上依次为第一条,第二条)

2.构造对角矩阵

diag(V):构造以向量V为主对角线元素的对角矩阵。

diag(V,k):构造以向量V为第k条对角线元素的对角矩阵

eg.先建立5*5矩阵A,然后将A的第一行元素乘以1,第二行乘以2,...第五行乘以5

>> A=[7,0,1,0,5;3,5,7,4,1;4,0,3,0,2;1,1,9,2,3;1,8,5,2,9]

A =

       7              0              1              0              5       
       3              5              7              4              1       
       4              0              3              0              2       
       1              1              9              2              3       
       1              8              5              2              9       

>> d=diag(1:5);
>> d*A

ans =

       7              0              1              0              5       
       6             10             14              8              2       
      12              0              9              0              6       
       4              4             36              8             12       
       5             40             25             10             45       

每一列乘以i的话可以右乘

3.三角阵

上/下三角阵

上三角阵:triu(A):提取矩阵A的主对角线及以上的元素

triu(A,k):提取矩阵A的第k条对角线即以上的元素

>> triu(ones(4),-1)

ans =

       1              1              1              1       
       1              1              1              1       
       0              1              1              1       
       0              0              1              1       

tril下三角矩阵

4.矩阵的转置

转置运算符是(.\')

共轭转置(’)在转置的基础上取每个数的复共轭

>> a=[1,3;3+4i,1-2i]

a =

       1        +    0i             3        +    0i      
       3        +    4i             1        -    2i      

>> a.\'

ans =

       1        +    0i             3        +    4i      
       3        +    0i             1        -    2i      

>> a\'

ans =

       1        +    0i             3        -    4i      
       3        +    0i             1        +    2i      

>> 

5.矩阵的旋转

rot90(A,k):将矩阵A逆时针方向旋转90°的k倍

A=[1,3,2;-3,2,1;4,1,2]

A =

       1              3              2       
      -3              2              1       
       4              1              2       

>> rot90(A)

ans =

       2              1              2       
       3              2              1       
       1             -3              4       

>> rot90(A,2)

ans =

       2              1              4       
       1              2             -3       
       2              3              1       

6.矩阵的反转

对矩阵实施左右旋转是将原矩阵的第一列与最后一列调转,以此类推

fliplr(A):左右翻转

flipud(A):上下翻转

eg.验证魔方阵的主对角线,副对角线元素之和相等

>> a=magic(5);
>> d1=diag(a);
>> sum(d1)

ans =

      65       
>> b=flipud(a);
>> d2=diag(b);
>> sum(d2)

ans =

      65       

>> 

7.矩阵的秩

rank(k)

eg.求3~20阶魔方阵的秩

>> for n=3:20
r(n)=rank(magic(n));
end
>> bar(r)
>> grid on
>> axis([2,21,0,20])
>> [3:20;r(3:20)]

ans =

  列 1 至 6

       3              4              5              6              7              8       
       3              3              5              5              7              3       

  列 7 至 12

       9             10             11             12             13             14       
       9              7             11              3             13              9       

  列 13 至 18

      15             16             17             18             19             20       
      15              3             17             11             19              3       

>> 

观察表格可得:奇数阶魔方阵秩为n,为满秩矩阵

n%2==0&&n%4!=0时 秩为n/2+2

n%4==0时秩为3

8.矩阵的迹

矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和

trace(A)

>> a=[1,3,2;-3,2,1;4,1,2]

a =

     1     3     2
    -3     2     1
     4     1     2

>> b=trace(a)

b =

     5

>> t=sum(diag(a))

t =

     5

>>

9.向量和矩阵的范数

用来度量矩阵或向量在某种意义上的长度

向量的3种常用范数:

1)向量1范数:向量元素的绝对值之和 norm(v) / norm(v,2)

2)向量2范数:向量元素绝对值的平方和的平方根 norm(v,1)

3)向量无穷范数:所有向量元素绝对值中的最大值 norm(v,inf)

矩阵的3种常用范数:

1)矩阵1范数:所有矩阵列元素绝对值之和的最大值

2)矩阵2范数:A‘ A矩阵的最大特征值的平方根

3)矩阵无穷函数:所有矩阵行元素绝对值之和的最大值

10.矩阵的条件数

矩阵的条件数等于a的范数与a的逆矩阵的范数的乘积

条件数越接近于1,矩阵的性能越好,反之,矩阵性能越差

cond(a,1) / cond(a,inf)...

eg.求2~10阶希尔伯特矩阵的条件数

for n=2:10
c(n)=cond(hilb(n));
end
>> format long
>> c\'

ans =

   1.0e+13 *

                   0
   0.000000000001928
   0.000000000052406
   0.000000001551374
   0.000000047660725
   0.000001495105864
   0.000047536735656
   0.001525757556904
   0.049315340974782
   1.602491697370065

可以看出:随着阶数的增加,希尔伯特矩阵的条件数不断增大,矩阵性能变差
11.矩阵的特征值与特征向量

e=eig(A):求矩阵A的全部特征值,构成向量e

[x,d]=eig(A):求矩阵A的全部特征值,构成对角阵d并产生矩阵X,X的每列是相应的特征向量

>> a=[1,1,0;1,0,5;1,10,2]

a =

     1     1     0
     1     0     5
     1    10     2

>> [x,d]=eig(a)

x =

   0.072196186226992   0.975064063761619   0.088619224195265
   0.523368974057523  -0.075013465822402  -0.635606218080313
   0.849042182514069  -0.208861321230112   0.766910274178584


d =

   8.249260679947779                   0                   0
                   0   0.923068166892526                   0
                   0                   0  -6.172328846840312

>> a*x(:,1)

ans =

   0.595565160284515
   4.317407098797336
   7.003970291830360

>> d(1)*x(:,1)

ans =

   0.595565160284514
   4.317407098797333
   7.003970291830354

>> 

12.稀疏矩阵

只储存矩阵的非零元素的值及其位置,即行号和列号,矩阵元素的储存顺序并没有改变,可以大大节约储存空间。

a=sparse(s) : 转化稀疏矩阵

s=full(A) :转化回完全储存方式

sparse(m , n):生成一个m*n的所有元素为0的稀疏矩阵

sparse(u,v,S): u,v,S是3个等长的向量,s是要建立的稀疏矩阵的非零元素,u(i),v(i)分别是s(i)的行和列下标

>> a=sparse([1,2,2],[2,1,4],[4,5,-7])

a =

   (2,1)        5
   (1,2)        4
   (2,4)       -7

>> b=full(a)

b =

     0     4     0     0
     5     0     0    -7

>> 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
MATLAB产生随机阶跃信号发布时间:2022-07-18
下一篇:
Delphi限制Edit输入发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap