>> p=[1;2;3]
p =
1
2
3
>> p1 = [2;3;4]
p1 =
2
3
4
>> p + p1
ans =
3
5
7
但是
>> p .+ p1
Error: "p" was previously used as a variable, conflicting with
its use here as the name of a function or command.
See "How MATLAB Recognizes Command Syntax" in the MATLAB
documentation for details.
另外
>> p .* p1
ans =
2
6
12
>> p * p1
Error using *
Inner matrix dimensions must agree.
答案 0 :(得分:14)
问题是运营商.+
不存在:
>> help ops
Operators and special characters.
Arithmetic operators.
plus - Plus +
uplus - Unary plus +
minus - Minus -
uminus - Unary minus -
mtimes - Matrix multiply *
times - Array multiply .*
mpower - Matrix power ^
power - Array power .^
...
注意,对于乘法,有两个运算符:.*
,element-wise multiplication和*
,matrix multiplication。没有矩阵添加这样的东西,因此只有一个运算符+
,即element-wise addition。
当您键入p .+ p1
时,Matlab解析器无法识别有效的运算符,因此它可能假设您正在使用command syntax并尝试使用字符串文字进行函数调用p('.+', 'p1')
。由于p
不是函数,因此您会收到错误消息。
这种'命令语法'很方便,因为它可以节省你输入几个字符(即load data.mat
而不是load('data.mat')
。问题是这会导致解释语句模糊不清,请参阅页面that was linked directly您的错误消息。正如您的问题所示,这可能会产生令人惊讶的结果。这是Matlab语法的一个阴暗面。
答案 1 :(得分:3)
运算符".*"
执行两个数组的元素乘法。
"*"
运算符执行两个数组的mutrix乘法,在你的情况下不能在两个3x1向量上完成,因此Matlab报告错误。
Matlab中不存在".+"
运算符。在这种情况下,Matlab认为您使用"."
语法来引用结构或函数的元素,因此会出现错误。