MATLAB makes absolutely no attempt to recognize that if you add '1' + '2' that you might be wanting it to mean add 1 and 2.
That works, but that isn't what you did.
That's what you did. You got the printable representation of the sum and subtracted '0' from that, whereas what you needed was to subtract '0' from the sum.
But even then...
When you do arithmetic on characters, you have to allow for overflow.
I suggest you subtract '0' from each of the characters, line the two up so that the right side matches and zero-pad on the left if need be. Now add, getting a vector of decimal values. Now run through the vector starting from the right, and each position that is 10 or greater, subtract 10 from that entry and add 1 to the entry to the left... watching out for a final carry that expanded the number of digits.
Once you have the vector of decimal values, having carried out the carries, add back '0' and convert to char()