变量及其操作
变量与赋值语句
变量本质上讲是内存单元
在Matlab中,变量名是以字母开头,后接字母、数字或下划线的的字符序列,最多63个字符。
matlab中变量名区分大小写
标准函数名以及命令名必须用小写字母
赋值语句两种形式
变量=表达式
表达式
预定义变量
它是系统本身定义的变量 ans是默认复制变量 i,j代表虚数单位 pi代表圆周率 NaN代表非数
注意:i经常被定义为循环变量,那么这时i就不再是预定义变量了
变量的管理
(1)内存变量的删除与修改
who 与 whos 查看变量信息
(2)内存变量文件(用于保存MATLAB工作区变量文件,其扩展名.mat)
save 创建内存变量文件
load 装入内存变量文件
save mydata a x
load mydata
矩阵的建立
(1)直接输入 A=[1,2,3;4,5,6]
(2)拼接 B=[-1,-2,-3;-4,-5,-6] C=[A,B;B,A]
A=[1,2;4,5]
A =
1 2
4 5
B=[-1,-2,-3;-4,-5,-6]
B =
-1 -2 -3
-4 -5 -6
C=[A,B;B,A]
C =
1 2 -1 -2 -3
4 5 -4 -5 -6
-1 -2 -3 1 2
-4 -5 -6 4 5
还可以构成复数矩阵
A=[1,2,3;4,5,6]
A =
1 2 3
4 5 6
B=[-1,-2,-3;-4,-5,-6]
B =
-1 -2 -3
-4 -5 -6
D=A+i*B
D =
1.0000 - 1.0000i 2.0000 - 2.0000i 3.0000 - 3.0000i
4.0000 - 4.0000i 5.0000 - 5.0000i 6.0000 - 6.0000i
冒号表达式
格式: e1:e2:e3 初始值:步长:终止值 产生向量
linspace函数也能产生行向量 linspace(a,b,n) a第一个元素,b最后一个元素,当n省略时自动产生100个元素
结构矩阵和单元矩阵
(1)结构矩阵 一个数据往往包含不同的类型
格式为: 结构矩阵元素.成员名=表达式
例如建立含有三个元素的结构矩阵a
a(1).x1=10;a(1).x2=‘liu’;a(1).x3=[11,21,34,78];
a(2).x1=10;a(2).x2=‘wang’;a(2).x3=[1,2,3,8];
a(3).x1=13;a(3).x2=‘xiao’;a(3).x3=[13,23,34,73];
[11,21,34,78] ‘liu’ 10
[1,2,3,8] ‘wang’ 10
[13,23,34,73] ‘xiao’ 13
- (2)单元矩阵 和一般矩阵相似,直接输入就可以了,只是单元矩阵元素用大括号括起来 元素可以是不同类型的变量
b={10,‘liu’,[11,21,34,78];10,‘wang’,[1,2,3,8];13,‘xiao’,[13,23,34,73]}
b =
3×3 cell 数组
[10] 'liu' [1×4 double]
[10] 'wang' [1×4 double]
[13] 'xiao' [1×4 double]
矩阵元素的引用方式
(1)通过下标来赋值,不够会拓展
A=[1,2,3;4,5,6];
A(4,5)=12
A =
1 2 3 0 0
4 5 6 0 0
0 0 0 0 0
0 0 0 0 12
(2)通过序号来引用
A=[1,2,3;4,5,6]
A =
1 2 3
4 5 6
A(3)
ans =
2
由此可见序号与下标一一对应,以m×n的矩阵A为例,矩阵元素A(i,j)的序号为(j-1)×m+i
矩阵元素序号和下标可以利用sub2ind和ind2sub函数来实现相互转换。
sub2ind函数 将下标转换成序号。
D=sub2ind(size(A),[1,2;
2,2],[1,1;3,2])
D =
**1** *2*
~~6~~ 4
以上同种符号一一对应
[I,J]=ind2sub([矩阵的行数,列数],[序号1,序号2,序号3])
ind2sub函数 序号换下标 此处A为两行三列的矩阵
[i,j]=ind2sub([2,3],2)
i =
2
j =
1
利用冒号表示子向量
A(i,:)
A(:,j)
A(i:i+m,k:k+m)
A(i:i+m,:)不难理解
end运算符 表示某一位的末尾元素的下标
A=[11:15;1:5;6:10;16:20]
A(end,:)
A([1,4],3:end)
A =
11 12 13 14 15
1 2 3 4 5
6 7 8 9 10
16 17 18 19 20
ans =
16 17 18 19 20
ans =
13 14 15
18 19 20
利用空矩阵来删除矩阵的元素
空矩阵是☞没有任何元素的矩阵
A=[11:15;1:5;6:10;16:20]
A(:,[2,4])=[]
A =
11 12 13 14 15
1 2 3 4 5
6 7 8 9 10
16 17 18 19 20
A =
11 13 15
1 3 5
6 8 10
16 18 20
改变矩阵的形状
reshaoe(A,m,n) 不改变顺序,只把矩阵重新排布成m×n的二维矩阵
clear
A=[11:15;1:5;6:10;16:20]
reshape(A,5,4)
A =
11 12 13 14 15
1 2 3 4 5
6 7 8 9 10
16 17 18 19 20
ans =
11 2 8 19
1 7 18 15
6 17 14 5
16 13 4 10
12 3 9 20
A(:)是将每一列元素堆叠起来,成为一个列向量
>> A(:)
ans =
11
1
6
16
12
2
7
17
13
3
8
18
14
4
9
19
15
5
10
20