In cleaning up some code, the editor identified some supposedly unnecessary brackets that turned out to be completely necessary (at least parentheses). However, removing them gave some unexpected results. I was wonder if anyone had an explanation for the following example or is it a bug? FYI, I am using Matlab 2011a.
>> x = [1 2 3 4];
>> y = x + [1:4] %with brackets
y =
2 4 6 8
>> y = x + 1:4 %w/o brackets or parentheses
y =
2 3 4
Granted parentheses also work correctly in the first equation ... However, why is the 2nd output only 3 elements? What is Matlab actually doing in that example?
Thanks,

 Akzeptierte Antwort

Sean de Wolski
Sean de Wolski am 31 Mär. 2014
Bearbeitet: Sean de Wolski am 31 Mär. 2014

0 Stimmen

It's grouping it like this:
(x+1):2
Best practice is to always use parenthesis! So for your example
x + (1:4)
The []s are unnecessary here because they are horizontally concatenating the vector that is already a row vector (the same as [1 2 pi]). Parenthesis don't specify concatenation but do specify order of operations.

1 Kommentar

Ben
Ben am 31 Mär. 2014
Thanks! That does appear to be what it is doing. I could not see how it was coming up that 3 element answer.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Gefragt:

Ben
am 31 Mär. 2014

Kommentiert:

Ben
am 31 Mär. 2014

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by