matlab基础学习笔记(一)

概述

函数

  1. 查询函数(知道函数名): help+函数名
  2. MATLAB联机帮助: helpwin
  3. 查询函数(不知道全部函数名,模糊查询): lookfor+函数信息
  4. 内存变量列表:who
  5. 内存变量信息:
  6. 目录中的文件列表: what
  7. 确定文件位置: which
  8. 变量检验函数: exist

基础知识

命令

  1. 指令输入提示符 >>
  2. 函数格式输入,
  3. 不能有中文
  4. 必须符合逻辑
  5. %为注释
  6. 加 ;不显示执行的结果
  7. …为续行号

数据类型

  1. 整型

  2. 浮点型 默认双精度 ,用class(single(4))转换为单精度

  3. format格式符,输出格式受影响,数据的计算和存储不影响

    >>format long
    >>50/3
    ans = 
    	16.666666666666668
    >>format
    >>50/3
    ans = 
    	16.6667
    

常用的数学函数

  1. 函数的调用格式

    函数名(函数自变量的值)

  2. 应用

    1. 角度为单位 函数名加d

    2. abs函数,求 绝对值,复数的模,ASCII值

    3. 用于取整的 fix(舍小数)、floor、ceil(up)、round(四舍五入)

    4. rem 取余

    5. isprime函数 判断是否是素数

    6. inv§ 求逆矩阵


变量与赋值语句

  1. 变量名必须以字母开头

  2. 变量名区分字母的大小写

  3. 标准函数名以及命令名必须使用小写字母

  4. 预定义变量

ans 默认赋值变量

NaN代表 非数

  1. 变量的管理

    1. 内存变量的修改和删除

      who和whos

    2. 内存变量文件

      .mat

      save 创建内存变量文件 load命令,装入内存变量文件

      >>save mydata a x
      >>load mydata
      

矩阵的表示

  1. 矩阵的建立

    1. 直接输入法

      >>A=[1,2,3;4,5,6;7,8,9]
      A=
      	1  2  3
      	4  5  6
      	7  8  9
      
    2. 利用已经建立好的矩阵,建立更大的矩阵

      >>A=[1,2,3;4,5,6;7,8,9];
      >>B=[-1,-2,-3;-4,-5,-6;-7,-8,-9];
      >>C=[A,B;B,A]
      
    3. 利用实部矩阵和虚部矩阵构成复数矩阵

      >>B=[1,2,3;4,5,6];
      >>C=[6,7,8;9,10,11];
      >>A=B+i*C
      A=
      	
      
  2. 冒号表达式

    1. 格式:e1:e2:e3 e2=1可省略
    
    >>t=0:1:5
    t=
    	0 1 2 3 4 5
    
    
    1. linspace函数 产生行向量

      格式:linspace(a,b,n) n为元素总数,n省略时,自动产生100个元素

结构矩阵和单元矩阵

  1. 结构矩阵
    1. 格式: 结构矩阵元素.成员名=表达式
  2. 单元矩阵
    1. 用大括号

矩阵元素的引用方式

  1. 用下标来引用矩阵的元素

  2. 用序号 序号和矩阵一一对应

    >> A=[1,2,3;4,5,6]
    A =
         1     2     3
         4     5     6
    >> A(3)
    ans =
         2
    
  3. 序号和下标可以利用sub2ind和ind2sub函数实现相互转换

    ​ D=sub2ind(S,I,J) S 行数和列数组成的向量

    >> A=[1:3;4:6]
    A =
         1     2     3
         4     5     6
    >> size(A)
    ans =
         2     3
    >> D=sub2ind(size(A),[1,2;2,2],[1,1;3,2])
    D =
         1     2
         6     4
    %第二种     
    >>  [I,J]=ind2sub([3,3],[1,3,5])  %格式:int2sub(向量,序号)
    I =
         1     3     2
    J =
         1     1     2
    
  4. 利用冒号表达式获得子矩阵

    用单个冒号 A(i,:) A(i:i+m,k:k+m)

  5. end 运算符:表示某一维的末尾元素下标

  6. 利用空矩阵删除矩阵的元素

    直接置为空矩阵,A(:,[2,4])=[]

  7. 改变矩阵的形状

    reshape(A,m,n)

    A(:)把每一列元素堆叠起来成为一个列向量

基本运算

算数运算
  1. 基本

    在矩阵意义下运算

    加减运算:同型矩阵

    乘法运算:A、B矩阵可乘

    除法运算:右除/左除\

    乘方运算:A^x A为方阵 x为标量

  2. 点运算(同型)

    A.*B 里面的每个元素一一相乘

关系运算符 不等于 ~=

​ 标量 直接比较

​ 同型矩阵 按照标量关系逐个进行

​ 一个标量 一个矩阵 逐个进行

逻辑运算

​ 逻辑异或 xor 两个操作数为0时,结果卫0,否则为1

​ any

