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

在comsol GUI里如何实现“if --- else”

[复制链接]
发表于 2011-1-23 00:53:33 | 显示全部楼层 |阅读模式 来自 美国
我想在comsol图形用户界面里实现:
if x==0
  if y>0
    phi=0.5*pi
  else
    phi=-0.5*pi
else if x>0
  if y>0
    phi=atan(y/x)
  else
    phi=2*pi+atan(y/x)
else
  phi=pi+atan(y/x)

其中,x,y为空间自变量,phi为一自定义变量

我自己的方法是:phi=(x==0&&y>0)*(0.5*pi)+(x==0&&y<=0)*(-0.5*pi)+(x>0&&y>0)*(atan(y/x))+(x>0&&y<=0)*(2*pi+atan(y/x))+(pi+atan(y/x))
正确吗?或者有没有更好的方法?
谢谢!
发表于 2011-1-25 09:15:46 | 显示全部楼层 来自 湖北武汉
Simdroid开发平台
可以定义分段函数来表示,用matlab语言书写也行
回复 不支持

使用道具 举报

 楼主| 发表于 2011-1-25 10:08:12 | 显示全部楼层 来自 美国
可以定义分段函数来表示,用matlab语言书写也行
小侠飞天 发表于 2011-1-25 09:15
但是,comsol的分段函数好像只能有一个argument, 见附件v4.0里的截图,而我的argument有两个,x和y,这样的话interval下面应该怎么填呢?谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2011-1-30 03:24:28 | 显示全部楼层 来自 美国
本帖最后由 feasky 于 2011-1-30 03:25 编辑

((phi=0.5*pi)*(y>0)+(phi=-0.5*pi)*(y<=0))*(x==0)+(( phi=atan(y/x))*(y>0)+(phi=2*pi+atan(y/x))*(y<=0))*(x>0)+ (phi=pi+atan(y/x))*(x<0)


采用上面的逻辑表达式。自己检查一下。
回复 不支持

使用道具 举报

发表于 2011-2-14 15:26:24 | 显示全部楼层 来自 北京
if you want to calculate the angle from x and y, u can use atan2(y,x)
回复 不支持

使用道具 举报

 楼主| 发表于 2011-2-14 22:42:01 | 显示全部楼层 来自 美国
谢谢大家的方法,后来发现comsol还有个if( ) operator, 不过只能做一重if,像我这样两重if似乎就不行了
回复 不支持

使用道具 举报

发表于 2019-10-26 21:16:05 | 显示全部楼层 来自 甘肃兰州
我也想知道if else,因为我要定义3段的函数。同求。有哪位仁兄可以指导,QQ:1204071132
回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 08:52 , Processed in 0.037348 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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