参数管理器中的表达式怎么编写:当50小于多少时20等于多少?
或当50大于多少时20等于多少?277283904 发表于 2024-5-7 16:48
像这样的怎么写:当d1≤20时,d2不能少于2或等于3
返回结果这样表达有点不妥,返回的必须是具体的值,不能是大于等于2的区间。
d2不能少于2或等于3,可以理解成(不能少于2)或等于3,也可以理解成 不能(少于2或等于3)
一个是表示大于等于2,另一个表示大于等于2且不等于3 嵌套的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-5 20:12
d2=sign(sign(d1-50)+1)*20+(sign(50-d1)+1)*30
修正一下,这才是完整的表达式。谢谢!这段代码还是不太理解,sign函是怎么用,有例子说明吗?官方说明是符号函数(-1,0,1)。
依据d1的值,返回d2的值吧? 举个例子,当d1>=50时,d2=20;否则返回30
表达式是可以实现数值型分段函数的,有很强的技巧
d2=sign(sign(d1-50)+1)*20+30 d2=sign(sign(d1-50)+1)*20+(sign(50-d1)+1)*30
修正一下,这才是完整的表达式。
本帖最后由 277283904 于 2024-5-6 11:37 编辑
大西瓜 发表于 2024-5-5 20:12
d2=sign(sign(d1-50)+1)*20+(sign(50-d1)+1)*30
修正一下,这才是完整的表达式。
输入这段代码时出现错误 d2=sign(sign(d1-50)+1)*20+(sign(50-d1)+1)*30
输入“=”后面的内容 YueFeng 发表于 2024-5-6 14:50
d2=sign(sign(d1-50)+1)*20+(sign(50-d1)+1)*30
输入“=”后面的内容
谢谢!这段代码还是不太理解,sign函是怎么用,有例子说明吗?官方说明是符号函数(-1,0,1)。 sign是符号函数,常见于信号分析中,也是所有编程语言具有的基本函数之一。非常有意思的构造函数,可以实现数值比较代替if数值返回或者分段函数sign(x)=x/ABS(x)=ABS(x)/x
页:
[1]
2