找回密码
 注册
Simdroid-非首页
查看: 115|回复: 4

求助:for循环中if语句的向量化

[复制链接]
发表于 2011-12-24 17:36:59 | 显示全部楼层 |阅读模式 来自 浙江杭州
例如,原程序是一个for循环,根据R的值计算deltaKeffth

R=[-1;0;0.1;0.3;0.5;0.7;0.8;0.9;-0.5;0.2;-1.5]; %R为一个10*1矩阵
for i=1:length(R)
if R(i)>=-2.0 && R(i)<0.0;
      feff(i)=(0.52-0.1*R(i))/(1.0-R(i));
      fth(i)=(1.0-R(i))^0.5;
   end

  if R(i)>=0.0 && R(i)<0.5;
      feff(i)=0.52+0.42*R(i)+0.06*R(i)^2.0;
         fth(i)=(1-R(i))^0.3;
  end

   if R(i)>=0.5 && R(i)<1.0;
      feff(i)=0.52+0.42*R(i)+0.06*R(i)^2.0;
      fth(i)=(1.05-1.4*R(i)+0.6*R(i)^2.0)^0.3;
   end

deltaKeffth(i)=feff(i)*fth(i)

end


想把代码优化成向量运算的形式,以便在大量循环时优化计算,现写成:

feff=(R>=-2 & R<0)*(0.52-0.1*R./(1.0-R))+(R>=0 & R<1)*(0.52+0.42*R+0.06*R.^2);
fth=(R>=-2 & R<0)*((1-R)^0.5)+(R>=0 & R<0.5)*((1-R)^0.3)+(R>=0.5 & R<1)*((1.05-1.4*R+0.6*R^2)^0.3);
deltaKeffth=feff.*fth.


报错:
??? Error using ==> mtimes
Inner matrix dimensions must agree.

Error in ==> crack_SLH at 57
feff=(R>=-2 & R<0)*(0.52-0.1*R./(1.0-R))+(R>=0 & R<1)*(0.52+0.42*R+0.06*R.^2);



我刚接触向量化编程,请问一下问题出在哪?高手们,该怎样改?
请大家帮忙,谢谢啦!


发表于 2011-12-24 23:17:44 | 显示全部楼层 来自 四川成都
Simdroid开发平台
电脑上没装matlab,看了一下,应该是条件判断式(如(R>=-2 & R<0))后紧跟着*号所致,应该是用.*,因为条件式运算出来也是一个列向量,而*号后面跟着的也是列向量,两个同形式向量直接用*法相联是会出现mtimes错误提示的

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-12-26 15:21:25 | 显示全部楼层 来自 浙江杭州
lengyunfeng 发表于 2011-12-24 23:17
电脑上没装matlab,看了一下,应该是条件判断式(如(R>=-2 & R

十分感谢!

改用了.*  还是相同的错误,请问一下,条件判断式后面的括号,如(0.52-0.1*R./(1.0-R)),到底该不该用./ 呢?

我用./就报错:

??? Error using ==> mpower
Matrix must be square.

Error in ==> R_youhua at 27
fth=(R>=-2 & R<0).*((1-R)^0.5)+(R>=0 & R<0.5).*((1-R)^0.3)+(R>=0.5 & R<1).*((1.05-1.4*R+0.6*R^2)^0.3);
回复 不支持

使用道具 举报

发表于 2011-12-26 22:33:53 | 显示全部楼层 来自 四川成都
本帖最后由 lengyunfeng 于 2011-12-26 22:34 编辑
ice-huya 发表于 2011-12-26 15:21
十分感谢!

改用了.*  还是相同的错误,请问一下,条件判断式后面的括号,如(0.52-0.1*R./(1.0-R)),到 ...


你这回错在了((1-R)^0.5)里的^上,应该是.^。再细心点你就应该能做对了
回复 不支持

使用道具 举报

 楼主| 发表于 2011-12-27 15:16:08 | 显示全部楼层 来自 浙江杭州
lengyunfeng 发表于 2011-12-26 22:33
你这回错在了((1-R)^0.5)里的^上,应该是.^。再细心点你就应该能做对了

谢谢谢谢!!!我明白了,细心点。。再细心点:)
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-3 03:27 , Processed in 0.031722 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表