scatteredInterpolant is a built-in function so we do not know how it is actually implemented internally, but it stands to reason that an internal compiled C function would run faster than an interpreted m-function (interp1.m). Also, it is quite possible that scatteredInterpolant is optimized internally for the 1D case, so mat(x,1) might well be using an optimized code branch.
If you wish to improve interpolation speed, consider using interp1q. Unlike the generic interp1 function, interp1q avoids any checks of its inputs, which are expected to be a monotonically increasing column vector (x), a column vector or matrix with length(x) rows (Y), and a column vector (xi).
An even faster implementation of the core logic was implemented by Bruno Luong using MEX, which he called nakeinterp1. Jan Simon has also implemented a MEX variant, called ScaleTime, which is many times faster than interp1 or interp1q.
