MATLAB数学建模必备知识

  • Ctrl + R–注释

  • Ctrl + T–取消注释

  • Clear–清除工作区变量

  • Clc–清除命令行窗口

  • Display可显示变量或者字符串,且不受分号影响

  • 使用strcat拼接字符串

  • 使用['字符串1',‘字符串2’]拼接字符串

  • 使用num2str()将数字转化为字符串:

    例:

c=100;
num2str( c )
'100'
  • input 会受分号影响:
A = input('请输入一个整数:');
请输入一个整数:1
>> A = input('请输入一个整数:')
请输入一个整数:1

A =

     1
  • MATLAB矩阵有两种写法:

写到一行,各行用分号隔开:

>> A = [1 1 1;1 1 1;2 2 2;2 2 2]
A =
     1     1     1
     1     1     1
     2     2     2
     2     2     2

写到不同行:

扫描二维码关注公众号,回复: 11122593 查看本文章
>> a = [1 2 3;
		4 5 6;
		7 8 9]
a =
     1     2     3
     4     5     6
     7     8     9

最后一行末尾的分号可要可不要

>> a = [1 2 3;
		4 5 6;
		7 8 9;]
a =
     1     2     3
     4     5     6
     7     8     9
  • MATLABsum的易错点:

    1.向量:无论是行向量还是列向量都是直接求和
    2.矩阵:由于MATLAB中对矩阵的操作都是按列操作,所以sum求和默认对每一列求和:

a =
     1     2     3
     4     5     6
     7     8     9
>> sum(a)
ans =
    12    15    18

sum(a,1)表示按列求和

>> sum(a,1)
ans =
    12    15    18

sum(a,2)表示按行求和

>> sum(a,2)
ans =
     6
    15
    24
  • 提取矩阵指定的行或列数:
    假如行数或者列数太多,不知道有多少行或者列,可以使用end命令
    A(2:end,:)–提取第二行到最后一行
    A(1:end-1,:)–提取第一行到倒数第二行
    A( : )–提取矩阵所有元素,默认按列拼接到一起
>> a(:)
ans =
     1
     4
     7
     2
     5
     8
     3
     6
     9
  • size函数返回矩阵的行数和列数(而不是矩阵的元素个数,对于向量也同样处理)
>> size(a)
ans =
     3     3

我们可以把返回的行数和列数保存到矩阵里面:

>> A = [1 2 3;4 5 6;7 8 9]
A =
     1     2     3
     4     5     6
     7     8     9
>> [r,c] = size(A)
r =
     3
c =
     3

我们也可以只返回行数或者列数。
返回行数:

>> r = size(A,1)

r =

     3

返回列数:

>> c = size(A,2)

c =

     3

  • 使用repmat(A,m,n)命令复制矩阵:

将矩阵A复制2行1列:

>> repmat(A,2,1)

ans =

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

将矩阵A复制3行2列:

>> repmat(A,3,2)

ans =

     1     2     3     1     2     3
     4     5     6     4     5     6
     7     8     9     7     8     9
     1     2     3     1     2     3
     4     5     6     4     5     6
     7     8     9     7     8     9
     1     2     3     1     2     3
     4     5     6     4     5     6
     7     8     9     7     8     9
  • MATLAB在矩阵的运算中," * "和“/”分别代表矩阵之间相乘和相除(维数可以不同)

A*B等价于A矩阵的每一行与B矩阵的每一列对应元素分别相乘再相加

>> A = [1 2;3 4]
>> B = [4 5; 6 7]
>> A*B
ans =
    16    19
    36    43

A/B等价于A*inv(B)AB的逆矩阵相乘

>> A/B
ans =
    2.5000   -1.5000
    1.5000   -0.5000

我们可以用B的逆矩阵验证:

>> A*inv(B)
ans =
    2.5000   -1.5000
    1.5000   -0.5000

完全一致。
两个维数相同的矩阵对应的乘除法使用".*"和“./”,表示对应元素直接相乘和相除

>> A = [1 2;3 4]
>> B = [4 5; 6 7]
>> A.*B
ans =
     4    10
    18    28
>> A./B
ans =
    0.2500    0.4000
    0.5000    0.5714

将一个矩阵乘以一个常数,那么点乘" * “或者叉乘” . * "都可以

  • 如果要将一个矩阵中的每个元素都乘方,那么必须用点乘:
>> A = [1 2;3 4]
>> A.^2
ans =
     1     4
     9    16

不带点表示矩阵A乘以矩阵A,将按行和列对应元素相乘再相加。

>> A^2
ans =
     7    10
    15    22
  • 使用prod函数将矩阵的某一行或者某一列相乘:

prod(A,1)表示将矩阵A按列相乘

>> A
A =
     1     2
     3     4
>> prod(A,1)
ans =
     3     8

prod(A,2)表示将矩阵按行相乘

>> prod(A,2)
ans =
     2
    12
  • MATLAB中使用eig()命令求特征值和特征向量,它将返回两个矩阵,第一个表示特征向量,第二个表示特征值。

    只有方阵(行数和列数相同的矩阵才有特征值和特征向量)

>> A
A =
     1     2
     3     4
>> [v,r] = eig(A)
v = //特征向量
   -0.8246   -0.4160
    0.5658   -0.9094
r = //特征值
   -0.3723         0
         0    5.3723
  • 使用find函数返回向量或者矩阵中元素不为0的位置的索引
>> X = [0 2 0 5 0 5 6 0 -9];
>> index = find(X)
index =
     2     4     6     7     9

也可以返回指定几个不为0的位置索引

>> index = find(X,2)
index =
     2     4

对于矩阵则按列显示:

A =
     1     2     0
     0     5     6
     7     8     0
>> index = find(A)
index =
     1
     3
     4
     5
     6
     8

我们也可以将返回的元素保存到行和列中:

>> [a,b] = find(A)
a =
     1
     3
     1
     2
     3
     2
b =
     1
     1
     2
     2
     2
     3

其中a,b是一一对应的。

  • find函数因为查找的是大小不为0的位置的索引,所以通常配合>,<或者==来筛选,将返回一个逻辑矩阵(1为真,0为假)
A =
    -1     2     0
    -5     6     0
     4    -7     5
>> A>0
ans =
  3×3 logical 数组
   0   1   0
   0   1   0
   1   0   1
发布了98 篇原创文章 · 获赞 18 · 访问量 6559

猜你喜欢

转载自blog.csdn.net/qq_44486550/article/details/105565149