我知道Matlab表达式中的空白纯粹是装饰性的,但是我发现了这一点并且我不明白发生了什么。有什么想法吗?
>> [1+i]
ans =
1.0000 + 1.0000i
>> [1 +i]
ans =
1.0000 + 0.0000i 0.0000 + 1.0000i << ????
>> [1 + i]
(我在2016a)
编辑: 感谢您的回复。
我意识到在查看非复杂数字时,更容易看到发生了什么:
>> [2-1]
ans =
1
>> [2 - 1]
ans =
1
>> [2 -1]
ans =
2 -1
但是,应用于复杂数字的相同解析规则可能会导致不知情的不良后果。
编辑2: 我完全理解上述所有内容的逻辑,但我不确定我是否对分隔符的空格和逗号的混合匹配方法感到满意,如果它可能会导致像这样的可怕事情..
> >> [1+2,3+4] ans =
> 3 7
> >> [1 +2,3+4] ans =
> 1 2 7
答案 0 :(得分:3)
空间并不总是外观。当想要定义矩阵时,可以使用空格来分隔行的元素。实际上,您可以使用逗号,
或空格来分隔两个后续元素。
实施例:
A=[1 2 3; 4 5 6]
将是2x3
矩阵,等于:[1,2,3;4,5,6];
在第二种情况下,MATLAB将+i
视为加i
,因此在同一行中将其视为单独的元素。
答案 1 :(得分:3)
对于第一种情况,由于+
运算符周围没有空格,因此将其解析为二进制运算符。因此,解决为一个复数。
对于第二种情况,由于+
和i
之间没有空格,因此将其解析为一元运算符,例如+1
。另一方面,space是矩阵元素的分隔符,因此在这种情况下检测到两个元素+i
和1
。对于正确的情况,您可以编写[1 + +i]
,这与第三种情况相同。
在第三种情况下,由于+
运算符周围的空格,应再次将+
解析为二进制运算符。因此,它将被解析为一个复数。