在这种情况下,好的代码格式是你的朋友。使用省略号(即...,line continuation symbol)创建一个多行语句可以有很大的帮助...
看起来你在错误的地方有一个括号。您的代码看起来是这样的:
result = ((1-EU_P2par3(:,1))*US_P2par3(:,1))+...
((1-EU_P2par3(:,2))*US_P2par3(:,2))+...
((1-EU_P2par3(:,3))*US_P2par3(:,3))+...
((1-EU_P2par3(:,4))*US_P2par3(:,4))+...
((1-EU_P2par3(:,5))*US_P2par3(:,5))+...
((1-EU_P2par3(:,6)*US_P2par3(:,6)))+... %# Notice something here?
((1-EU_P2par3(:,7))*US_P2par3(:,7));
而且你可能希望这样的:
result = ((1-EU_P2par3(:,1))*US_P2par3(:,1))+...
((1-EU_P2par3(:,2))*US_P2par3(:,2))+...
((1-EU_P2par3(:,3))*US_P2par3(:,3))+...
((1-EU_P2par3(:,4))*US_P2par3(:,4))+...
((1-EU_P2par3(:,5))*US_P2par3(:,5))+...
((1-EU_P2par3(:,6))*US_P2par3(:,6))+... %# Notice the change?
((1-EU_P2par3(:,7))*US_P2par3(:,7));
编辑:
此外,Darren mentions in his answer,你可能将不得不使用逐元素乘法运算符.*而不是矩阵乘法运算符*。算术运算符的解释可以在here找到。
此外,您的计算可以大大通过使用函数SUM,像这样向量化它简化为:
result = sum((1-EU_P2par3(:,1:7)).*US_P2par3(:,1:7),2);