爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 11713|回复: 11

[求助] 关于依次读取ascii文件的问题

[复制链接]

新浪微博达人勋

发表于 2011-7-12 18:56:53 | 显示全部楼层 |阅读模式

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

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

x
file = FILEPATH('222.txt', $
    SUBDIRECTORY = ['file', 'work'])
dataStructure = READ_ASCII(file)
dataArray = TRANSPOSE(dataStructure.field1)
x = dataArray[*, 0]
y = dataArray[*, 1]
data = dataArray[*, 2]
scaled = BYTSCL(data, TOP = !D.TABLE_SIZE - 4) + 1B
DEVICE, DECOMPOSED = 0
LOADCT, 38
GRID_INPUT, x, y, data, xSorted, ySorted, dataSorted
gridSize = [60, 60]
slope = (MAX(xSorted) - MIN(xSorted))/(gridSize[0] - 1)
intercept = MIN(xSorted)
xGrid = (slope*FINDGEN(gridSize[0])) + intercept

slope = (MAX(ySorted) - MIN(ySorted))/(gridSize[1] - 1)
intercept = MIN(ySorted)
yGrid = (slope*FINDGEN(gridSize[1])) + intercept
grid = GRIDDATA(xSorted, ySorted, dataSorted, $
DIMENSION = gridSize, METHOD = 'RadialBasisFunction')
WINDOW, 2
scaled = BYTSCL(grid, TOP = !D.TABLE_SIZE - 4) + 1B
CONTOUR, scaled, xGrid, YGrid, /XSTYLE, /YSTYLE, /FILL, $
    LEVELS = BYTSCL(INDGEN(18), TOP = !D.TABLE_SIZE - 4) + 1B, $
    C_COLORS = BYTSCL(INDGEN(18), TOP = !D.TABLE_SIZE - 4) + 1B, $
   TITLE = 'the result', $
    XTITLE = 'x', YTITLE = 'y'
根据这个代码可以读取一个文件,但我需要能够依次读取多个文件。。。就是在命令行输入文件名就能把它读出来的,该怎么改呢?






密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2011-7-13 08:13:12 | 显示全部楼层
MatLab?偶不会...要学的东西真多啊
要是fortran的话我倒能说出点思路来...
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-8-19 13:38:37 | 显示全部楼层

想请教你个问题,我现在有asc文件,想用fortran读取出第六列的最大值,请问具体怎么实现呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2011-8-19 22:47:31 | 显示全部楼层
time 发表于 2011-8-19 13:38
想请教你个问题,我现在有asc文件,想用fortran读取出第六列的最大值,请问具体怎么实现呢?

先把第六列读出来 如果格式的宽度规定的很死的话可以用直接读取的方式,不过如果文件不是很多 很大 可以用顺序读取,把前六行都读出来,然后对第六行数据进行一下排序,具体如果排序有很多了 像冒泡排序等都可以,如果不清楚冒泡排序可以找本fortran教材 一般都会有讲
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-8-23 18:52:06 | 显示全部楼层
mofangbao 发表于 2011-8-19 22:47
先把第六列读出来 如果格式的宽度规定的很死的话可以用直接读取的方式,不过如果文件不是很多 很大 可以用 ...

文件数据有点多,100多行,40列,昨天没考虑清楚,我是想取出第一列和第二列,程序具体怎么写呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-8-23 21:44:26 | 显示全部楼层
time 发表于 2011-8-23 18:52
文件数据有点多,100多行,40列,昨天没考虑清楚,我是想取出第一列和第二列,程序具体怎么写呢?


读成数组  然后看你怎么用方便了  
假设有100行 定义数组名dat
do i=1,100
col1(i)=dat(i,1)
col2(i)=dat(i,2)
enddo
这样我感觉应该就可以了 我也学得很肤浅  望大家指教啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2011-8-23 22:07:43 | 显示全部楼层
time 发表于 2011-8-23 18:52
文件数据有点多,100多行,40列,昨天没考虑清楚,我是想取出第一列和第二列,程序具体怎么写呢?

这个是最基本的文件读写啦 先读取到一个二维数组,然后要哪一列就取哪一列了啊,就像topmad写的那样
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-8-23 22:43:10 | 显示全部楼层
mofangbao 发表于 2011-8-23 22:07
这个是最基本的文件读写啦 先读取到一个二维数组,然后要哪一列就取哪一列了啊,就像topmad写的那样

嗯嗯~~我就是不知道二维数组该怎么写进去,比如说,我现在的文件有147行,40列,文件名为project.asc。我应该先将asc文件里面的数写到二维数组里面去才能取出第一列和第六列,我试着写过,就是先open,再read,然后再write,对吗?不过编译的时候出错了。能帮我把这个例子写一下吗?拜托了~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2011-8-23 22:54:24 | 显示全部楼层
time 发表于 2011-8-23 22:43
嗯嗯~~我就是不知道二维数组该怎么写进去,比如说,我现在的文件有147行,40列,文件名为project.asc。我 ...

既然要用到就学吧,不要一下子做太难的,把教材上的文件读写例子多试试,理解之后再做其它的就容易多了,不掌握方法即使这次会了下次还是不会,你要的例子就是最基本的读写语句,实在没有好写的,你看看fortran版块的程序,基本都会涉及到文件读写
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2011-8-23 23:07:45 | 显示全部楼层
mofangbao 发表于 2011-8-23 22:54
既然要用到就学吧,不要一下子做太难的,把教材上的文件读写例子多试试,理解之后再做其它的就容易多了, ...

我就想对比一下我哪里错了……那就算了吧
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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