MATLABで3Dマトリックスを定義するにはどうすればよいですか?
たとえば、サイズ(8 x 4 x 20)のマトリックスか、既存の2Dマトリックスに3次元を追加しますか?
_A = zeros(20, 10, 3); %# Creates a 20x10x3 matrix
_
_B = zeros(4,4);
C = zeros(size(B,1), size(B,2), 4); %# New matrix with B's size, and 3rd dimension of size 4
C(:,:,1) = B; %# Copy the content of B into C's first set of values
_
ゼロは、新しい行列を作成する1つの方法にすぎません。もう1つは、3DマトリックスのA(1:20,1:10,1:3) = 0
です。行列のサイズを確認するには、size(A)
を実行します。これは_20 10 3
_を返します。
行列の次元数に明示的な制限はありません。
すべてゼロを含む3Dマトリックスを定義する場合は、次のように記述します。
A = zeros(8,4,20);
すべてのものはones
を使用し、すべてのNaNはNaN
を使用し、すべてのfalseはfalse
の代わりにzeros
を使用します。
既存の2Dマトリックスがある場合、「3次元」のエレメントを割り当てることができ、マトリックスは新しいエレメントを含むように拡張されます。追加する必要がある他のすべての新しいマトリックス要素はゼロに設定されます。
例えば
B = magic(3); %# creates a 3x3 magic square
B(2,1,2) = 1; %# and you have a 3x3x2 array
Octaveを使用しますが、Matlabの構文は同じです。
3Dマトリックスを作成します。
octave:3> m = ones(2,3,2)
m =
ans(:,:,1) =
1 1 1
1 1 1
ans(:,:,2) =
1 1 1
1 1 1
次に、新しい次元で拡張したい2Dマトリックスがあるとします。
octave:4> Two_D = ones(2,3)
Two_D =
1 1 1
1 1 1
3Dマトリックスを作成し、その最初の2Dを私の古いものに設定することで拡張できます(ここでは3番目の次元のサイズ2があります)。
octave:11> Three_D = zeros(2,3,2)
Three_D =
ans(:,:,1) =
0 0 0
0 0 0
ans(:,:,2) =
0 0 0
0 0 0
octave:12> Three_D(:,:,1) = Two_D
Three_D =
ans(:,:,1) =
1 1 1
1 1 1
ans(:,:,2) =
0 0 0
0 0 0