爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2458|回复: 0

[混合编程] IDL编程学习之统计实例

[复制链接]
发表于 2017-7-11 11:00:55 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
附件gaga.rar中包括了5月12-16日5个文件夹,每个文件夹中有SO2和NO2在不同时刻的txt文件,每个文件分为3列,第一列是方位角,第二列是半径(我也不知道是什么半径),第三列是浓度。
现在想要得到SO2(和NO2)在各个方位的平均分布。
观察数据,发现方位角都是30,60,90......330,360,浓度值也有9999这样的异常值,所以在统计时需要剔除。
代码:
book=[-99,-99,-99];用来存放合并结果
for date=2,6 do begin
file=findfile('C:\Users\YGDY\Desktop\gaga\051'+strtrim(string(date),2)+'\x_*SO2*.txt');先计算SO2的,然后把S改成N即可
n_file=n_elements(file)
for i=0,n_file-1 do begin
  a=read_ascii(file[i],data_start=1);第一行不要
x=a.field1
book=[[book],[x]];合并
endfor
endfor
help,book
for i=30,360,30 do begin
  p=where(book[0,*] eq i,count);筛选出每个方位角的数值
  if(count gt 0)then begin
    b=x[1,p]
    p2=where(b gt 0,count)
    if(count gt 0)then begin
      r=mean(b[p2])
      endif
    c=x[2,p]
    p3=where( c gt 0 and c ne 9999,count);大于0也就舍去了第一行的-99,9999异常值也舍去
    if(count gt 0)then begin
      s=mean(c[p3])
    endif
    print,i,r,s;输出某方位角下的平均半径和浓度
    endif
endfor
SO2和NO2的结果见附件

gaga.rar

35.01 KB, 下载次数: 0, 下载积分: 金钱 -5

结果NO2.txt

430 Bytes, 下载次数: 0, 下载积分: 金钱 -5

结果SO2.txt

430 Bytes, 下载次数: 0, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表