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,

 採用された回答

Sean de Wolski
Sean de Wolski 2014 年 3 月 31 日
編集済み: Sean de Wolski 2014 年 3 月 31 日

0 投票

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 件のコメント

Ben
Ben 2014 年 3 月 31 日
Thanks! That does appear to be what it is doing. I could not see how it was coming up that 3 element answer.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

タグ

質問済み:

Ben
2014 年 3 月 31 日

コメント済み:

Ben
2014 年 3 月 31 日

Community Treasure Hunt

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

Start Hunting!

Translated by