Working with 3D matrix in Matlab
To visualize the 3D matrix just consider that them as stack of images or layers.
{There is one more very important way, that is third dimension representing the feature vector’s length}
So a(:, :, i) = all elements in the layer i, so changing i will give you next image.
where a(r,c, i) will move in the image.
a = []; a(:,1,:) = [111 112 113 114 ; 121 122 123 124 ; 131 132 133 134]; a(:,2,:) = [211 212 213 214 ; 221 222 223 224 ; 231 232 233 234]; a(:,3,:) = [311 312 113 114 ; 321 322 323 324 ; 331 332 333 334]; a(:,4,:) = [411 412 113 114 ; 421 422 423 424 ; 431 432 433 434]; a(:,5,:)= [511 512 513 514 ; 521 522 523 524 ; 531 532 533 534];
Will make the 3D matrix ‘a’
size(a)
ans =
3 5 4
That is there are 4 images and each image is of 3 rows and 5 cols.
But let’s Say you want to represent 3rd dimension as the feature vector so each a(r,c, : ) represents a feature vector.
Now let’s say you want to make a 3D matrix from one feature vector.
vt = squeeze([a( 2,1, : ) ] );
vt = vt(:)';
%//make it into 2 by 3 by length(feature) matrix
%//repmat will repeat this matrix and make a 6 row matrix
%//the reshape picks the elements from the 1st col, 1st row and start moving downward in the row and so on
%//therefore each time it will meet same element as it moves down the row and fills our first image
tempT = (reshape(repmat(vt, 2*3,1), 2, 3, length(vt)));
size(tempT)
ans =
2 3 4