![]() |
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.