LearningENVI&IDL分享 http://blog.sciencenet.cn/u/dongyanqing Learning ENVI&IDL

博文

多条件判断的另类写法(case代替if)

已有 2841 次阅读 2011-3-13 23:08 |个人分类:IDL技术|系统分类:科研笔记| 条件, IDL, case

对数组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



https://blog.sciencenet.cn/blog-344887-422082.html

上一篇:IDL下界面事件响应程序
下一篇:Fedora14下安装ENVI/IDL: error while loading shared libraries
收藏 IP: 125.39.134.*| 热度|

0

发表评论 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 09:16

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部