Asked by Vincent TORRELLI
on 18 Oct 2019

Hello,

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)];

disp(sum_1);

Can you help me please. Thank you very much.

Vincent

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))

Vincent TORRELLI
on 18 Oct 2019

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.

Vincent

Ted Shultz
on 18 Oct 2019

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 = '+';

else

thisSymbol = '-';

end

workingString = [workingString sprintf('%s %i ',thisSymbol , abs(a(ii) ))]; %#ok<AGROW>

end

workingString = [workingString newline];

disp(workingString)

this gives:

1 + 3 - 4 + 5 - 10

Vincent TORRELLI
on 18 Oct 2019

Awesome, that's perfectly working.

Thank you very much !

Vincent

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.

Vincent

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 1 Comment

## darova (view profile)

## Direct link to this comment

https://in.mathworks.com/matlabcentral/answers/486148-display-symbols-between-numbers-from-a-vector#comment_757847

Sign in to comment.