菜鸟浅谈IDL中format的用法、并举例

大家都知道IDL中的format的用法是非常重要的对于控制文件输出来说。

他的基本用法。网上很多。我不再列举。今天给师兄写了一个很简单 的程序,用来处理数据用的。给一些新手介绍下format函数的用法。

原始数据:

3590    1369    108    53    49    28    22    14
3591    1369    107    52    47    28    24    13
3592    1369    106    52    47    28    24    13
3585    1370    111    56    51    29    25    14
3586    1370    112    56    50    28    24    14
3587    1370    111    54    49    28    23    13

我师兄想在EXCEL表中求出每一行的均值,然后输出到下一行中。

因为数据量非常大。所有我写了一个程序来控制。

首先我们要把数据读进来

openr,lun,filepath,/get_lun

然后我们新建一个变量用来存储均值。

最后我们用来控制输出

 OPENW,lun,filename[1],/GET_LUN,WIDTH=samples*20  ;filename[1]是存储的文件路径。width是控制输出长度的关键字。

这个关键字非常重要。因为我这里是浮点型的数据。所以我每一行的宽度都是数据的列数sample*width.

因为我想输出的结果是这个样子

所以for循环中每一次输出要输出一列原始数据。一列处理后的数据

FOR i = 0L, lines-1 DO BEGIN;利用for循环来控制输出

    PRINTF,lun,data_a[*,i],format = '(8f)'  ; 原始数据中有八列数据。所以每次我输出8个数。8就代表输出的次数。
    PRINTF,lun,data_b[i],format = '(f)';而这里因为每次只需要输出一个数,所以这里默认是1.f代表输出的浮点型数据。当然你可以控制输出的数据类型,整形数据是i.
  ENDFOR
  FREE_LUN,lun;注意每次用完lun.一定要及时释放。

 

 

 

源码如下

;2018-8-6
;实现计算上一行的均值。输出到下一行并输出
;Dabiao

PRO test_bill_e
  COMPILE_OPT idl2

  ;***********输入行数、列数、文件路径************
  filename = STRARR(2)
  ;输入文件路径
  filename[0] = FILE_DIRNAME(ROUTINE_FILEPATH('test_bill_e'))+$
    '\test.txt'
  ;输出文件路径
  filename[1] = 'd:\data_file.txt'
  samples =  8
  lines = 51
  ;****************************

  ;**********读取数据并进行处理************************
  ;***********输入参数samples,和参数lines***************
  data_a = FLTARR(samples,lines)
  OPENR,lun,filename[0],/GET_LUN
  READF,lun,data_a
  FREE_LUN,lun

  data_b = FLTARR(lines)

  FOR i = 0L, lines-1 DO BEGIN
    data_b[i] = TOTAL(data_a[*,i])/samples
  ENDFOR
  ;******************data_b是处理后的文件****************
  ;**************data_a是原来的文件*********************

  ;****************控制输出*****************************
  OPENW,lun,filename[1],/GET_LUN,WIDTH=samples*20
  FOR i = 0L, lines-1 DO BEGIN

    PRINTF,lun,data_a[*,i],format = '(8f)'
    PRINTF,lun,data_b[i],format = '(f)'
  ENDFOR
  FREE_LUN,lun

  print,'end all'
END

数据原图

输出后的结果看上图

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值