Yes, there is a way. You can create a whole bunch of MuPAD code to use the general framework of the internal symbolic engine in order to implement non-commutative objects and associated :print slots, and you would create a number of MATLAB level functions that used feval(symengine) or evalin(symengine) to create appropriate wrappers at the MATLAB level.
The amount of work involved would depend upon what operations you needed. For example if you needed to implement differential equation solving on your non-commutative objects involving hypergeometric functions, then it could end up taking a fair bit of effort.
It would sort of be like implementing a new arithmetic class in MATLAB that for arcane reasons all had to be implemented by string manipulation, with only a depressed debugger to help you.