MATLAB 学习笔记(1)

MATLAB 学习笔记(1)

MATLAB 学习笔记(1)

显然从 MATLAB 的名字就可以看出其是一个擅长矩阵计算的数学软件,本节稍微介绍一下 Matlab 的基本语法。

变量和赋值

标识符

标识符是用来标识变量名、常量名、函数名和文件名的字符串的统称。第一个字母一定要是英文字母,区分大小写。

矩阵及其元素赋值

$\text{MATLAB}$ 中的变量或常量都代表矩阵,标量视为 $1\times1$ 的矩阵。

举个例子

a=3;
b='13';
a+b

如果是 $\text{cpp}$ 会输出12598,应该是 $49\times2^8+51+3$

而 $\text{MATLAB}$ 则输出的是一个 $1\times2$ 的矩阵,这是因为 $’13’$ 在 MATLAB 里是用一个 $1\times2$ 的矩阵进行的存储,这里就是各自的 $\text{ASCII}$ 码加 3 得到了这个结果,所以输出 52 54

赋值语句的一般形式为:变量=表达式(或数)

a=[1 2 3;4 5 6;7 8 9]

得到的显示结果就是

a =

     1     2     3
     4     5     6
     7     8     9

同一行元素之间用逗号或空格分开,不同行用分号隔开,语句尾用回车或逗号会显示运算结果,用分号则只执行运算不显示结果。

可以通过下标给单个元素赋值,如上面的矩阵中通过代码 a(2,3)=5

则可以得到结果

a =

     1     2     3
     4     5     5
     7     8     9

如果赋值的下标超过了矩阵大小则会自动扩充,多余的补 $0$

给全行赋值则可用冒号,如 a(5, : )=[5,4,3]

得到

a =

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

可以把矩阵的某些行和某些列交点取出变成新矩阵,比如 b=a([2,3],[1,3]) 就是将第2、3行和1、3列交点取出。

b =

     4     5
     7     9

删去某些行则可以用赋值空矩阵的方法,如a(4, : )=[]

a =

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

复数

虚数部分用 $i$ 或 $j$ 表示,数字和 $i$ 的乘积可以省略乘号,矩阵不行。

若之前给 $i,j$ 赋过值,可以通过 clear i,j 清除。

此外矩阵还可以进行转置、共轭运算,先定义一个复数矩阵,

z=[1+2i 3+4i;5+6i 7+8i]

z =

   1.0000 + 2.0000i   3.0000 + 4.0000i
   5.0000 + 6.0000i   7.0000 + 8.0000i

可以进行运算

w=z'            %转置共轭

w =

   1.0000 - 2.0000i   5.0000 - 6.0000i
   3.0000 - 4.0000i   7.0000 - 8.0000i

v=conj(z)       %共轭

v =

   1.0000 - 2.0000i   3.0000 - 4.0000i
   5.0000 - 6.0000i   7.0000 - 8.0000i

u=conj(z)'      %转置

u =

   1.0000 + 2.0000i   5.0000 + 6.0000i
   3.0000 + 4.0000i   7.0000 + 8.0000i

变量检查

工作空间内的变量名和变量特征可以用 whowhos 指令查看,如复数一节所得到的工作空间。

who

您的变量为:

u  v  w  z  

whos
  Name      Size            Bytes  Class     Attributes

  u         2x2                64  double    complex   
  v         2x2                64  double    complex   
  w         2x2                64  double    complex   
  z         2x2                64  double    complex   

此外结果 Inf( -Inf )无穷大和 NaN (0/0,$\text{Inf/Inf}$,0*$\text{Inf}$)不包含在以上变量检查内。

基本赋值矩阵

$\text{MATLAB}$ 有一些预设的基本矩阵。

f1=ones(3,2),f2=zeros(2,3),f3=magic(3),f4=eye(2)
#全1,全0,幻方(行列对角线和相等),单位
f1 =

     1     1
     1     1
     1     1


f2 =

     0     0     0
     0     0     0


f3 =

     8     1     6
     3     5     7
     4     9     2


f4 =

     1     0
     0     1

linspace(a,b,n) 在 $a$ 和 $b$ 之间均匀产生 $n$ 个点,形成 $n$ 维向量

 f5=linspace(0,1,5)

f5 =

         0    0.2500    0.5000    0.7500    1.0000

可以用多个小矩阵组成大矩阵,但要保证行列数正确

fb1=[f1 f3;f2 f4]

fb1 =

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

矩阵初等运算

加减乘

可用 size 语句检查矩阵阶数

若一维可用 length 检查

矩阵相加要求行列数相同,但加减标量时会把标量扩展成同阶等元素矩阵。

矩阵乘法和数乘不多bb,自行参考线代。

除及线性方程的解

若同阶方阵 $A$ 和 $V$ 满足
$$
AV=I
$$
则,$V$ 称为 $A$ 的逆阵,记为
$$
V=A^{-1}
$$
$\text{MATLAB}$ 中可以用函数 $\text{inv}$ 求逆阵,V=inv(A)

若方程
$$
D*X=B
$$
同时左乘$\text{inv}(D)$.
$$
\text{inv}(D)DX=\text{inv}(D)B\\
X=\text{inv}(D)B
$$
逆阵左乘记作\ ,如上式可写成 $X=D\setminus B$,称为左除

同理逆阵右乘记为/ ,$B\text{inv}(D)=B/D$,称为右除

可以用来解线性方程式。
$$
6x_1+3x_2+4x_3=3\\
-2x_1+5x_2+7x_3=-4\\
8x_1-4x_2-3x_3=-7
$$
写作矩阵形式
$$
Ax=B
$$

A=[6 3 4;-2 5 7;8 -4 -3];
B=[3;-4;-7];
x=A\B

x =

    0.6000
    7.0000
   -5.4000

若方程数大于未知数,也能给出解,但不是准确解而是最小二乘解。

方程数小于未知数能求出某个特殊解。

乘方和幂次

运算符 */\^ ,指数函数expm 、对数函数 logm 、开方函数sqrtm 是对矩阵进行的,其他函数是对元素进行的,注意区分带m 的函数和没有的区别。

其他改变矩阵结构的函数

A=[8 1 6 0;3 5 7 1;4 9 2 2]
B1=fliplr(A)    %左右翻转
B2=flipud(A)    %上下翻转
B3=reshape(A,2,6)   %阶数重组,元素总数不变
B4=rot90(A)     %逆时针转90°
B5=diag(A)      %提取对角阵
B6=tril(A)      %取左下三角(最左列阶数为准)
B7=triu(A)      %取右上三角(最上行阶数为准)
B8=A(:)'        %排成一行

A =

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


B1 =

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


B2 =

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


B3 =

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


B4 =

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


B5 =

     8
     5
     2


B6 =

     8     0     0     0
     3     5     0     0
     4     9     2     0


B7 =

     8     1     6     0
     0     5     7     1
     0     0     2     2


B8 =

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

矩阵大概就这些,我困了,别的下章再说。

 

点赞 0

No Comments

Add your comment