I think the analogue of Matlab's implicit concatenation is ArrayFlatten, but it still needs to be called explicitly.
(aa = Table[a[i, j], {i, 3}, {j, 3}]) // MatrixForm
$$\left(
\begin{array}{ccc}
a(1,1) & a(1,2) & a(1,3) \\
a(2,1) & a(2,2) & a(2,3) \\
a(3,1) & a(3,2) & a(3,3) \\
\end{array}
\right)$$
(bb = Table[{b[i]}, {i, 3}]) // MatrixForm
$$\left(
\begin{array}{c}
b(1) \\
b(2) \\
b(3) \\
\end{array}
\right)$$
ArrayFlatten[{{aa, bb}}] // MatrixForm
$$\left(
\begin{array}{cccc}
a(1,1) & a(1,2) & a(1,3) & b(1) \\
a(2,1) & a(2,2) & a(2,3) & b(2) \\
a(3,1) & a(3,2) & a(3,3) & b(3) \\
\end{array}
\right)$$
To work with the usual form of vectors, I'd suggest the following:
row[v_] := {v}
col[v_] := {#} & /@ v
sca[x_] := {{x}}
Then if you have, for example,
aa = Array[a, {3, 4}] (* {{a[1, 1], a[1, 2], a[1, 3], a[1, 4]}, ...} *)
bb = Array[b, 3] (* {b[1], b[2], b[3]} *)
cc = Array[c, 4] (* {c[1], c[2], c[3], c[4]} *)
you can do
ArrayFlatten[{{aa, col[bb]}, {row[cc], sca[d]}}]
$$\left(
\begin{array}{ccccc}
a(1,1) & a(1,2) & a(1,3) & a(1,4) & b(1) \\
a(2,1) & a(2,2) & a(2,3) & a(2,4) & b(2) \\
a(3,1) & a(3,2) & a(3,3) & a(3,4) & b(3) \\
c(1) & c(2) & c(3) & c(4) & d \\
\end{array}
\right)$$
while still working with aa, bb, and cc as matrices and vectors.
Flattencommand is confusing to students. MATLAB's method is much, much more intuitive. I want to know if there is a simple way of doing it. Given the links and other posts, it seems the answer is no. – GregH Sep 22 '14 at 15:24bis a vector (dimension=1) could doJoin[A, List /@ b, 2]. If it is a 3x1 matrix then drop theList/@part. – Daniel Lichtblau Sep 22 '14 at 16:21