reshape changes the dimensions of an array without changing the number of elements or their order. If you provide an empty matrix as dimension, the other given dimensions are used and the missing one is replaced such, that the total number of elements is not modified. So reshape(X, 1, []) creates a row vector.
It matters, that Matlab stores the element of arrays in columnwise order:
X = [1, 2; ...
3, 4; ...
5, 6];
reshape(X, 1, []) % or explicitly: reshape(X, 1, 6)
With providing more dimensions, a multi-dimonsional array is created:
reshape(X, 2, 1, [])