MATLAB如何读取大文本文件分析

–读大文本关键函数–:textread, textscan


1 textread函数

语法:

[A, B, C, …] = textread(filename, format)
[A, B, C, …] = textread(filename, format, N)
[…] = textread(…, param, value, …)

说明(新版本已经提示弃用)见后续代码, 或者在命令行窗口使用 doc textread 打开查看

示例1
% img.txt 16进制的图像数据,大小30M ~ 200M
file = '../img.txt';
% 以字符串读出数据
data = textread( file, '%s' )';
% 计算字符个数
len = numel(dataIn);
k = 1;
% 使用hex2dec将16进制转换成10进制
data = hex2dec( data );% 还原16进制数(数据为高低位8位需要变成16位原始数据)
for i = 1 : 2 : len - 1data(k) = dataIn( i ) + dataIn(i + 1) * 2^8;k = k + 1;
end

封装成函数

function data = readData( fileName )
% FILE size is less than 200Mfilename = fopen( fileName )dataIn = textread( filename, '%s' )';len = numel(dataIn);k = 1;dataIn = hex2dec( dataIn );for i = 1 : 2 : len - 1data(k) = dataIn( i ) + dataIn(i + 1) * 2^8;k = k + 1;endfclose(filename);
end

小结:实际测试中最大读取过300M的文本文件,

2 textscan函数

语法:

C = textscan(fileID, formatSpec)
C = textscan(fileID, formatSpec, N)
C = textscan(chr, formatSpec)
C = textscan(chr, formatSpec, N)
C = textscan(…, Name, Value)
[ C, position ] = textscan( … )

说明:

C = textscan(fileID, formatSpec) 将已打开的文本文件中的数据读取到元胞数组 C。该文本文件由文件标识符 fileID 指示。使用 fopen 可打开文件并获取 fileID 值。完成文件读取后,请调用 fclose( fileID ) 来关闭文件。

textscan 尝试将文件中的数据与 formatSpec 中的转换设定符匹配。textscan 函数在整个文件中按 formatSpec 重复扫描数据,直至 formatSpec 找不到匹配的数据时才停止。

示例
C = textscan(fileID, formatSpec, N) 按 formatSpec 读取文件数据 N 次,其中 N 是一个正整数。要在 N 个周期后从文件读取其他数据,请使用原 fileID 再次调用 textscan 进行扫描。如果通过调用具有相同文件标识符 ( fileID ) 的 textscan 恢复文件的文本扫描,则 textscan 将在上次终止读取的点处自动恢复读取。

示例
C = textscan(chr, formatSpec) 将字符向量 chr 中的文本读取到元胞数组 C 中。从字符向量读取文本时,对 textscan 的每一次重复调用都会从开头位置重新开始扫描。要从上次位置重新开始扫描,需要指定 position 输出参数。

textscan 尝试将字符向量 chr 中的数据与 formatSpec 中指定的格式匹配。

C = textscan(chr, formatSpec, N) 按 formatSpec N 次,其中 N 是一个正整数。

示例
C = textscan(…, Name, Value) 使用一个或多个 Name, Value 对组参数以及上述语法中的任何输入参数来指定选项。

示例
[ C, position ] = textscan( ) 在扫描结束时返回文件或字符向量中的位置作为第二个输出参数。对于文件,该值等同于调用 textscan 后再运行 ftell( fileID ) 所返回的值。对于字符向量,position 指示 textscan 读取了多少个字符。

示例2

% 依然考虑读取大量的16进制文本
% 这里只读取一帧的图片数据进来
% C = textscan(fileID, formatSpec, N)
filename = fopen( 'object.txt' );
format = '%s';
M = 512;
N = 640;
N1 = 1280;
img = zeros(M, N1);
% Test one frame
% N1 为一行有N1列,M为一列有M行
file = textscan(filename, repmat(format, [1 N1]), M);
for i = 1 : N1temp = cell2mat(file{i});temp = hex2dec(temp);img(:,i) = temp;
endk = 1;
Img = zeros(1, M*N);
for i = 1 : Mfor j = 1 : 2: N1Img(k) = img(i, j) + img(i, j+1) * 2^8;k = k + 1;end
endImg = reshape( Img, [N M] )';figure, imshow(Img, [ ]);

