matlab 高维数组赋值,MATLAB之三(高)维数组的创建
使用下標(biāo)創(chuàng)建
習(xí)慣的,將二維數(shù)組的第一維稱為行,第二維稱為列,對(duì)于三維數(shù)組的第三維稱為頁。三維以及三維以上的數(shù)組稱為高維數(shù)組,由于高維數(shù)組比較抽樣,這里主要以三維數(shù)組為例介紹如何創(chuàng)建高維數(shù)組。%顯示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; %這個(gè)三維數(shù)組的每個(gè)元素的值設(shè)為它所在的行數(shù)+列數(shù)+頁數(shù)
end
end
end
>> A
A(:,:,1) =
3 4
4 5
A(:,:,2) =
4 5
5 6
用低維數(shù)組創(chuàng)建高維數(shù)組
這個(gè)方法的思想是把三維數(shù)組看做是很多二維數(shù)組組成的,每個(gè)二維數(shù)組可以看做是三維數(shù)組的一頁,所以用低維數(shù)組創(chuàng)建高維數(shù)組要保證每個(gè)數(shù)組的規(guī)模相同,這樣才可以合并,具體如下:A = [1 2 3;4 5 6;7 8 9]; %A是一個(gè)三行三列的數(shù)組
B(:,:,1) = A; %B是一個(gè)三維數(shù)組,讓A為B的第一頁
B(:,:,2) = 2 * A; %2 * A為B的第二頁
B(:,:,3) = 3 * A; %3 * A為B的第三頁
%由于A,2*A,3*A的規(guī)模都是3*3的數(shù)組,所以可以合并成三維數(shù)組
B %顯示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
用函數(shù)創(chuàng)建三維數(shù)組
cat函數(shù)
之前介紹過的cat函數(shù)就可以,如下cat(dim, A1, A2, A3, ...)當(dāng)dim = 1時(shí),為行方向上連接,所以要保證矩陣的列數(shù)相同
當(dāng)dim = 2時(shí),為列方向上連接,所以要保證矩陣的行數(shù)相同
當(dāng)dim = 3時(shí),為頁方向上連接,所以要保證矩陣的規(guī)模相同
還有兩個(gè)函數(shù)與cat相似,一個(gè)叫horzcat(A1, A2, A3, ...),是將矩陣在水平方向上拼接(即列方向上),所以這個(gè)函數(shù)以cat(2, A1, A2, A3, ...)的效果是一樣的,另一個(gè)是vercat(A1, A2, A3, ...),是將矩陣在垂直方向(行方向上)拼接,同理,這個(gè)函數(shù)與cat(1, A1, A2, A3, ...)的效果是一樣的。>> A = [1 2 3;4 5 6;7 8 9]; %A是一個(gè)三行三列的數(shù)組
>> B = cat(3, A, 2*A, 3*A); %拼接A,2*A,3*A形成一個(gè)三維數(shù)組
>> 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函數(shù)
repmat函數(shù)可以創(chuàng)建三維數(shù)組,repmat是repeat matrix的縮寫,顧名思義就是重復(fù)矩陣,所以repmat(A,[1 2 3 ...])的意思就是以A為一個(gè)元素,重復(fù)A形成一個(gè)1行2列3頁...的高維矩陣,具體用法如下:>> A = [1 2 3;4 5 6;7 8 9];
>> B = repmat(A,[2 3]); %以A為元素,形成一個(gè)2*3的數(shù)組
>> C = repmat(A,[1 2 3]); %以A為元素,形成一個(gè)1行2列3頁的數(shù)組
>> 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函數(shù)
reshape()函數(shù)是將矩陣變量,只要變形后的矩陣元素個(gè)數(shù)與原矩陣元素個(gè)數(shù)相同,可以變?yōu)槿我痪S的矩陣,所以reshape()函數(shù)也可以生成高維數(shù)組。>> A = [1 2 3;4 5 6];
>> B = reshape(A,[1 2 3]); %變形為1行2列3頁的三維矩陣,含有1 * 2 * 3 = 6個(gè)元素
%與A所含2 * 3 = 6個(gè)元素相同,所以可以變形
>> A,B
A =
1 2 3
4 5 6
B(:,:,1) =
1 4
B(:,:,2) =
2 5
B(:,:,3) =
3 6
特殊高維數(shù)組的創(chuàng)建
如同二維特殊數(shù)組的創(chuàng)建一樣,比如產(chǎn)生全1數(shù)組ones函數(shù),產(chǎn)生全0數(shù)組的zeros函數(shù),以及在二維數(shù)組介紹過的一些其他的函數(shù),其中magic函數(shù)和eyes函數(shù)不能創(chuàng)建高維數(shù)組。>> A = ones(2,3,2); %創(chuàng)建2行3列2頁的全1數(shù)組
>> B = zeros(3,2,2); %創(chuàng)建3行2列2頁的全0數(shù)組
>> C = randn(2,4,3); %創(chuàng)建2行4列3頁服從標(biāo)準(zhǔn)正態(tài)分布的數(shù)組
>> A,B,C
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
C(:,:,3) =
-0.1241 1.4090 0.6715 0.7172
1.4897 1.4172 -1.2075 1.6302
總結(jié)
以上是生活随笔為你收集整理的matlab 高维数组赋值,MATLAB之三(高)维数组的创建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nuxt服务端php,nuxt服务端部署
- 下一篇: oracle11g memory_tar