字符串处理

  1. 用单引号括起来的字符序列

    >> xm='Central South University'
    >> xm(1:3)
    ans =
        'Cen'
    
  2. 若字符串中的字符含有单引号,则该单引号字符要用两个单引号表示

  3. 建立多行,形成字符串矩阵

    >> ch=['abcdef';'123456']
    >> ch(2,3)
    ans =
        '3'
    
字符串的操作
  1. 执行

    格式 eval(s)

    >> t=pi;
    >> m='[t,sin(t),cos(t)]';
    >> y=eval(m)
    y =
        3.1416    0.0000   -1.0000
    
  2. 与数值之间的转换

    1. abs和double函数都可以用来获取字符串矩阵所对应的ASCII值数值矩阵

    2. char函数可以把ACSII值矩阵转换为字符串矩阵

      >> s1='MATLAB'
      >> a=abs(s1)
      a =
          77    65    84    76    65    66
      >> char(a+32)
      ans =
          'matlab'
      
  3. 字符串的比较

    1. 关系运算符

    比较规则:每个字母按ASCII值大小逐个比较,结果为一个数值向量,1或0

    维度必须一致

    1. 字符串比较函数
      1. strcmp(s1,s2 ):用于比较字符串s1和s2是否相等
      2. strncmp(s1,s2,n):比较两个字符串前n个字符是否相等,如果相等,返回1
      3. strcmpi(s1,s2):在忽略字母大小写的前提下,比较,如相等,返回1
      4. strncmpi(s1,s2,n):在忽略大小写前提下,比较前n个字符
    2. 字符串的查找与替换
      1. findstr(s1,s2):返回短字符串在长字符串中的开始位置
      2. strrep(s1,s2,s3):将字符串s1中的所有子字符串s2替换为字符串s3

矩阵处理

特殊矩阵

  1. 通用性的特殊矩阵
    1. zeros函数:零矩阵

      zeros(m):m×m

      zeros(m,n):m×n

      zeros(size(A)):与A同样大小的零矩阵

      >> A=fix(10+(99-10+1)*rand(5))
      >> B=0.6+sqrt(0.1)*randn(5);
      >> C=eye(5);
      >> (A+B)*C==C*A+B*C
      ans =
        5×5 logical 数组
         1   1   1   1   1
         1   1   1   1   1
         1   1   1   1   1
         1   1   1   1   1
         1   1   1   1   1
      
    2. ones函数:全1矩阵,幺矩阵

    3. eye函数:对角线为1的矩阵

    4. rand函数:产生(0,1)区间均匀分布的随机矩阵

    5. randn函数:产生均值为0,方差为1的标准正态分布随机矩阵

  2. 用于专门学科的特殊矩阵
    1. 魔方矩阵

      • n阶魔方阵由1,2,3,···,n²共n²个整数组成,且每行每列以及主、副对角线上各n个元素之和都相等

      • n阶魔方阵每行每列元素的和为(1+2+3+···+n²)/n=(n+n³)/2

      • 只产生一个特定的魔方阵

    2. 范德蒙矩阵

      • 对于向量v= [v1,v2,···,vn],范德蒙矩阵的一般形式为:

      • 函数vander(V)生成以V为基础的范德蒙矩阵

        常用于纠错编码

    3. 希尔伯特矩阵

      一般形式:

      H(i,j)=1/(i+j-1)

      生成n阶希尔伯特矩阵的函数 hilb(n)

    4. 伴随矩阵

      生成伴随矩阵的函数为 compan§,其中p是一个多项式的系数矩阵,高次幂系数排在前,低次幂系数排在后。

      >> p=[1,-2,-5,6];
      >> A=compan(p)
      A =
             2              5             -6       
             1              0              0       
             0              1              0     
      
    5. 帕斯卡矩阵

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H142UI0H-1611404743488)(E:\学习\图片笔记\帕斯卡矩阵.png)]

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

矩阵变换

对角阵

​ 对角矩阵:只有对角线上有非零元素

​ 数量矩阵:对角线上的元素相等

​ 单位矩阵:对角线上的元素都为1

  1. 提取矩阵的对角元素

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

    diag(A,k):提取矩阵A的第k条对角线元素,产生一个列向量

  2. 构造对角矩阵

    diagV):以向量V为主对角线元素,产生对角矩阵

    diag(V,k):以向量V为第K条对角线元素,产生对角矩阵

三角阵
  1. 上三角阵

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

    triu(A,k):

  2. 下三角阵:对角线以上的元素都为零

    tril(A)

矩阵的转置
  1. 运算符 .’
  2. 共轭转置 ‘
矩阵的旋转
  1. rot90(A,k):将矩阵A逆时针方向旋转90°的K倍,k为1时可省略
矩阵的翻转

​ fliplr(A):对矩阵A实施左右翻转

​ flipud(A):上下翻转

矩阵求逆

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LJdhj8mO-1611404743493)(E:\学习\图片笔记\逆矩阵.png)]

inv(A)

矩阵求值

方阵的行列式

​ det(A)

矩阵的秩

​ rank(A)

矩阵的迹

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

​ trace(A) sum(diag(A))

