明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1251|回复: 21

[基础] 参数管理器中的表达式怎么编写:当50小于多少时20等于多少?

[复制链接]
发表于 2024-5-4 11:31:18 | 显示全部楼层 |阅读模式
或当50大于多少时20等于多少?

本帖子中包含更多资源

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

x
发表于 2024-5-7 23:20:40 | 显示全部楼层
277283904 发表于 2024-5-7 16:48
像这样的怎么写:当d1≤20时,d2不能少于2或等于3

返回结果这样表达有点不妥,返回的必须是具体的值,不能是大于等于2的区间。
d2不能少于2或等于3,可以理解成(不能少于2)或等于3,也可以理解成 不能(少于2或等于3)
一个是表示大于等于2,另一个表示大于等于2且不等于3
发表于 2024-5-6 18:55:41 | 显示全部楼层
嵌套的sign函数语句往往是可以化简的

d1<=50时为30,否则回20:
d2 =10*sign(1-sign(d1 - 50))  + 20

d1>=50时为30,否则回20:
d2 =10*sign(1+sign(d1 - 50))  + 20

d1=50时为30,否则回20:
d2 = 10 * (1 - abs(sign(d1 - 50))) + 20
 楼主| 发表于 2024-5-6 17:31:37 | 显示全部楼层
大西瓜 发表于 2024-5-5 20:12
d2=sign(sign(d1-50)+1)*20+(sign(50-d1)+1)*30
修正一下,这才是完整的表达式。
谢谢!这段代码还是不太理解,sign函是怎么用,有例子说明吗?官方说明是符号函数(-1,0,1)。
发表于 2024-5-5 19:47:21 | 显示全部楼层
依据d1的值,返回d2的值吧?
发表于 2024-5-5 20:00:36 | 显示全部楼层
举个例子,当d1>=50时,d2=20;否则返回30
表达式是可以实现数值型分段函数的,有很强的技巧
d2=sign(sign(d1-50)+1)*20+30
发表于 2024-5-5 20:12:17 | 显示全部楼层
d2=sign(sign(d1-50)+1)*20+(sign(50-d1)+1)*30
修正一下,这才是完整的表达式。  
 楼主| 发表于 2024-5-6 11:24:11 | 显示全部楼层
本帖最后由 277283904 于 2024-5-6 11:37 编辑
大西瓜 发表于 2024-5-5 20:12
d2=sign(sign(d1-50)+1)*20+(sign(50-d1)+1)*30
修正一下,这才是完整的表达式。

输入这段代码时出现错误

本帖子中包含更多资源

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

x
发表于 2024-5-6 14:50:27 | 显示全部楼层
d2=sign(sign(d1-50)+1)*20+(sign(50-d1)+1)*30
输入“=”后面的内容
 楼主| 发表于 2024-5-6 17:33:44 | 显示全部楼层
YueFeng 发表于 2024-5-6 14:50
d2=sign(sign(d1-50)+1)*20+(sign(50-d1)+1)*30
输入“=”后面的内容

谢谢!这段代码还是不太理解,sign函是怎么用,有例子说明吗?官方说明是符号函数(-1,0,1)。
发表于 2024-5-6 18:53:07 | 显示全部楼层
sign是符号函数,常见于信号分析中,也是所有编程语言具有的基本函数之一。非常有意思的构造函数,可以实现数值比较代替if数值返回或者分段函数  sign(x)=x/ABS(x)=ABS(x)/x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 15:23 , Processed in 0.185848 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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