【IDL】多条件判断的另类写法(case代替i)

对数组X,函数Y与之对应关系如下:

  • 如果X小于0.1那么函数就是 y=9.3x+0.072
  • 如果x大于0.1小于0.35那么函数就是y=0.16
  • 如果X大于0.35小于1.75那么函数就是y=0.0504/x
  • 如果x大于1.75小于20那么函数就是y=0.88-0.0035x
  • 其他情况y=x

那么如果用IDL程序实现可以用IF THEN ELSE来写,如下:

x=FINDGEN(2000)*(0.01)
  y = x
  FOR i=0,N_ELEMENTS(x)-1 DO BEGIN
   IF x[i] LT 0.1 THEN BEGIN
     y[i] = 9.3*x[i]+0.072
   ENDIF ELSE IF x[i] LT 0.35 THEN BEGIN
     y[i] = 0.16
   ENDIF ELSE IF x[i] LT 1.75 THEN BEGIN
     y[i] =0.0504/x[i]
   ENDIF ELSE IF x[i] LT 20 THEN y[i] = 0.88-0.0035*x[i]   
 ENDFOR

当然,为了省事好看,可以用case来实现,简单明了:

x=FINDGEN(2000)*(0.01)
  y = x
  FOR i=0,N_ELEMENTS(x)-1 DO BEGIN
   CASE 1 OF
     x[i] LT 0.1: y[i] = 9.3*x[i]+0.072
     (x[i] GE 0.1) AND (x[i] LT 0.35): y[i] = 0.16
     (x[i] GE 0.35) AND (x[i] LT 1.75): y[i] =0.0504/x[i]
     (x[i] GE 1.75) AND (x[i] LT 20): y[i] = 0.88-0.0035*x[i]
     ELSE:
   ENDCASE
 ENDFOR

 

posted @   地理遥感生态网平台  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示