复数定义的空白效应

时间:2017-10-14 12:59:48

标签: matlab

我知道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

2 个答案:

答案 0 :(得分:3)

空间并不总是外观。当想要定义矩阵时,可以使用空格来分隔行的元素。实际上,您可以使用逗号,或空格来分隔两个后续元素。

实施例: A=[1 2 3; 4 5 6]将是2x3矩阵,等于:[1,2,3;4,5,6];

在第二种情况下,MATLAB将+i视为加i,因此在同一行中将其视为单独的元素。

答案 1 :(得分:3)

对于第一种情况,由于+运算符周围没有空格,因此将其解析为二进制运算符。因此,解决为一个复数。

对于第二种情况,由于+i之间没有空格,因此将其解析为一元运算符,例如+1。另一方面,space是矩阵元素的分隔符,因此在这种情况下检测到两个元素+i1。对于正确的情况,您可以编写[1 + +i],这与第三种情况相同。

在第三种情况下,由于+运算符周围的空格,应再次将+解析为二进制运算符。因此,它将被解析为一个复数。