转自:【转】matlab的textscan与textread区别 - 小新新的蜡笔 - 博客园

最近工程中用到matlab处理文件,用到textread,找到作者的总结,进行摘录,侵删。

1,基本语法

textscan的基本语法是:
C = textscan(fid, 'format')
  
C = textscan(fid, 'format', N)

其中fid为fopen命令返回的文件标识符,这也是和textread的最大不同之处,需要注意的一点是,fid类似一个指针,其指向的位置会随着textscan的操作而改变,每读取一次数据,它的位置就会指向你已经读过的那个数据的后面。format实际上就是一个字符串变量,表示读取数据及数据转换的规则。N为按照读取格式format读取的次数。

textread的基本语法是:

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

[A,B,C,…] = textread(filename,format,N)
其中filename就是文件名, format就是要读取的格式,A,B,C就是从文件中读取到的数据。
必须严格遵守用法不可出现data=textread(filename,format,N)的形式

其中括号里面变量的个数必须和format中定义的个数相同。 如果每N行相同格式的数据,可采用[A,B,C,…] = textread(filename,format,N)的语法,读取N次。

2,两者的区别

可以看出这个两个函数最大的区别就是:textread不用先fopen那个文件,适用于格式统一的txt文件的一次性大批量读取。而使用textscan函数之前需要先用fopen函数打开要读取的文件并返回句柄fid。

其次textread读取某个文件后,下次再用textread读取这个文件时,还是会从文件头开始读取。而textscan函数每次读完数据后,其对应的句柄fid都是指向接下来要读数据的地方,类似于C函数中的文件读取指针,这样更方便于读取文本时的精确控制。

再次,textscan函数可以将多组数据读到一个元胞矩阵中,而textread函数只能将数据分别读取到不同的向量中。比如一个含有10行3列浮点数的文件,textscan函数可以将之读取到一个变量名A下 A=textscan(fid, '%f%f%f'), 而使用textread函数必须将之读入到三个变量名中  [A,B,C] = textread(filename,'%f%f%f')。

3,几个方便的语法

假设文件myfile.txt 中的内容如下

Sally Type1 12.34 45 Yes

Joe Type2 23.54 60 No

Bill Type1 34.90 12 No

3.1将其分别使用textread 和textscan读出:

[data1 data2 data3 data4 data5] = textread('myfile.txt','%s%s%f%d%s');使用textread函数分别将数据按照格式读入到data1—data5中。然后可使用赋值语句data=[data1 data2 data3 data4 data5 data6]生成一个二维数组data。

fid = fopen('myfile.txt');

C = textscan(fid, '%s%s%f%d%s');

fclose(fid);使用textscan函数读取文件,输出C为1*5的细胞数组,每个数组中存放每列的数据

3.2如果只读取第一列的数据,可使用如下语句:

[names]=textread('myfile.txt','%s%*[^n]');

%*[^n] 表示从当前直接跳到行尾,而使用%[^n]则表示一直读到行尾,% *是一个跳过符号,表示跳过该位。例如在读取上述文件过程中只读取浮点数的整数位,可使用如下两种语句,将小数点在内的小数部分看作浮点数或者字符串,读取是略过。

[data1 data2 data3 data4 data5] = textread('myfile.txt','%s%s-%*f%d%s');

或者

[data1 data2 data3 data4 data5] = textread('myfile.txt','%s%s-%*s%d%s');

3.3另外如果我想略过若干行之后才开始读取数据的话,可以使用headerlines命令定义略过的行数。如果数据之间不是使用空格作为分隔符的话,可以使用delimiter命令定义各种分隔符。

'headerlines',1,'delimiter',';'

3.4如果我想读取文件中70行70列的文件该怎么办呢? 当然我们可以在函数中format处写上70个%f,但这样太麻烦了。有一种简单的方法就是使用下面的函数。

FormatString=[repmat(' %f',1,70)];
ez = cell2mat(textscan(f1,FormatString,70,'HeaderLines',3));

