《Matlab学习》【1】矩阵运算、基本指令、基本函数、基本知识

目录

1.关键字

2. Format

2.1 format long

2.2 format short

2.3 format shortE

2.4 format longE

2.5 format bank(小数点后包含 2 位数)

2.6 format  hex(二进制双精度数字的十六进制表示形式)

2.7 format rat(非常常用)---以分数的形式显示

3.一些基础的命令

4.矩阵

4.1行矩阵--空格隔开或者逗号“,”隔开

4.2列矩阵分号“;”隔开

4.3矩阵乘法

4.4构造一个m×n的矩阵

4.5矩阵索引

4.6矩阵修改和索引

 4.7向量的创建colon

4.8矩阵的拼接

4.9其它形式的矩阵

5.矩阵与矩阵,矩阵与实数的运算

5.1矩阵相关函数

OVER


1.关键字

ans命令行中经常看到的
i,j复数
Inf,-Inf∞   例:1/0=inf; log(0)=-inf
eps一个很小的数  2.2204e-16
NaN不是一个数 例:inf/inf=NaN
piπ

也可以使用命令:iskeyword显示

    {'break'     }
    {'case'      }
    {'catch'     }
    {'classdef'  }
    {'continue'  }
    {'else'      }
    {'elseif'    }
    {'end'       }
    {'for'       }
    {'function'  }
    {'global'    }
    {'if'        }
    {'otherwise' }
    {'parfor'    }
    {'persistent'}
    {'return'    }
    {'spmd'      }
    {'switch'    }
    {'try'       }
    {'while'     }


2. Format

在你想要的format形式下,先format在键入你想要的结果

2.1 format long

>> format long
>> pi

ans =

   3.141592653589793

2.2 format short

>> format short
>> pi

ans =

    3.1416

2.3 format shortE

>> format shortE
>> pi

ans =

   3.1416e+00

2.4 format longE

>> format longE
>> pi

ans =

     3.141592653589793e+00

2.5 format bank(小数点后包含 2 位数)

>> format longE
>> pi

ans =

     3.141592653589793e+00

2.6 format  hex(二进制双精度数字的十六进制表示形式)

>> format hex
>> pi

ans =

   400921fb54442d18

2.7 format rat(非常常用)---以分数的形式显示

>> format rat
>> 3/13 + 4/14 + 5/15

ans =

     232/273  

注:如果恢复默认值直接键入format即可


3.一些基础的命令

clc清除命令行窗口
clear/clear all清除所有的变量
who显示所有的变量
whos显示所有变量的信息,也可以指定变量whos 变量名
>>x = 1;
>>y = 2;
>>C = 3.1;
>> who

您的变量为:

C  x  y  
>> whos
  Name      Size            Bytes  Class     Attributes

  C         1x1                 8  double              
  x         1x1                 8  double              
  y         1x1                 8  double   
>> whos x
  Name      Size            Bytes  Class     Attributes

  x         1x1                 8  double  

4.矩阵

4.1行矩阵--空格隔开或者逗号“,”隔开

>> a = [1 2 3 4]

a =

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

a =

     1     2     3     4

4.2列矩阵分号“;”隔开

>> b = [1; 2; 3; 4]

b =

     1
     2
     3
     4

4.3矩阵乘法

>> a*b

ans =

    30

>> b*a

ans =

     1     2     3     4
     2     4     6     8
     3     6     9    12
     4     8    12    16

4.4构造一个m×n的矩阵

>> A = [1 21 6; 5 17 9; 31 2 7]

A =

     1    21     6
     5    17     9
    31     2     7

4.5矩阵索引

如果查找矩阵中的某个元素的话,原则如上图,它是按照第一列进行标号,下面是5中不同基础的索引方式。

>> A(8) % 按照列标号

ans =

     9
>> A([1 3 5]) % 第一个数是1 第二个数是31 第三个数是17

ans =

     1    31    17
>> A([1 3; 1 3]) % 第一个数是1 和第三个数是31这是一行后面分号“;”之后就会变行

ans =

     1    31
     1    31
>> A([4 3; 5 7])

ans =

    21    31
    17     6
>> A(3, 2) % A(行,列)第3行第二列

ans =

     2

下面这个相对有点复杂不过还是很好理解

>> A([1 3], [1 3]) % 如上图所示,前面的[1 3]表示第1 3行,后面的[1 3]表示第1 3列。也就是说逗号前面表示行,后面表示列,之后的交集就是所求矩阵

ans =

     1     6
    31     7
>> A([1], [2]) % 第1行第2列这种直接用A(1, 2)形式更好

