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) =
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
用函數創建三維數組
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函數
repmat函數可以創建三維數組,repmat是repeat matrix的縮寫,顧名思義就是重復矩陣,所以repmat(A,[1 2 3 ...])的意思就是以A為一個元素,重復A形成一個1行2列3頁...的高維矩陣,具體用法如下:>> A = [1 2 3;4 5 6;7 8 9];
>> 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 =
1 2 3
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,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
總結
以上是生活随笔為你收集整理的matlab 高维数组赋值,MATLAB之三(高)维数组的创建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nuxt服务端php,nuxt服务端部署
- 下一篇: matlab 角域重采样,matlab滤