Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我一直在看这段代码已有一段时间了,无法弄清楚为什么matlab无法正确计算。有人看到我可能对此代码做错了什么吗?
((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)))+((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 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在回答中提到的那样 ,您可能必须使用逐元素乘法运算符.*而不是矩阵乘法运算符* 。算术运算符的说明可以在这里找到。 同样,使用函数SUM对向量进行矢量化处理可以大大简化您的计算,如下所示: result = sum((1-EU_P2par3(:,1:7)).*US_P2par3(:,1:7),2); 更多&回答... |
![]() |
![]() |