ans =

    21

>> A([1 2 3], [2 3]) % 1 2 3行,2 3列的交集,读者可自行尝试

ans =

    21     6
    17     9
     2     7

4.6矩阵修改和索引

 

 读者可以尝试以上矩阵的修改。

>> A(1, 2) = 76 % 单独修改某一个元素,可以直接行列方式索引

A =

     1    76     6
     5    17     9
    31     2     7
>> A(3,:) % 提取某一行

ans =

    31     2     7

>> A(:, 2) % 提取某一列

ans =

    76
    17
     2

>> A(3, :) = [] % 去除某一行

A =

     1    76     6
     5    17     9
>> A(:, 2) = [] % 去除某一列

A =

     1     6
     5     9
>> A = [1 21 6 4; 5 17 9 34; 31 2 7 33; 3 56 2 21] % 重新构造一个A

A =

     1    21     6     4
     5    17     9    34
    31     2     7    33
     3    56     2    21

>> A(:, 1:3) % 对第1至第3列进行索引

ans =

     1    21     6
     5    17     9
    31     2     7
     3    56     2

>> A(2:4, :) % 对第2至第4行进行索引

ans =

     5    17     9    34
    31     2     7    33
     3    56     2    21

>> A(:) % 重构A,从第1列开始一次排成一列

ans =

     1
     5
    31
     3
    21
    17
     2
    56
     6
     9
     7
     2
     4
    34
    33
    21

 4.7向量的创建colon

x = j:k创建一个包含元素 [j,j+1,j+2,...,j+m] 的单位间距向量 x
x  =  j : i:  k创建一个等间距向量 x,以 i 作为元素之间的增量
>> x = 1:9 % 步长为1

x =

     1     2     3     4     5     6     7     8     9

>> x = 1:2:6 % 步长为2

x =

     1     3     5

>> x = 10:-1:0 % 步长为复数时会递减

x =

    10     9     8     7     6     5     4     3     2     1     0
>> str = 'a':2:'z' % 也可以是字符串

str =

    'acegikmoqsuwy'
>> a = ([1:5; 2:3:15; -2:0.5:0]) % 也可以创建一个矩阵。前提维数要一样

a =

    1.0000    2.0000    3.0000    4.0000    5.0000
    2.0000    5.0000    8.0000   11.0000   14.0000
   -2.0000   -1.5000   -1.0000   -0.5000         0

4.8矩阵的拼接

>> a = [1 2; 3 4]

a =

     1     2
     3     4

>> b = [5 6; 7 8]

b =

     5     6
     7     8

>> A = [a b] % 增广矩阵

A =

     1     2     5     6
     3     4     7     8

>> B = [a; b] % b于a下方

B =

     1     2
     3     4
     5     6
     7     8

4.9其它形式的矩阵

linspace()y = linspace(x1,x2,n) 生成 n 个点。这些点的间距为 (x2-x1)/(n-1)
eye()单位矩阵
ones()全1矩阵
zeros()全0矩阵
diag()D = diag(v) 返回包含主对角线上向量 v 的元素的对角矩阵
rand()rand(n) 返回一个由均匀分布的随机数组成的 n×n 矩阵(介于0-1之间)
>> linspace(-1, 3, 4) % 生成4个元素,距离为(3-(-1))/(4-1)

ans =

   -1.0000    0.3333    1.6667    3.0000

>> eye(3) % 单位矩阵

ans =

     1     0     0
     0     1     0
     0     0     1

>> ones(4) % 全1矩阵

ans =

     1     1     1     1
     1     1     1     1
     1     1     1     1
     1     1     1     1

>> zeros(3) % 全0矩阵

ans =

     0     0     0
     0     0     0
     0     0     0

>> a = [1 2 3 4 5] % 向量a

a =

     1     2     3     4     5

>> diag(a) % 对角是向量a的矩阵

ans =

     1     0     0     0     0
     0     2     0     0     0
     0     0     3     0     0
     0     0     0     4     0
     0     0     0     0     5

>> rand(5) % 介于0-1的5×5矩阵

ans =

    0.8147    0.0975    0.1576    0.1419    0.6557
    0.9058    0.2785    0.9706    0.4218    0.0357
    0.1270    0.5469    0.9572    0.9157    0.8491
    0.9134    0.9575    0.4854    0.7922    0.9340
    0.6324    0.9649    0.8003    0.9595    0.6787

5.矩阵与矩阵,矩阵与实数的运算

 

