/ 写在前面 – 我热爱技术、热爱开源。我也相信开源能使技术变得更好、共享能使知识传播得更远。但是开源并不意味着某些商业机构/个人可以为了自身的利益而一味地索取,甚至直接剽窃大家曾为之辛勤付出的知识成果,所以本文未经允许,不得转载,谢谢。/
MATLAB入门
MATLAB允许一行输入多个命令,此时可以用逗号 ,
和分号 ;
来实现,区别在于使用逗号将会显示运行结果,而使用分号将隐藏运行结果。需要多行同时连续输入时,可用 Shift
+ Enter
来实现。
MATLAB中的冒号表达式:start:step:end
,其中start
为初值,step
为步长(如果不指定,则默认step=1
),end
为终止值。在冒号表达式中,参数end
表示结尾。
在MATLAB中,第一个元素的下标是1
,而不是0
。
MATLAB帮助系统
- 输入指令
helpwin
可以启动帮助窗口。 - 输入
doc
mesh()
可以查看mesh()
函数的帮助信息。 - 输入
help
inv
可以查看矩阵求逆函数inv()
函数的用法,注意,help
命令要求函数名的精确匹配。 - 输入
lookfor
keyword
可以按照关键字进行匹配查询。
MATLAB中的数据类型
大部分情况下,MATLAB的数据都是以双精度数值来表示,不区分整数、实数、复数等,占8个字节(64位),MATLAB表示为double()
,其值域约为-1.7e308~1.7e308
。
复数的表达形式:(注意,不加*
会出错)
z = a + b*i
z = r*exp(i*θ)
,其中r
为复数的模,θ
为复数辐角的弧度数
语句i=sqrt(-1)
可以恢复i
虚数单位的意义,如果涉及复数计算,应尽量避免将i
、j
作为用户定义的变量使用。
对于MATLAB中的多维数组操作自己不是很理解,关于符号型数据、元胞数组自己暂时也不是很理解……
% MATLAB中的常量
常量名 用法
------- -------
pi 圆周率
eps 机器的浮点运算误差限,2.2204e-016,若|x|<eps,则可以认为x=0
i, j 虚数单位
nargin m函数入口参数变量,用于m函数程序设计
nargout m函数出口参数变量,用于m函数程序设计
realmin 最小的正浮点数2.2251e-308
realmax 最大的正浮点数1.7977e+308
bitmax 最大的正整数9.0072e+015
Inf Infinity,无穷大量+∞
NaN Not-a-Number,通常由0/0运算、Inf/Inf运算或者其他可能的运算得出
ans 默认结果存储变量
MATLAB中的矩阵
以直接输入的方式生成矩阵
在MATLAB中输入小矩阵最简单的方法是使用直接排列的形式,且遵循如下规则:
- 矩阵元素必须在
[]
内。 - 矩阵的同行元素之间用空格(或
,
)隔开。 - 矩阵的行与行之间用
;
(或回车符)隔开。 - 矩阵的元素可以是数值、变量、表达式或函数。
以命令行语句或函数方式生成矩阵
- 利用冒号表达式可以生成一个行向量。一般格式为
Vec=start:step:end
,其中start
为初值,step
为步长(如果不指定,则默认step=1
),end
为终止值。 linspace()
生成线性等间距格式行向量。调用格式为linspace(start,end,num)
,其中start
和end
是生成向量的第一个和最后一个元素,num
是元素总数。logspace()
生成等比格式行向量。Vec=logspace(start,end,num)
创建从开始、到结束、有num个元素的对数分隔行向量Vec
。如果不指定num
的值,则默认num=50
。ones()
函数生成全1矩阵。ones(n)
生成维的全1矩阵,ones(m,n)
生成维的全1矩阵,ones(m,n,p,...)
生成维的全1矩阵。zeros()
函数生成全0矩阵。用法与ones()
同理。eye()
函数生成单位阵。单位阵即对角线元素为1,其余元素为0的矩阵。eye(n)
生成维的单位阵。rand()
函数生成随机矩阵,生成矩阵元素满足在区间内的均匀分布。用法与ones()
同理。randn()
函数生成随机矩阵,矩阵元素满足均值为0,方差为1的标准正态分布。用法与ones()
同理。randperm(n)
函数产生一个的随机序列。例如randperm(5)
产生3 5 1 2 4
的序列,不同时间产生的序列不同。
矩阵的访问
先介绍向量的访问:
- 向量的下标访问:
Vec(i)
表示向量Vec
中的第i
个元素。 - 向量的冒号表达式访问:
Vec(2:4)
表示向量Vec
中的第2个至第4个元素。 - 向量的中括号方式访问:向量可以用中括号方式指定多个向量元素进行访问。
Vec([1 3 4])
表示访问向量Vec
中的第1、3、4个元素,亦可用Vec([1,3,4])
来表示。
对于矩阵元素的访问和修改同向量类似,不过在使用下标时一般使用二维的,即A(i,j)
,表示A
中第i
行、第j
、列的元素(虽然一维下标也可以,但是二维的更为直观)。
另外,矩阵还有几个常用函数:
size(A)
:返回矩阵A
各方向的长度。size(A,dim)
:返回第dim
维的长度。length(A)
:返回矩阵A
各方向的最大长度。ndims(A)
:返回矩阵A
的维数。numel(A)
:返回矩阵A
的元素个数。
矩阵的拆分和提取
在矩阵的拆分中,最常用的方法是利用冒号表达式获得子矩阵。一般用法为:
A(:,j)
:表示A
第j
列的全部元素。A(i,:)
:表示A
第i
行的全部元素。A(i:i+m,:)
:表示取A
矩阵第i~i+m
行的全部元素。A(:,k:k+m)
:表示取A
矩阵第k~k+m
列的全部元素。A(i:i+m,k:k+m)
:表示取A
矩阵第i~i+m
行内,并在第k~k+m
列中的所有元素。
在MATLAB中,定义 []
为空矩阵。注意,A=[]
与clear A
不同,clear
是将 A
从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。因此可以利用空矩阵来删除矩阵中的元素。
矩阵的扩展
空扩展,见如下代码:
>> A=[11,12;21,22]
A =
11 12
21 22
>> B(2:3,2:3)=A% 对于B中原先并不存在元素,MATLAB自动补0。
B =
0 0 0
0 11 12
0 21 22
用
,
进行行拼接,注意其行数相同,见如下代码:>> A=[11,12;21,22], B=[13,14;23,24]
A =
11 12
21 22
B =
13 14
23 24
>> C=[A,B]% 行拼接
C =
11 12 13 14
21 22 23 24
用
;
进行列拼接,注意其列数相同,见如下代码:>> A=[11,12;21,22], B=[31,32;41,42]
A =
11 12
21 22
B =
31 32
41 42
>> C=[A;B]% 列拼接
C =
11 12
21 22
31 32
41 42
符号运算
符号表达式的化简
因式分解
符号微积分
关系与逻辑运算
MATLAB中的关系运算符有: <
、 <=
、 >
、 >=
、 ==
、 ~=
不等于。关系运算符的运算法则为:若关系成立,关系表达式的结果为1,否则为0。
MATLAB中的逻辑运算符有: &
与、 |
或、 ~
非。0的逻辑量为“假”,而任意非零数的逻辑量为“真”。