Matlab-矩阵基础、变量、基本运算


Matlab(Matrix & Laboratory)是一款功能十分强大的数学软件,同时也可算作一门编程语言,其语法与C++有许多共通之处,但比C++更加简洁明快,因此对于有基础的同学来说上手应该很快。
笔者打算利用假期时间自学部分matlab知识,并做些笔记,方便复习,亦作分享。

矩阵基础

matlab的操作对象是矩阵,因而首先介绍如何在matlab中定义矩阵、给矩阵元素赋值、引用矩阵元素。

定义矩阵


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

>> 是matlab默认的命令提示符,自动显示在每一行开头
空格 or 逗号 用来分隔矩阵同一行元素
; 此处为分隔矩阵不同行
此外,分号也可同C++中一样,放在一条语句的末尾,代表结束。
在matlab中,一行末尾不加分号直接按回车,就会自动执行该段语句;一行末尾分号后再按回车,则可继续输入下行语句,不会自动执行。

matlab中定义矩阵十分简单,完全符合直观感受。

给矩阵元素赋值

特例——向量

1
>> x=[-1,2+3i,sqrt(3),(1+2+3)*4/5,cos(pi)]

矩阵(或向量)元素可以是任何数值表达式

单个元素赋值

1
2
3
4
5
6
7
8
9
>> x(5)=1 %此语句执行结果省略
>> A(2,3)=100
A =
1 2 3
4 5 100
7 8 9

其中x为向量;A是值为1到9的3*3矩阵。赋值语句简单,无需多言。
此外
%  之后的语句为注释语句,不会实际执行,同C++中  //  用法相同。

给矩阵添加行、列

添加行

1
2
3
4
5
6
7
8
9
10
>> A=[1 2 3;4 5 6;7 8 9];
>> B=[10 11 12];
>> A=[A;B]
A =
1 2 3
4 5 6
7 8 9
10 11 12

添加列

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

看清空格分号,分清行列即可。

矩阵元素引用

以矩阵 A 为例
1     2     3
4     5     6
7     8     9

单个元素

1
2
3
4
5
6
7
8
9
10
11
12
>> A(6) %引用A中第6个元素
ans =
8
>> A(2,3) %引用A矩阵第2行第3列的元素
ans =
6

Matlab中矩阵元素在内存中的存储方式

Matlab中,矩阵元素按列维度优先的方式存储。
例如矩阵A在内存中为“1,4,7,2,5,8,3,6,9”.
因此,在使用‘A(6)’命令时,得到数据‘8’而不是‘6’.

多个元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>> A(1:2,1:2) %引用矩阵A的第1-2行和第1-2列之间的元素
ans =
1 2
4 5
>> A(1, : ) %引用矩阵A第1行所有列的元素
ans =
1 2 3
>> A(:, :) %引用矩阵A所有元素
ans =
1 2 3
4 5 6
7 8 9

在此介绍两个重要知识点

冒号的特殊用法

a:b:c
产生一个由等差序列组成的向量;
a是首项,b是公差,c是末项;
特别地,若b=1,则b可省略,写作a:c

1
2
3
4
5
6
7
8
9
10
11
12
>> 1:2:5 % 产生首项为1,公差为2,末项为5的等差数列
ans =
1 3 5
>> 1:5 % 公差b为1,故省略
ans =
1 2 3 4 5

子矩阵

A(i:j,m:n)
表示由矩阵A的第i-j行和第m-n列交叉线间的元素组成的子矩阵

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>> A=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16]
A =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
>> A(2:3,2:3)
ans =
6 7
10 11

Matlab变量

Matlab变量基本同任何编程语言的变量一样,但在matlab中编写更加简洁。

命名原则

字母开头,后面可跟字母、数字、下划线
长度不超过63个字符(这句基本废话,谁会起那么长的名字…)
变量名区分大小写

变量赋值语句

变量名=表达式

续行符

1
2
3
4
5
6
>> c=1+2+3+4+5+6+7+8 ...
+9+10+11+12
c =
78

如果语句很长,可用“…”(三个英文点)续一行
续行符之前记得留一个空格,否则可能出现错误

1
2
3
4
5
>> c=1+2+3+4+5+6+7+8...
+9+10
c=1+2+3+4+5+6+7+8...
错误: MATLAB 运算符异常。

变量查询

who:显示工作空间中所有变量名

1
2
3
4
5
>> who
您的变量为:
A B C ans c x

whos:显示工作空间中所有变量及其详细属性

1
2
3
4
5
6
7
8
9
>> whos
Name Size Bytes Class Attributes
A 3x3 72 double
B 1x3 24 double
C 3x1 24 double
ans 3x3 72 double
c 1x1 8 double
x 1x5 80 double complex

讲道理,我用的16版matlab里边,默认布局右侧就是工作空间变量的详细属性,所以新版matlab应该很少用这两个命令。

系统预定义变量

pi:圆周率π
i:虚数单位
inf:无穷大(infinite)
nan:不定值(not-a-number)

Matlab基本运算

这一标题我们主要说说matlab如何作为一只科学计算器来使用

数学运算符

加减乘除就不说了,该怎么写就怎么写
a^b:a的b次方

复数的输入

z=a+bi
或者z=a+b*i
其中a,b为常数,i为虚数单位

炒鸡简单是吧hhh

常用数学函数

三角函数

sin,cos,tan,cot等正三角函数该怎么写怎么写
反三角函数注意了!!注意了!!
arcsin写作asin
以此类比

指数函数

exp():e为底的指数
pow2():2的幂
sqrt():平方根
log():自然对数
log10():10为底的对数

复数函数

abs():绝对值
conj():共轭复数
real():复数实部
imag():复数虚部
angle():相角

其他函数

sign():符号函数
mean():平均值
median():中位数
std():标准差
sort():排序
prod():总乘积
dot():内积(点积)
cross():外积(叉乘)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
% dot()
>> a=[1,2];b=[1,2];
>> c=dot(a,b)
c =
5
% cross()
>> a=[0,0,1];b=[1,0,0];
>> c=cross(a,b)
c =
0 1 0

好啦!第一篇就说到这,这一篇文章基本都是基础中的基础,学过编程的同学应该都会感觉到很容易。