Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 MATLAB:无法正确计算...用户错误?

我一直在看这段代码已有一段时间了,无法弄清楚为什么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);

更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 02:59


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.