MATLAB Answers


display symbols between numbers from a vector

Asked by Vincent TORRELLI on 18 Oct 2019
Latest activity Commented on by Vincent TORRELLI on 18 Oct 2019
I'm writing a code to help people on mental computation. To do so, I want to display a sum with the symbol "+" between two numbers located in a vector.
I know it should be simple but I did not succeed so far. Here is an example:
I want to display on command window:
>> 10 + 11
The values 10 and 11 are located in a vector such as:
calc=[10 11];
I tried to do the following code but it doesn't work:
sum_1= [calc(1)," + ", calc(2)];
Can you help me please. Thank you very much.

  1 Comment

You should convert number into string
Use num2str

Sign in to comment.


3 Answers

Answer by Ted Shultz
on 18 Oct 2019
 Accepted Answer

you can use fprintf to print just about anything you want.
calc=[10 11];
fprintf('%i + %i\n', calc(1), calc(2))


Show 1 older comment
Thank you very much Ted !
One last thing:
For clarity purpose, I would like to have a space between the number and the symbol like the example:
1 + 3 - 4 - 5
Do you think it's feasible with your method ?
Thank you in advance.
If you want spaces, you may want to just build up the line element by element. One way to do this would be:
a=[ 1 3 -4 5 -10];
workingString = sprintf('%i ',a(1));
for ii = 2:numel(a)
if a(ii) >= 0
thisSymbol = '+';
thisSymbol = '-';
workingString = [workingString sprintf('%s %i ',thisSymbol , abs(a(ii) ))]; %#ok<AGROW>
workingString = [workingString newline];
this gives:
1 + 3 - 4 + 5 - 10
Awesome, that's perfectly working.
Thank you very much !

Sign in to comment.

Answer by Steven Lord
on 18 Oct 2019

Since you're using double quotes to create a string, turn your numeric vector into a string array then join the elements of that string array together.
calc = [10 11]
S = string(calc)
sum_1 = join(S, " + ")
You could do this in one line if you don't want to name the string temporary variable.
calc = [10 11]
sum_1 = join(string(calc), " + ")
Alternately if your calc vector is longer and you want to add different symbols you can use + to concatenate the string and numeric data together.
calc = 10:12;
sum1 = calc(1) + " + " + calc(2) + " * " + calc(3)
If this needs to run on an older release of MATLAB that doesn't support string, you can use sprintf.
calc = [10 11]
sum_1 = sprintf('%d + %d', calc)


Sign in to comment.

Answer by Vincent TORRELLI on 18 Oct 2019

Thank you every body for your answers.
Steven Lord, your following answer fits very well with my problem:
calc = [10 11]
S = string(calc)
sum_1 = join(S, " + ")
Indeed, the calc vector is parameterized so that its size can vary from 1 to n.
The calc vector contains "n" random numbers that can be either positive and negative.
The final goal will be to not print a "+" sign if the number is negative:
what I don't want: -15 + -16 + 13
what I want: -15 -16 +13
Do you know how to do it?
Thank you in advance.


Sign in to comment.