How to copy a 2D matrix to a slice of a 3D matrix in Octave
In our previous post we showed how to create a 3D matrix in Octave, for example this 2x4x3
matrix:
>> A = zeros(2, 4, 3);
>> A
A =
ans(:,:,1) =
0 0 0 0
0 0 0 0
ans(:,:,2) =
0 0 0 0
0 0 0 0
ans(:,:,3) =
0 0 0 0
0 0 0 0
What if we want to copy a 2D matrix slice like
>> B = ones(2, 4)
B =
1 1 1 1
1 1 1 1
to the 3D matrix?
First, we need to think about which matrix indices we need to copy to.
Obviously, since B
is a 2x4
matrix and A is a 2x4x3
matrix, the third dimension needs to be fixed since the size of the first and second dimension of A
is identical to the dimension of B
.
Hence we can copy B
to either
A(:,:,1)
orA(:,:,2)
orA(:,:,3)
For example, we can copy B
to A(:,:,2)
using
A(:,:,2) = B
In our example with B = ones(2,4)
and A = zeros(2,4,3)
will look like this:
>> A(:,:,2) = B
A =
ans(:,:,1) =
0 0 0 0
0 0 0 0
ans(:,:,2) =
1 1 1 1
1 1 1 1
ans(:,:,3) =
0 0 0 0
0 0 0 0