IDL读取文本文件中多维数组的方法
今天给大家介绍下怎么用IDL语言读写多维数组。以下面这个三维数组为例
3585 1368 114 56 52 29 25 14
3586 1368 111 56 51 28 24 14
3587 1368 112 54 51 29 24 14
3588 1368 110 54 49 29 23 12
3589 1368 110 54 49 28 21 14
3590 1368 109 54 49 27 22 13
3591 1368 108 53 47 28 24 14
3592 1368 107 52 47 28 25 14
3585 1369 111 56 52 29 25 14
3586 1369 113 55 51 28 23 12
3587 1369 114 55 50 28 23 14
3588 1369 110 54 49 28 22 13
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
首先我们要考虑如果如果我们知道这个文本文件中的数组大小。即这个数组是三维,8列 6行。
那么直接创建数组然后读进来就可以
;samples,lines,bands分别是列、行、维度
data = MAKE_ARRAY(samples,lines,bands,TYPE=1)
OPENR,lun,filename,/GET_LUN
READF,lun,data
FREE_LUN,lun
PRINT,data
但是大多数情况下,在数据量很大的情况下。我们不可能直接读。那么我们要读这个文本文件里面的列,行,和维度。然后才能读取数据。
那么我们来试一下。代码如下
PRO test_BILL_A
filename = FILE_DIRNAME(ROUTINE_FILEPATH('test_BILL_A'))+$
'\三维数据.txt' ;读取文件
;sample 行数
;bands维数
;lines 行数
;获取sample
OPENR,lun,filename,/get_lun
WHILE ~EOF(lun) DO BEGIN
str = ''
READF,lun,str ;读了一行数据
IF STRTRIM(str) NE '' THEN BEGIN
sample = N_ELEMENTS(STRSPLIT(str)) ;读取列数
BREAK
ENDIF
ENDWHILE
FREE_LUN,lun
;eof用于判断文件指针的位置,如果在开头结尾返回1,如果在开头返回0
;STRSPLIT用于判断字符串之间空格的位置
;breakBack语句提供了一种方便的方法,可以立即从循环(for、foreach、while、Repeat)、case或Switch语句中退出,而无需理会Goto语句。
bands = 1L
lines = 0L
blank = 0
OPENR,lun,filename,/GET_LUN
WHILE ~EOF(lun) DO BEGIN
str = ''
READF,lun,str
IF STRTRIM(str) EQ '' AND blank EQ 1 THEN BEGIN
bands++
blank++
ENDIF ELSE IF STRTRIM(str) NE '' THEN BEGIN
blank = 1
lines++
ENDIF ELSE IF STRTRIM(str) EQ '' AND blank GT 1 THEN BEGIN
blank++
ENDIF
ENDWHILE
FREE_LUN,lun
IF blank GE 2 THEN bands--
PRINT, 'samples: ', sample
PRINT, 'lines: ', lines/bands
PRINT, 'bands: ', bands
;获取数据
data = MAKE_ARRAY(sample,lines/bands,bands,TYPE=1)
OPENR,lun,filename,/GET_LUN
READF,lun,data
FREE_LUN,lun
PRINT,data
END
其实还是非常简单的,大家如果对其中的函数不清楚,就去查查文档。相信你会得到答案的。
IDL读取文本文件中多维数组的方法相关推荐
- javascript读取文本文件到二维数组代码_十行代码说清楚:leetcode 二维数组中的查找...
剑指 Offer 04. 二维数组中的查找 这道题是将一维的二分查找扩展为二维数组中的二分查找. 关键点有 3 处: 起始点的选择 大于 target 时坐标的变化 小于 target 时坐标的变化 ...
- matlab如何读取二维数组,Matlab从csv文件中读取多个二维数组
我有一个csv文件,它包含2列4列数组,但行数不等.例如:Matlab从csv文件中读取多个二维数组 2, 354, 23, 101 3, 1023, 43, 454 1, 5463, 45, 765 ...
- 二维数组更改vue_使用vue中的v-for遍历二维数组的方法
如下所示: {{itemss}} 其中,data数据为: this.data = [ [ { type: '', name: '资产', start: '期末余额', end: '期初余额' }, { ...
- C语言中多维数组的内存分配和释放(malloc与free)(转)
C语言中多维数组的内存分配和释放(malloc与free)(转) 写代码的时候会碰到多维数组的内存分配和释放问题,在分配和释放过程中很容易出现错误.下面贴上一些示例代码,以供参考. 如果要给二维数组( ...
- c语言多维指针,C语言中多维数组和多维数组指针的应用
最近开始好好学习编写CFD程序了,由于计算过程中所涉及的网格节点较多(一维最容易,二维就比较麻烦了,三维的还没有尝试自己动手编程呢),每个节点上都有若干个参数,包括速度,压力,温度,密度等,并且这些参 ...
- python使用如下方法规范化数组_python归一化多维数组的方法
本篇文章给大家分享的内容是python归一化多维数组的方法 ,具有一定的参考价值,有需要的朋友参考一下 今天遇到需要归一化多维数组的问题,但是在网上查阅了很多资料都是归一化数组的一行或者一列,对于怎么 ...
- php怎么用递归函数遍历多维数组,php递归遍历多维数组的方法
php递归遍历多维数组的方法 本文实例讲述了php递归遍历多维数组的方法.分享给大家供大家参考.具体如下: function get_array_elems($arrResult, $where=&q ...
- php 二维数组根据键值合并二维数组_php数组实现根据某个键值将相同键值合并生成新二维数组的方法详解...
这篇文章主要介绍了php数组实现根据某个键值将相同键值合并生成新二维数组的方法,涉及php数组的遍历.赋值相关运算技巧,需要的朋友可以参考下 本文实例讲述了php数组实现根据某个键值将相同键值合并生成 ...
- php 多个一维数组合拼成二维数组的方法
在开发过程中,需要整理数据,其中比较多操作是把各种数据整合到一组数据中.本文提供将多个一维数组合拼成二维数组的方法,提供完成代码及演示. 合拼方法代码如下,因需要使用函数可变参数,因此需要php版本5 ...
最新文章
- C++ Primer 读书笔记 (1)
- 53. Leetcode 112. 路径总和 (二叉树-二叉树路径和)
- boost::container_hash模块实现哈希序列
- ubuntu-chmod与chown命令
- 基于Java+SpringBoot+vue+element实现校园闲置物品交易网站
- Hadoop DataNode : Address already in use
- npm i和npm install命令
- 从入门到入土:[linux实践]-pam|编写基于libpam的用户认证程序|编写基于PAM认证的应用程序|详细说明|实验步骤|实验截图
- Mac安装iproute2/dig/traceroute
- 20161129 计算95除以55,商是多少,余数是多少?(商和余数要求分两行显示)
- 胜为蓝牙适配器驱动_胜为USB蓝牙适配器4.0驱动下载
- 2021-03-08动力学方程
- Kubernetes 调整 nodePort 端口范围
- SPIR-V*:面向 OpenCL™ 工作负载的英特尔® 显卡编译器默认接口
- 移动端获取手机自带的返回键并添加事件。
- 云脉档案管理彻底解决纸质数据问题
- 博客图片html代码,【html博客代码】图片羽化代码
- 如何备份和还原PS4保存数据
- 虚拟网络运维----基于wireshark报文分析快速过滤(tcp,icmp,http)报文时延
- JavaScript中的appendChild()方法