zoukankan      html  css  js  c++  java
  • IDL基础

    先列后行
    
    arr=indgen(3,4)
    SIZE(arr,/dimensions)
     print ,where(arr gt7)
    print,arr[where(arr gt 7)]
    print,where(arr gt 7,cout,COMPLEMENT=com,ncomplement=ncom)
    array[WHERE(array GT 5, /NULL)] = 5
    
    arr=indgen(2,8);
    arrReform=reform(arr,1,8);维数一定,改变个数
    arrRebin=REBIN(arr,2,8);维数一定,改变每一维的倍数
     arrCongrid=congrid(arr,1,1)
    arrRotate5=ROTATE(ARR,5)
    
    arr=indgen(8)
    print,arr[sort(arr)];sort()返回排序后的索引
    
    print,uniq(arr,sort(arr));返回arr中的唯一值,即,不重复,如果用uniq(arr)则返回的是将相邻的相同值只取一个,不相邻的却去不了
    
    print,arr1 # arr2;数组相乘
    print,arr1 ## arr2;矩阵相乘
    
    print,strmid(str,strlen(str)+1,strlen(str),/reverse_offset);反向截取字符串
    file=dialog_pickfile()
    print,file
    
    hdr=STRMID(file,pointPosition+1,strlen(file)-pointPosition-1)
    
    help,strtrim(string(a),1);转换为string并trim掉一边的空格
    
    
    结构体
     str={v1:5,v2:'dfdf'};定义匿名结构体
    print,n_tags(str);结构体个成员个数
    print,tag_names(str);结构体成员 名称
    print,str.v1;某一成员的值
    
    str3={two,inherits one,v4:'1'};two结构体继承自one,并向two添加v4变量
    动态扩展
    str4=create_struct(str2,'v5',findgen(5));创建结构体,并将str2中的数据也copy过来
    
    指针
    data=indgen(5);定义数组
    ptr=ptr_new(data);定义指针------ptr_new()
    Data=!null;制空
    print,*ptr;打印指针,-------*ptr
    ptr=ptr_new(data,/no_copy);创建指针后将data制空(undefined)
    print,*pt=5;动态赋值还可以动态改变
    print,*pt=indgen(5)
    
    链表
    obj_destroy,list;销毁list
    Obj_valid(list);结果如果为0则说明销毁对象list
    
    逻辑运算符
    &&与
    ||或
    ~非
    
    位运算符
    AND
    NOT
    OR
    XOR异或
    if (keyword_set(xxx)) then begin;keyword_set()方法用于判断是否输入xxx
    
    关键字继承
    Plotex.por文件
    pro plotex,x,y,_extra=_extra
    plot,x,y,_extra=_extra			;_strict_extra=_extra严格关键字继承
    end
    然后在控制台中键入
    IDL> x=findgen(100)/10
    IDL> plotex,x,sin(x)
    IDL> plotex,x,sin(x),thick=2,color=255
    效果如下
    pro plotex,x,y,_ref_extra=_extra;_ref_extra定义之后plotex只接受下面_extra=[]中指定的变量
    plot,x,y,_extra=['thick','color']
    End
    
    pro plotex,x,y,_strict_extra=_extra
    plot,x,y,_extra=_extra	        ;_strict_extra=_extra严格关键字继承
    end
    
    
    算法优化
    
    a=!null;结果:A               UNDEFINED = !NULL
    delvar,a;结果:A               UNDEFINED = <Undefined>
    IDL> a=4
    IDL> b=5
    IDL> c=temporary(a)+temporary(b)
    IDL> help,c,a,b
    C               INT       =        9
    A               UNDEFINED = <Undefined>
    B               UNDEFINED = <Undefined>
    IDL> 
    
    时间控制
    TIC:程序开始
    TOC:程序结束
    EX:
    pro plotex,x,y,_ref_extra=_extra
    tic
    plot,x,y,_extra=['thick','color']
    toc
    End
    结果:% Time elapsed: 0.0069999695 seconds.
    clip_image001
    IDL> z=shift(dist(40),20,20)
    % Compiled module: DIST.
    IDL> z=exp(-(z/10)^2)
    IDL> surface,z
    IDL> 
    输出为:
    clip_image002
    数据输入输出:
    print,read,reads,string()
    IDL> str='123 45 idl'
    IDL> a=0
    IDL> b=''
    IDL> reads,str,a,b
    IDL> help,a,b
    A               INT       =      123
    B               STRING    = ' 45 idl'
    
    Format---输出格式控制
    [n]FC[+][-][width]
    Opner	只读操作
    Openw	写文件
    Openu	
    File_search()	搜索特定的文件
    Dialog_pickfile()	
    Fstat()	
    Eof()	判断是否到最后
    Close	关闭逻辑设备号
    Free_Lun	释放逻辑设备号
    ;按行读取数据
    pro readAndWriteFile
    file=dialog_pickfile();打开文件
    openr,lun,file,/get_lun;读取文件
    temp='';定义中间变量用来存储读取的数据
    openw,lunOpen,'F:enviTempopenw1.txt',/get_lun
    while(~eof(lun))do begin
      readf,lun,temp
      printf,lunOpen,temp
    Endwhile 
    free_lun,lun
    free_lun,lunOpen
    end
    
    ;分块读取数据
    file=dialog_pickfile()
    openr,lun,file,/get_lun
    data1=strarr(20)
    data2=findgen(6,30)
    readf,lun,data1
    readf,lun,data2
    print,data1
    print,data2
    
    ;向导式读取数据
    pro ascii_templatemethond
    file=dialog_pickfile()
    if ~file_test(file) then return 
    template=ascii_template(file);存为二进制文件
    if size(template,/type) eq 2 then return;判断读进来的数据是否为整形
    data=read_ascii(file,template=template);读取二进制文件
    p=plot(data.(1));用读到的数据的第二列制图
    help,data
    print,data.(0)
    End
    
    ;规则数据读取
    pro array
    file=dialog_pickfile()
    openr,lun,file,/get_lun
    readf,lun,firstLine
    colum=0
    row=0
    type=0
    reads,firstLine,colum,row,type
    arr=make_array(colum,row,type=type)
    readf,lun,temp1
    readf,lun,temp2
    ;忽略两行
    readf,lun,temp3
    print,temp3
    end
    
    二进制文件读取
    Readu
    writeu
    
    风云数据读取
    file=dialog_pickfile()
    openr,lun,file,/get_lun
    headline=intarr(3)
     point_lun,lun,20;跳过前面20个数据
    readu,lun,headline
    fyarr=bytarr(1201,1201)
    point_lun,lun,2*1201;跳过两行
    tvscl,fyarr
    
    读图片
    file=dialog_pickfile()
    read_jpeg,file,data
    tvscl,data,/true;true为1,从help data-->DATA            BYTE      = Array[3, 600, 400],3在第一个位置,
     write_jpeg,"桌面1.jpg",tvrd(true=1),quality=75,true=1
  • 相关阅读:
    入门级: WinForm 下的 ComboBox,ListBox 的使用 (一)
    C#:谨慎 DateTime.Now 带来的危险
    HTML5 小游戏审核通过,请各位有兴趣的朋友帮忙投票!谢谢。
    基于fpga的单线激光雷达数据处理
    左右法则-复杂指针解析
    智能指针(auto_ptr和shared_ptr) 转
    iphone游戏引擎
    C++对象和内存
    让你的代码变的更加强大
    Class Loader
  • 原文地址:https://www.cnblogs.com/shangguanjinwen/p/4262924.html
Copyright © 2011-2022 走看看