如何用MATLAB读取大文本文件相关推荐

  1. matlab批量导入excel表格数据,matlab导入excel表格数据-如何用matlab读取多个excel表格数据,将每个表格数......

    如何用matlab读取多个excel表格数据,将每个表格数... 一xlsread()函数,比import简单的多,具体语句:A = xlsread('yourfilename.xls')望高手支招! ...

  2. python 读取文本文件_如何在Python中读取大文本文件

    python 读取文本文件 Python File object provides various ways to read a text file. The popular way is to us ...

  3. matlab批量合并表格数据,用matlab合并excel表格数据-如何用matlab读取多个excel表格数据,将每个表格数......

    用matlab如何识别excel里的单元格是否为合并单元格 方法如下: 使用函数xlsread读取单个文件. num=xlsread(filename) filename是单引号括起来的带路径的文件名 ...

  4. Python最快的方式来读取大文本文件(几GB)

    我有一个大文本文件(约7 GB).我正在寻找是否存在阅读大文本文件的最快方法.我一直在阅读有关使用多种方法作为读取chunk-by-chunk以加快进程的过程. 例如,effbot建议 # File: ...

  5. matlab引用csv文件,如何用MATLAB读取csv文件

    如何使用Matlab读取csv文件 在Matlab中,有专门读取csv文件的函数:csvread().在Matlab的帮助文档中,有对这个函数的详细解释. csvread()函数有三种使用方法: 1. ...

  6. 如何用matlab读取hdf文件,matlab读取hdf文件

    HDF, BMP, JPEG, GIF, PCX, XWD, CUR, ICO, RAS, PBM, PGM, PPM AU, SND - NeXT/Sun sound 音訊 WAV - Micros ...

  7. 如何使用Java逐行读取大文本文件?

    我需要使用Java逐行读取大约5-6 GB的大型文本文件. 我如何快速做到这一点? #1楼 这是一个示例,该示例具有完整的错误处理并支持Java 7之前的字符集规范.使用Java 7,您可以使用try ...

  8. 如何用matlab读取npz文件,Python Numpy中数据的常用的保存与读取方法

    在经常性读取大量的数值文件时(比如深度学习训练数据),可以考虑现将数据存储为Numpy格式,然后直接使用Numpy去读取,速度相比为转化前快很多. 下面就常用的保存数据到二进制文件和保存数据到文本文件 ...

  9. JAVA来读取大文本文件

    2019独角兽企业重金招聘Python工程师标准>>> 最近工作中用到文本分析,有的文本足足有好几个G,一次性加载的内存中肯定不合适,所以在读取文件时使用缓冲区来分批读取文件 imp ...

  10. python读取大文件-python如何读取大文件以及分析时的性能优化小技巧

    在二代.三代测序背景下,分析人员难免会遇到解析超过1G.或者10G以上的文件.这里将给大家简单介绍下如何用python读取大文件,并给大家提两个优化代码的小建议. 首先,python 读取GB级大文件 ...

最新文章

  1. java的lr词法编译器_Sample语言编译器(词法分析、正规式、LL、LR、 算符优先)...
  2. python 线程类 threading.Thread.run() 方法
  3. 【深度学习】用于小目标检测的一个简单高效的网络
  4. centos 上传jar 命令_centos上快速将一个jar使用docker部署启动
  5. 【牛客 - 21302】被3整除的子序列(线性dp)
  6. ecshop程序设置伪静态简单三步骤
  7. 学python就业到底如何_学习python后,就业如何?
  8. 基础测试题(字符串、列表、元组、字典)
  9. 使用NodeJS调用Dubbo工程
  10. 【Cocos2d-html5】运动中速度效果
  11. ArcMap表格操作
  12. Android辅助服务禁用组件,每次调试运行时都禁用辅助功能服务
  13. 百度离线地图API v3.0开发解决方案
  14. Hyper-V固定虚拟机IP
  15. 搜狐全体员工遭遇工资补助诈骗,冲上微博热搜第一
  16. MAC系统查看端口,并关闭端口占用
  17. python中ipaddress库用法详解
  18. slider wpf 垂直_继续聊WPF——Slider控件
  19. 电脑白屏或黑屏解决方法
  20. 管理中的笑话,笑话中的管理(犹太人的智慧)

热门文章

  1. UI设计入门学习方法和学习路线
  2. Android 图片处理以及recycle机制
  3. flash activex java_Adobe flash player ActiveX和NPAPI和PPAPI 这三个软件有什么区别?哪个是不必要的?...
  4. Ring Buffer介绍
  5. SVN提交时出现remains in conflict错误
  6. 微型计算机软硬件论文,关于微型计算机软硬件论文3000字_微型计算机软硬件毕业论文范文模板...
  7. java SE教程04
  8. Epicor ERP
  9. 迈克菲实验室:2018五大网络安全威胁
  10. Mirai僵尸网络介绍以及源码