matlab⾼维数组赋值,MATLAB之三(⾼)维数组的创建
使⽤下标创建
习惯的,将⼆维数组的第⼀维称为⾏,第⼆维称为列,对于三维数组的第三维称为页。三维以及三维以上的数组称为⾼维数组,由于⾼维数组⽐较抽样,这⾥主要以三维数组为例介绍如何创建⾼维数组。%显⽰A,将以⼀页⼀页的⽅式显⽰
>> A(2,2,2) = 1
A(:,:,1) =
0 0
0 0
A(:,:,2) =
0 0
0 1for m = 1 : 2
for l = 1 : 2
for n = 1 : 2
A(m,l,n) = m + l + n; %这个三维数组的每个元素的值设为它所在的⾏数+列数+页数
end
end
end
>> A
A(:,:,1) =
3 4
4 5
A(:,:,2) =
4 5
5 6
⽤低维数组创建⾼维数组
这个⽅法的思想是把三维数组看做是很多⼆维数组组成的,每个⼆维数组可以看做是三维数组的⼀页,所以⽤低维数组创建⾼维数组要保证每个数组的规模相同,这样才可以合并,具体如下:A = [1 2 3;4 5 6;7 8 9]; %A是⼀个三⾏三列的数组
B(:,:,1) = A; %B是⼀个三维数组,让A为B的第⼀页
B(:,:,2) = 2 * A; %2 * A为B的第⼆页
B(:,:,3) = 3 * A; %3 * A为B的第三页
%由于A,2*A,3*A的规模都是3*3的数组,所以可以合并成三维数组
B %显⽰B
B(:,:,1) =
4 5 6
7 8 9
B(:,:,2) =
2 4 6
8 10 12
14 16 18
B(:,:,3) =
3 6 9
12 15 18
21 24 27
⽤函数创建三维数组
cat函数
之前介绍过的cat函数就可以,如下cat(dim, A1, A2, A3, ...)当dim = 1时,为⾏⽅向上连接,所以要保证矩阵的列数相同
当dim = 2时,为列⽅向上连接,所以要保证矩阵的⾏数相同
当dim = 3时,为页⽅向上连接,所以要保证矩阵的规模相同
还有两个函数与cat相似,⼀个叫horzcat(A1, A2, A3, ...),是将矩阵在⽔平⽅向上拼接(即列⽅向上),所以这个函数以cat(2, A1, A2, A3, ...)的效果是⼀样的,另⼀个是vercat(A1, A2, A3, ...),是将矩阵在垂直⽅向(⾏⽅向上)拼接,同理,这个函数与cat(1, A1, A2, A3, ...)的效果是⼀样的。>> A = [1 2 3;4 5 6;7 8 9]; %A是⼀个三⾏三列的数组
>> B = cat(3, A, 2*A, 3*A); %拼接A,2*A,3*A形成⼀个三维数组
>> B
B(:,:,1) =
1 2 3
4 5 6
7 8 9
B(:,:,2) =
2 4 6
8 10 12
14 16 18
B(:,:,3) =
3 6 9
12 15 18
21 24 27
repmat函数
>> B = repmat(A,[2 3]); %以A为元素,形成⼀个2*3的数组
>> C = repmat(A,[1 2 3]); %以A为元素,形成⼀个1⾏2列3页的数组
>> A,B,C
A =
1 2 3
4 5 6
7 8 9
B =
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
C(:,:,1) =
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
C(:,:,2) =
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
C(:,:,3) =
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
reshape函数
reshape()函数是将矩阵变量,只要变形后的矩阵元素个数与原矩阵元素个数相同,可以变为任⼀维的矩阵,所以reshape()函数也可以⽣成⾼维数组。>> A = [1 2 3;4 5 6];
>> B = reshape(A,[1 2 3]); %变形为1⾏2列3页的三维矩阵,含有1 * 2 * 3 = 6个元素
%与A所含2 * 3 = 6个元素相同,所以可以变形
>> A,B
A =
4 5 6
B(:,:,1) =
1 4
B(:,:,2) =
2 5
B(:,:,3) =
3 6
特殊⾼维数组的创建
如同⼆维特殊数组的创建⼀样,⽐如产⽣全1数组ones函数,产⽣全0数组的zeros函数,以及在⼆维数组介绍过的⼀些其他的函数,其中magic函数和eyes函数不能创建⾼维数组。>> A = ones(2,3,2); %创建2⾏3列2页的全1数组
>> B = zeros(3,2,2); %创建3⾏2列2页的全0数组
>> C = randn(2,4,3); %创建2⾏4列3页服从标准正态分布的数组
>> A,B,Cmatlab数组赋值
A(:,:,1) =
1 1 1
1 1 1
A(:,:,2) =
1 1 1
1 1 1
B(:,:,1) =
0 0
0 0
0 0
B(:,:,2) =
0 0
0 0
0 0
C(:,:,1) =
0.5377 -2.2588 0.3188 -0.4336
1.8339 0.8622 -1.3077 0.3426
C(:,:,2) =
3.5784 -1.3499 0.7254 0.7147
2.7694
3.0349 -0.0631 -0.2050
-
0.1241 1.4090 0.6715 0.7172 1.4897 1.4172 -1.2075 1.6302

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。