I am trying to display variable names and num2str representations of their values in matlab

cuabanana picture cuabanana · Nov 9, 2012 · Viewed 27.3k times · Source

I am trying to produce the following:The new values of x and y are -4 and 7, respectively, using the disp and num2str commands. I tried to do this disp('The new values of x and y are num2str(x) and num2str(y) respectively'), but it gave num2str instead of the appropriate values. What should I do?

Answer

Colin T Bowers picture Colin T Bowers · Nov 9, 2012

Try:

disp(['The new values of x and y are ', num2str(x), ' and ', num2str(y), ', respectively']);

You can actually omit the commas too, but IMHO they make the code more readable.

By the way, what I've done here is concatenated 5 strings together to form one string, and then fed that single string into the disp function. Notice that I essentially concatenated the string using the same syntax as you might use with numerical matrices, ie [x, y, z]. The reason I can do this is that matlab stores character strings internally AS numeric row vectors, with each character denoting an element. Thus the above operation is essentially concatenating 5 numeric row vectors horizontally!

One further point: Your code failed because matlab treated your num2str(x) as a string and not as a function. After all, you might legitimately want to print "num2str(x)", rather than evaluate this using a function call. In my code, the first, third and fifth strings are defined as strings, while the second and fourth are functions which evaluate to strings.