10

我在一个简单的乘法过程中偶然发现了一个错误,这让我很惊讶。这里发生的事情,我一直认为*只是矩阵乘法

x = 2;
y = zeros(1,4);
y(1) = 1 *x;
y(2) = x* 1;
y(3) = (x *1);
y(4) = x *1;
y
x *1

将给出以下输出:

y =

     2     2     2     1

Error: "x" was previously used as a variable,
conflicting with its use here as the name of a function or command.
See MATLAB Programming, "How MATLAB Recognizes Function Calls That Use Command Syntax" for details.

有谁明白这里发生了什么?当然,我证实这x不是一个功能。

4

2 回答 2

11

这取决于间距。另请参阅此处以获得更长的解释和一些何时可能存在真正歧义的示例,但基本上前三个将按您的预期工作,最后一个将假设您正在尝试使用输入 *1 调用函数 x:

x*1  
x * 1 
x* 1
x *1

如果将输出分配给某个变量,则无论间距如何,都不会发生这种情况:

y(2) = x *1
z = x *1
x = x *1
于 2013-08-13T10:55:00.967 回答
9

发生这种情况是因为当您x *1在单独的行中时,MATLAB 将解释x为一个函数并尝试将'*1'其作为参数传递给它,但随后它意识到这x是一个变量,因此出现了错误。

于 2013-08-13T10:41:04.400 回答