matlab的textscan与textread区别(转)相关推荐

  1. Matlab中(),[],与{}的用法区别

    在matlab中,常常会遇到(),[],和{},这3种符号,有时候就比较迷糊,这里总结一下,供参考. 一.圆括号( ) 使用方法 1.圆括号常常跟在数组后,里面是数组的下标,来访问数组元素. 例如:A ...

  2. matlab里H是什么,matlab 中 hObject和handles区别

    h:指回调函数被调用对象的句柄:handles:是包含GUI中所有组件句柄的结构体,该结构体的域名由对象的TAG属性定义.也可以用来传递数据给其他的回调函数和主程序. 例如:创建一个包含button的 ...

  3. matlab的imshow, image, imagesc区别

    转载自:https://www.cnblogs.com/liuke-note/p/10149631.html 1.显示RGB图像 相同点:这三个函数都是把m*n*3的矩阵中的数值当做RGB值来显示的. ...

  4. matlab整型和浮点的区别,技术帖 | 心理学MATLAB初学者教程--简单数据类型介绍(逻辑型数据,整型/浮点型数据,字符型)......

    1.2.1 什么是变量和变量名 变量这个词似乎在许多地方都有出现,在计算机中变量是指是一段有名字的连续存储空间(摘自百度百科),而这个所谓的名字就叫做变量名.举个例子说现在我们再MATLAB的命令窗口 ...

  5. matlab rem与mod 的区别

    二者均有取余数的含义,区别在于近似的方式不同,或者更具体地说,是 fix 和 floor 在取整方式上的不同. mod b = mod(a,m) 等价与 b = a - m.*floor(a./m)% ...

  6. matlab中 mcc/mbuild/mex 区别

    mcc 的作用是将 .m文件编译为 c/c++动态链接库文件,使你可以在 c/c++程序中使用 matlab的一些函数功能.mcc 也可以将.m文件编译为exe可执行文件. mex 的作用是将 c/c ...

  7. matlab中(),[],与{}的使用区别

    在matlab中,常常会遇到(),[],和{},这个3种符号怎么区分,怎么用,这里我来总结一下,供参考. [] 首先.[]叫中括号,它用来存储矩阵和向量(vector在C++中也叫容器)  举个例子, ...

  8. MATLAB中newff新旧区别

    今天为了创建一个BP网络,于是使用newff函数,因为目前现在的matlab支持新的newff函数,如果继续使用旧的newff函数会导致warning,而且新的newff函数有很多方便之处. 首先,函 ...

  9. matlab svd 和 eig 的区别

    转自: https://my.oschina.net/duluo180/blog/736587 总得来说,SVD eig 得到的特征值/奇异值是一样的,eig排列是降序,svd排列是升序: SVD的右 ...

  10. matlab conv2 和filter2的区别

    MATLAB中提供了卷积运算的函数命令conv2,其语法格式为: C = conv2(A,B) C = conv2(A,B)返回矩阵A和B的二维卷积C.若A为ma×na的矩阵,B为mb×nb的矩阵,则 ...

最新文章

  1. java css是什么_Java 之 CSS
  2. 学习对象对神经网络迭代次数的影响
  3. 倒数秒跳转页面实现代码。
  4. IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token
  5. Android WebView 开发详解(三)
  6. windows中安装zookeeper
  7. JSP中 input type 用法
  8. 自己常用的LINUX命令(20100605更新)
  9. har文件解析工具_嵌入式MCU也能跑AI?STM32 Cube.AI工具包使用初探
  10. div透明但不导致内容div透明的解决方法
  11. 淘宝开放平台接口接口,订单R2权限接口淘宝开放平台R2权限,淘宝开放平台进存销应用,top平台接口,淘宝应用市场接口,ERP软件订单接口,淘上淘接口,
  12. JS封装数组API push,pop,shift,unshift,sort, reverse
  13. 云服务器cms与云虚拟主机区别,虚拟主机和云服务器哪个好?分别有什么优势
  14. distinct去重用法(简单明了)
  15. 1型错误和2型错误_明光1型分开式轨道扣件系统工厂
  16. matlab视网膜血管分割,视网膜血管增强与分割算法研究
  17. 从零开始编写一个js插件
  18. python七段数码管绘制英文字母_Python入门基础:七段数码管绘制
  19. Livestream Broadcaster:整合在线服务的高清视频编码器
  20. 【android】音乐播放器之UI设计的点点滴滴

热门文章

  1. 找出不大于n的最大质数
  2. js实现word生成书签_javascript下用ActiveXObject控件替换word书签,将内容导出到word后打印...
  3. SpringBoot - Unable to start ServletWebServerApplicationContext due to missing ServletWeb
  4. [STM32]Cubemx+USBAudio声卡+I2S+DMA+WM8978实验记录(未解决)
  5. 身份证省市区SQL代码
  6. OMNETPP: tictoc
  7. 事物级别,不可重复读和幻读的区别
  8. uniapp+微信小程序云函数获取微信openId
  9. python 断言方法
  10. 经纬度坐标转换成px_(转)经纬度坐标转换为屏幕坐标