A + aA + B
A / aA * B
A ./ aA .* B
A^aA / B
A.^aA ./ B
A'
>> A = [1 2 3; 4 5 4; 9 8 7]

A =

     1     2     3
     4     5     4
     9     8     7

>> B = [3 3 3; 2 4 9; 1 3 1]

B =

     3     3     3
     2     4     9
     1     3     1

>> A + B % 对应位置相加

ans =

     4     5     6
     6     9    13
    10    11     8

>> A*B * 矩阵乘法

ans =

    10    20    24
    26    44    61
    50    80   106

>> A.*B % 对应位置相乘

ans =

     3     6     9
     8    20    36
     9    24     7

>> A/B % 相当于A*inv(B) inv(B)是B的逆

ans =

    0.0714    0.2857    0.2143
    1.1667         0    0.5000
    3.2619   -0.2857   -0.2143

>> format rat % 也可以分数展示
>> A/B

ans =

       1/14           2/7            3/14    
       7/6            0              1/2     
     137/42          -2/7           -3/14    

>> A./B % 对应位置上的元素相除

ans =

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

>> format % 还原默认
>> a = 2

a =

     2

>> A+a % A中各元素都加2

ans =

     3     4     5
     6     7     6
    11    10     9

>> A/a % A中各元素都除2

ans =

    0.5000    1.0000    1.5000
    2.0000    2.5000    2.0000
    4.5000    4.0000    3.5000

>> A./a % A中各元素都除2与上面A/a效果一样

ans =

    0.5000    1.0000    1.5000
    2.0000    2.5000    2.0000
    4.5000    4.0000    3.5000

>> A^a % a个A矩阵相乘

ans =

    36    36    32
    60    65    60
   104   114   108

>> A.^a % A中各元素都开a次方

ans =

     1     4     9
    16    25    16
    81    64    49

>> C = A' % 转置

C =

     1     4     9
     2     5     8
     3     4     7

5.1矩阵相关函数

max(A)sort(A)
max(max(A))sortrows(A)
min(A)size(A)
min(min(A))length(A)
sum(A)find(A)
sum(sum(A))

mean(A)

>> A = [1 2 3; 0 5 6; 7 0 9]

A =

     1     2     3
     0     5     6
     7     0     9

>> max(A) % 会把每一列中的最大值索引出来

ans =

     7     5     9

>> max(max(A)) % 矩阵中最大的元素

ans =

     9

>> min(A) % 会把每一列中的最小值索引出来

ans =

     0     0     3

>> min(min(A)) % 不做解释

ans =

     0

>> sum(A)% 每一列相加

ans =

     8     7    18

>> sum(sum(A)) % 整个矩阵的元素和

ans =

    33

>> mean(A) % 每一列的平均值

ans =

    2.6667    2.3333    6.0000

>> format rat %分数形式
>> mean(A)

ans =

       8/3            7/3            6       

>> mean(mean(A)) % 对上面的进行求平均

ans =

      11/3     

>> format % 恢复默认
>> sort(A)%对每一列进行排序(升序)

ans =

     0     0     3
     1     2     6
     7     5     9

>> sortrows(A)%对第一列进行排序,但是会带动所在行,就是说第一列1>0,此时会将1 0这两行进行调换.

ans =

     0     5     6
     1     2     3
     7     0     9

>> B = [1 3 2;1 2 3; 2 3 4] 
B =

     1     3     2
     1     2     3
     2     3     4

>> sortrows(B) % 当第一列包含重复的元素时,sortrows 会根据下一列中的值进行排序,并对后续的相等值重复此行为,此时第一列中1 1相同,那么会比较第2列中的1 1所在行元素 3 > 2,所以会调换1 2两行


ans =

     1     2     3
     1     3     2
     2     3     4

>> size(A) % 返回A的维度大小。 维度就是行和列

ans =

     3     3

>> length(A) % 得到A的最大维度,行列中最大的那个

ans =

     3

>> C= zeros(2, 6) % 事例

C =

     0     0     0     0     0     0
     0     0     0     0     0     0

>> length(C) % 不管是2行6列还是6行2列length都是6即最大维度

ans =

     6

>> C = zeros(6, 2) % 事例

C =

     0     0
     0     0
     0     0
     0     0
     0     0
     0     0

>> length(C) % 不管是2行6列还是6行2列length都是6即最大维度

ans =

     6

>> find(A == 5) % 返回A中5的索引,索引是按照列的标号来的,详见4.5节

ans =

     5

>> find(A == 0) % 多个相同的元素的索引号都会显示出来

ans =

     2
     6

OVER

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HenceDang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值