MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   MATLAB:无法正确计算...用户错误? (https://www.labfans.com/bbs/showthread.php?t=24077)

poster 2019-12-10 20:48

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)) 感谢您的所有帮助!



[B]回答:[/B]

在这种情况下,良好的代码格式是您的朋友。使用省略号(即... , [URL="http://www.mathworks.com/help/techdoc/matlab_env/f0-5789.html#f0-5857"]行延续符号[/URL] )创建多行语句可以极大地帮助您...

似乎您在错误的位置加上了括号。您的代码如下所示:

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)); [B]编辑:[/B]

此外,正如[URL="https://stackoverflow.com/questions/4084041/matlab-not-calculating-correctly-user-error/4084129#4084129"]Darren在回答中提到的那样[/URL] ,您可能必须使用逐元素乘法运算符.*而不是矩阵乘法运算符* 。算术运算符的说明可以在[URL="http://www.mathworks.com/help/techdoc/ref/arithmeticoperators.html"]这里[/URL]找到。

同样,使用函数[URL="http://www.mathworks.com/help/techdoc/ref/sum.html"]SUM[/URL]对[URL="http://www.mathworks.com/help/techdoc/ref/sum.html"]向量[/URL]进行矢量化处理可以大大简化您的计算,如下所示:

result = sum((1-EU_P2par3(:,1:7)).*US_P2par3(:,1:7),2);

[url=https://stackoverflow.com/questions/4084041]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 23:19

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