变量名以字母开头,后接字母、数字或下划线,最多63个字符;区分大小写;关键字和函数名不能作为变量名。 MATLAB变量只有一种数据格式,是双精度(64位)型;但输出显示时可以设置多种显示格式
矩阵:由m×n个数组成的排成m行n列的一个矩形的数表,其中0×0矩阵为空矩阵([ ])。数表中第i(1≤i≤m)行第j(1≤j≤n)列的数据称为矩阵元素;
标量:1×1的矩阵,即为只含一个数的矩阵;
向量:1×n或n×1的矩阵,只有一行的矩阵称为行向量,只有一列的矩阵称为列向量。数表中第i(1≤i≤n)个数据称为向量元素。
一、标量
Inf 无穷大
NaN 非数
computer 确定运行的计算机
inputname 输入参数名
nargoutchk 有效的输出参数数目
varargin 实际输入 的参量
varargout 实际返回的参量
标量定义
例如,命令窗口中输入以下语句:
a=1 % a为标量
得到: a = 1
二、向量
MATLAB提供两种为等间隔数组赋值的方法:
t = [初值:增量:终值]
t = linspace(初值,终值,点数)
下面通过上面两种方式得到一个10个元素的从1到10的自然数的数组
A=[0:1:10]
B=linspace(0,10,11)
1. 利用冒号表达式建立一个向量
冒号表达式可以产生一个行向量,一般格式是:初始值:增量:终值
键入 A=[0:1:10]
得 t=0 0.2 0.4 0.6 0.8 1
当增量为1时,这个增量值可以省略,
键入 B=linspace(0,10,11)
得 t=1 2 3 4 5 6
2. 用linspace函数产生行向量。其调用格式为:
linspace(a,b,n)
从a到b之间等间隔生成n个元素的行向量。显然,linspace(a,b,n)与a:(b-a)/(n-1):b等价。
t1=linspace(0,4,5)%从0到4等分成5个点
3. 用logpace函数产生行向量。其调用格式为:
logspace(a,b,n)
从10a到10b之间按幂等分,生成n个元素的行向量。
t2=logspace(0,4,5) %从100到104 (即1到10000)按幂等分成5个点
三、矩阵
1. 矩阵的创建
在MATLAB中创建矩阵的原则:
1)矩阵元素必须写在“[ ]”内;
2)矩阵的同一行之间用空格或“,”分隔;
3)矩阵的行与行之间用分号分隔;
4)矩阵的尺寸不必预先定义;
5)矩阵元素可以是数值、变量、表达式或函数。
2.矩阵的赋值
MATLAB中基本的赋值语句为:
变量名=表达式
例如,命令窗口中依次输入以下语句:
a=1 % a为标量
b=[0 1] % b为行向量
c=[1 2 3;4 5 6;7 8 9] % c为矩阵
依次得到:
a = 1
b = 0 1
c = 1 2 3
4 5 6
7 8 9
3.矩阵的元素
变量的元素用圆括号“()”中的数字来注明,一维矩阵(向量)用一个下标表示,二维的矩阵用两个下标表示,以逗号“,”分开。
如输入:b=c(2,3)
得到: b=6
可以单独给元素赋值,
如:c(2,3)=10 等价于c(7) = 11
输入:c(2,3)=10
得到:
c = 1 2 3
4 5 10
7 8 9
输入c(7) = 10
也可以得到:
c = 1 2 10
4 5 10
7 8 9
但注意一个一个元素的计数时,矩阵下标是从0开始的。矩阵的行列都是从1开始的。
如给元素赋值时,元素的下标超出了原矩阵的大小,矩阵的行列会自动扩展;
如输入:c(4,3)=10
则得到:
c= 1 2 3
4 5 6
7 8 9
0 0 10
给全行(列)赋值,可用冒号;
如输入:c(:,4)=[1 2 3 4 5]
则显示:
c= 1 2 3 1
4 5 6 2
7 8 9 3
0 0 10 4
5 4 3 5
给多行(列)赋值;
如给c的第1 、2行复制输入:c([1,2],:)=[0,0,0;0, 0, 0]
得到:
c = 0 0 0
0 0 0
7 8 9
0 0 10
利用空矩阵[ ]抽取行
抽去c中的1、 2 行
输入:c([1,2], :) = []
得到:
c = 7 8 9
0 0 10
4. MATLAB变量的每个元素都可以是复数,实数是复数的特例,虚数单位用j或i表示;
例如,命令窗口中依次输入以下语句:
a=1+2j
b=[1+2j, 3+4j; 5+6j,7+8j]
c= [1, 3; 5, 7]+ [2, 4; 6, 8]*j
依次得到:
a = 1.0000 + 2.0000i
b = 1.0000 + 2.0000i 3.0000 + 4.0000i
5.0000 + 6.0000i 7.0000 +8.0000i
c = 1.0000 + 2.0000i 3.0000 + 4.0000i
5.0000 + 6.0000i 7.0000 +8.0000i
MATLAB所有的运算符和函数都对复数有效;
例如:f=sqrt(1+2j)
运算符“’ ”把矩阵共轭转置,即行列互换、各元素虚部反号;函数conj取共轭;conj与“’ ”结合,取转置; rot90逆时针旋转90º。
例如,命令窗口中依次输入以下语句:
w= c’ %共轭转置
v = conj(c) %共轭
u = conj(c)’ %转置
x=rot90(c) %将矩阵逆时针旋转90º
依次得到:
w = 1.0000- 2.0000i 5.0000 - 6.0000i
3.0000 - 4.0000i 7.0000 -8.0000i
v = 1.0000 - 2.0000i 3.0000 - 4.0000i
5.0000 - 6.0000i 7.0000 -8.0000i
u = 1.0000 + 2.0000i 5.0000 + 6.0000i
3.0000 + 4.0000i 7.0000 +8.0000i
x = 3.0000 + 4.0000i 7.0000 + 8.0000i
1.0000 + 2.0000i 5.0000 +6.0000i
1)who 用于显示在MATLAB工作空间中已 经驻留变量的名称。
2)whos 在给出变量名的同时,还给出它们 的大小、所占字节数及数据类型等信息。
3)clear 删除MATLAB工作空间中的变量。注 意,特殊变量不能被删除。
5. 定义通用特殊矩阵的函数有:
zeros:产生全0矩阵(零矩阵);
ones:产生全1矩阵(幺矩阵);
eye:产生单位矩阵;
rand:产生0~1间均匀分布的随机矩阵,均值为0,标准差为0.2887;
randn:产生均值为0,方差为1的标准正态分布随机矩阵,均值为0。
例如,命令窗口中依次输入以下语句:
a=zeros(3,2) %建立一个3×2零矩阵
b=ones(3,2) %建立一个3×2幺矩阵
c=eye(3) %建立一个3×2单位矩阵
d=rand(3,2) %建立一个3×2随机矩
e=randn(3,2) %得到方差为1的正态分布的3×2矩阵
依次得到得到:
a =
0 0
0 0
0 0
b =
1 1
1 1
1 1
c =
1 0 0
0 1 0
0 0 1
d =
0.2785 0.9649
0.5469 0.1576
0.9575 0.9706
e =
0.7254 -0.2050
-0.0631 -0.1241
0.7147 1.4897
6. 用于专门学科的特殊矩阵函数有:
(1)魔方矩阵:magic(n)
功能:对于n阶魔方阵,其元素由1,2,3,…,n2共n2个整数组成;
每行、每列及对角线上的元素之和均等于(n3+n)/2。n不能等于2。
m1=magic(3) %产生3阶魔方阵
m2=magic(4) %产生4阶魔方阵
(2) 范得蒙矩阵:vander(V)
功能:范得蒙(Vandermonde)矩阵最后一
列全为1,倒数第二列为指定向量V,其他各列
是其后列与倒数第二列的点乘积。可以用一个
指定向量生成一个范得蒙矩阵。例如,A=vander([1;2;3;5])
(3) 希尔伯特矩阵:hilb(n)
其元素为1/(i+j-1),i和j分别为其行标和列标;即:
[1,1/2,1/3,……,1/n]
[1/2,1/3,1/4,……,1/(n+1)]
[1/3,1/4,1/5,……,1/(n+2)]
……
[1/n,1/(n+1),1/(n+2),……,1/(2n-1)]
invhilb(n),其功能是求n阶的希尔伯特矩阵的逆矩阵。
例如,求4阶希尔伯特矩阵及其逆矩阵。命令如下:
format rat %以有理形式输出
H=hilb(4)
H=invhilb(4)