注:我的matlab版本为2016
代码中的注释仅为方便理解,实际操作中会导致报错
目录
注:我的matlab版本为2016
1.1.2创建数组
1.空数组
2.一维数组
3.二维数组
4.创建三维数组
1.1.2创建数组
1.空数组
>>a=[]
a=
[]
2.一维数组
行向量:用空格或 " , '隔开,两者可混用
列向量:用 ; 分割
可用转置运算符(’)把行向量转换成列向量
>> A=[1 2,3] #创建一维行向量(,与空格可混用)
A = #输出
1 2 3
>> B=[1;2;3] #创建一维列向量
B =
1
2
3
>> C=A' #利用 ’创建列向量
C =
1
2
3
创建等差数组:
1. var =起始值 : 步长 :末值
注意:该方法可能取不到末值,最后一个元素与末值差值的绝对值小于等于步长
步长可省略,默认值为1
>> a = 1:4
a =
1 2 3 4
>> b = 1:2:4
b =
1 3
2. 利用linspace函数
格式: Var = linspace(初始值,末值,元素个数)
元素个数可省略,默认为100
>> a=linspace(2,8,3)
a =
2 5 8
创建等比数组: 利用logspace函数
格式:var = logspace(以10为底的初始值的对数, 以10为底的末值的对数,元素的个数)
>> a=logspace(0,log10(32),6)
a =
1.0000 2.0000 4.0000 8.0000 16.0000 32.0000
3.二维数组
不同行间用用分号隔开
注意:每行的元素数目应相同
可用一维数组或内部函数(如linspace,logspace)创建
例:
a=logspace(0,log10(32),6)
a =
1.0000 2.0000 4.0000 8.0000 16.0000 32.0000
>> b = [a;linspace(1,6,6);5,6,7,8,9,1]
b =
1.0000 2.0000 4.0000 8.0000 16.0000 32.0000
1.0000 2.0000 3.0000 4.0000 5.0000 6.0000
5.0000 6.0000 7.0000 8.0000 9.0000 1.0000
4.创建三维数组
1.使用下标创建三维数组
常识:二维数组第一维称为"行”,第二维称为“列”,第三维称为"页”
>> A(2,2,2)=1;
>> for i =1:2; #i取1到2
for j =1:2;
for k =1:2;
A(i,j,k)=i+j+k; #第k页的第i行第j列的值为 i+j+k
end
end
end
>> A(:,:,1) #第一页
ans =
3 4
4 5
>> A(:,:,2) #第二页
ans =
4 5
5 6
2.利用低维数组来创建高维数组
>> D2=[1,2,3;4,5,6;7,8,9];
D3(:,:,1)=D2;
D3(:,:,2)=2*D2; #仅将对应位置的值*2
>> D3(:,:,3)=3*D2;
>> D3 #输出D3
D3(:,:,1) =
1 2 3
4 5 6
7 8 9
D3(:,:,2) =
2 4 6
8 10 12
14 16 18
D3(:,:,3) =
3 6 9
12 15 18
21 24 27
3.使用创建函数创建
(1)cat
格式:C=cat(dim,A1,A2,A3, ...)
dim 为创建数组的维度,A1,A2,A3为各维度上的数组
D2=[1,2,3;4,5,6;7,8,9];
D3(:,:,1) =
1 2 3
4 5 6
7 8 9
D3(:,:,2) =
2 4 6
8 10 12
14 16 18
D3(:,:,3) =
3 6 9
12 15 18
21 24 27
>> C=cat(3,D2,2*D2,3*D3) #此处D3为页数为3的三维数组,故自动将其填充到C的后三页中
C(:,:,1) =
1 2 3
4 5 6
7 8 9
C(:,:,2) =
2 4 6
8 10 12
14 16 18
C(:,:,3) =
3 6 9
12 15 18
21 24 27
C(:,:,4) =
6 12 18
24 30 36
42 48 54
C(:,:,5) =
9 18 27
36 45 54
63 72 81
2.reshape(重组数组) 可修改数组维度和数的排列
格式:B=reshape(A,[m n p...]) 或 B=reshape(A,m,n,p...])
A表示复制的数组模块,[m n p...]表示该数组模块在各个维度上的复制个数,依次表示行数,列数,页数
>> D2 =[1 2 3;4 5 6;7 8 9;10 11 12];
>> D3 = reshape(D2,[2 2 3]);
>>D3
D3(:,:,1) =
1 7
4 10
D3(:,:,2) =
2 8
5 11
D3(:,:,3) =
3 9
6 12
由输出可知,读取数组中的数为一列一列从上到下读取的
注意,m*n*p的值表示新数组的元素个数,应与原有元素个数相同
3.repmat函数
格式:B=repmat(A,[m n p...]) 或 B=repmat(A,m,n,p...])
A表示复制的数组模块,[m n p...]表示该数组模块在各个维度上的复制个数,依次表示行数,列数,页数
>> D2 =[1 2 3;4 5 6;7 8 9];
>> D3 =repmat(D2,2,3)
D3 =
1 2 3 1 2 3 1 2 3
4 5 6 4 5 6 4 5 6
7 8 9 7 8 9 7 8 9
1 2 3 1 2 3 1 2 3
4 5 6 4 5 6 4 5 6
7 8 9 7 8 9 7 8 9
5.创建低维标准数组(运用多种函数)
输入:
>> A =zeros(3,2);
>> b = ones(2,4);
>> c= eye(4); #四行四列,除了斜对角线为1,其他均为0
>> d = magic(5)
>> randn('state',0);
>> e = randn(1,2);
>> f=gallery(5);
输出:
>> A
A =
0 0
0 0
0 0
>> b
b =
1 1 1 1
1 1 1 1
>> c
c =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
>> d
d =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> e
e =
-0.4326 -1.6656
>> f
f =
-9 11 -21 63 -252
70 -69 141 -421 1684
-575 575 -1149 3451 -13801
3891 -3891 7782 -23345 93365
1024 -1024 2048 -6144 24572
并不是所有的标准j函数命令都可以创建多种矩阵,如eye,vs
6.创建高维标准数组 (使用标准数组函数)
>> rand('state',11111);
>> D1 = rand(2,3,5)
D1(:,:,1) =
0.9033 0.4399 0.4220
0.3095 0.5132 0.7455
D1(:,:,2) =
0.9337 0.7261 0.4910
0.2321 0.3516 0.4230
D1(:,:,3) =
0.8450 0.3312 0.9337
0.8741 0.6670 0.1244
D1(:,:,4) =
0.4110 0.6719 0.5281
0.0327 0.8252 0.1574
D1(:,:,5) =
0.9172 0.3116 0.3806
0.2875 0.9099 0.6983