向量和矩阵的范数
  1. 向量的三种范数
    1. 1范数 向量元素的绝对值之和
    2. 2范数 向量元素绝对值的平方和的平方根
    3. ∞范数 所有向量元素绝对值中的最大值
    4. 函数:
      1. norm(V) norm(V,2) 2范数
      2. norm(V,1) 1范数
      3. norm(V,inf) ∞范数
  2. 矩阵的范数
    1. 矩阵的1范数 矩阵列元素绝对值之和的最大值 norm(V,1)
    2. 矩阵的2范数 AA’矩阵的最大特征值的平方根 norm(V) norm(V,2)
    3. 矩阵的∞范数 所有矩阵行元素绝对值之和的最大值 norm(V,inf)
矩阵的条件数
  • ​ 矩阵A的条件数等于A的范数与A的逆矩阵的范数的乘积
  • ​ 条件数越接近于1,矩阵的性能越好,反之,矩阵的性能越差
  • ​ 函数
    • cond(A,1)
    • cond(A) cond(A,2)
    • cond(A,inf)

矩阵的特征值与特征向量

​ Ax=λx

  1. 格式 E=eig(A) 求A 的全部特征值,构成向量E
  2. [X,D]=eig(A): 求A的全部特征值,构成对角阵D ,并产生矩阵X,X各列是相应的特征向量
几何意义
>> x=[0,0.5,0.5,3,5.5,5.5,6,6,3,0;0,0,6,0,6,0,0,8,1,8];
>> A=[1,0.5;0,1];
>> y=A*x;
>> subplot(2,2,1);
>> fill(x(1,:),x(2,:),'r');
>> subplot(2,2,2);
>> fill(y(1,:),y(2,:),'r');

稀疏矩阵

矩阵的存储方式
  1. 完全存储方式

  2. 稀疏存储方式

    只存储矩阵的非零元素的值及其位置,即行号和列号

稀疏存储方式的产生
  1. 两个之间的转换

    1. A=sparse(S):将矩阵S转换为稀疏存储方式的矩阵A

    2. S=full(A) :将矩阵A转换为完全存储方式的S

      >> A=sparse(eye(5))
      A =
         (1,1)        1
         (2,2)        1
         (3,3)        1
         (4,4)        1
         (5,5)        1
      >> B=full(A)
      B =
           1     0     0     0     0
           0     1     0     0     0
           0     0     1     0     0
           0     0     0     1     0
           0     0     0     0     1
      >> whos
        Name      Size            Bytes  Class     Attributes
        A         5x5               128  double    sparse    
        B         5x5               200  double              
      
直接建立稀疏矩阵
  1. sparse(m,n)生成一个m×n的所有元素都是零的稀疏矩阵

  2. sparse(u,v,S):其中u,v,s是三个等长的向量,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
    
  3. spconvert(A) 直接建立

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-isHdkLZI-1611404743496)(E:\学习\图片笔记\稀疏矩阵.png)]

带状稀疏矩阵
  • ​ 是指所有非零元素集中在对角线上的矩阵
  • ​ [B,d]=spdiags(A):从带状稀疏矩阵A中提取全部非零对角线元素赋给矩阵B及其这些非零对角线的位置向量d
  • ​ A=spdiags(B,d,m,n):产生带状稀疏矩阵的系数存储矩阵A,其中m、n为原袋装稀疏矩阵的行数和列数,矩阵B的第i列即为原带状稀疏矩阵的第i条非零对角线,向量d为原带状稀疏矩阵所有非零对角线的位置
>> A=[11,0,0,12,0,0;0,21 ,0,0,22,0;0,0,31,0,0,32;41 ,0,0,42,0,0;0,51,0,0,52,0]
A =
    11     0     0    12     0     0
     0    21     0     0    22     0
     0     0    31     0     0    32
    41     0     0    42     0     0
     0    51     0     0    52     0
>> [B,d]=spdiags(A)
B =
     0    11    12
     0    21    22
     0    31    32
    41    42     0
    51    52     0
d =
    -3
     0
     3
  • ​ 带状系数矩阵的系数存储
>> A=spdiags(B,d,5,6)
A =
   (1,1)       11
   (4,1)       41
   (2,2)       21
   (5,2)       51
   (3,3)       31
   (1,4)       12
   (4,4)       42
   (2,5)       22
   (5,5)       52
   (3,6)       32
  • 单位矩阵的稀疏存储

    speye(m,n)返回一个m×n的稀疏存储单位矩阵

0 0
0 21 0 0 22 0
0 0 31 0 0 32
41 0 0 42 0 0
0 51 0 0 52 0

[B,d]=spdiags(A)
B =
0 11 12
0 21 22
0 31 32
41 42 0
51 52 0
d =
-3
0
3


- ​	带状系数矩阵的系数存储

```matlab
>> A=spdiags(B,d,5,6)
A =
   (1,1)       11
   (4,1)       41
   (2,2)       21
   (5,2)       51
   (3,3)       31
   (1,4)       12
   (4,4)       42
   (2,5)       22
   (5,5)       52
   (3,6)       32
  • 单位矩阵的稀疏存储

    speye(m,n)返回一个m×n的稀疏存储单位矩阵

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值