web-dev-qa-db-ja.com

3Dマトリックスを作成する

MATLABで3Dマトリックスを定義するにはどうすればよいですか?

たとえば、サイズ(8 x 4 x 20)のマトリックスか、既存の2Dマトリックスに3次元を追加しますか?

34
Niko Gamulin

3Dマトリックスを作成する

_A = zeros(20, 10, 3);   %# Creates a 20x10x3 matrix
_

マトリックスに3次元を追加する

_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_を返します。

行列の次元数に明示的な制限はありません。

45
Geoff

すべてゼロを含む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
10
Jonas

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
6
Joel