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));

第一句话表示定义一个含有70个%f的字符串,第二句话的意思是 将此字符串作为读取格式,按照这个格式读取70次,并忽略文件中的前三行。 由于textscan只是把数据读到了一个元胞数组中了,需要使用cell2mat函数将这里面的所有 cell组合成一个数组。

暂时以上叙述到的东西应该够我今后进行数据处理了。如果想阅读更为详细的说明的话,除了matlab的帮助文档外,以下几篇日志也非常不错:

textscan
http://blog.sina.com.cn/s/blog_9e67285801010buf.html
http://www.douban.com/note/6181453

textread
http://itlab.idcquan.com/linux/administer/872894.html
http://blog.sina.com.cn/s/blog_9e67285801010bju.html

【转】matlab的textscan与textread区别的更多相关文章

  1. Matlab中double,im2double,mat2gray区别

    转载:http://blog.sina.com.cn/s/blog_6c41e2f30101559d.html ****************假设某图像数据A(uint8格式)*********** ...

  2. MATLAB axis和axes的区别

    axis中文为“轴”之意,在matlab中用于控制坐标轴的范围和样式(颜色等). axis([XMIN XMAX YMIN YMAX]) 设置当前所绘图像的x轴和y轴的范围.axis([XMIN XM ...

  3. [转] matlab saveas 和imwrite的区别

    http://hi.baidu.com/curbzz/item/04a69e805fc334e3e596e035 saveas(handle,['目录','文件名']) 如果只有一幅图,handle设 ...

  4. matlab中 mcc/mbuild/mex 区别

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

  5. Matlab中一些函数的区别

    1.fix, floor,ceil,round   都是对x取整,但取整方向不同.   fix(x):向0取整(也可以理解为向中间取整)   floor(x):向左取整(从名字看,地板,表示下面) c ...

  6. Matlab中的数据类型

    Matlab中有15种基本数据类型,主要是整型.浮点.逻辑.字符.日期和时间.结构数组.单元格数组以及函数句柄等.         1.整型:(int8:uint8:int16:uint16:int3 ...

  7. MATLAB随机森林回归模型

    MATLAB随机森林回归模型: 调用matlab自带的TreeBagger.m T=textread('E:\datasets-orreview\discretized-regression\10bi ...

  8. matlab vs python

    (参考)从下图可以清晰看到matlab和python之间的区别 Python是一种编程语言,但与其他变成语言的不同在于:python具有许多的扩展库(通过import引入) Matlab是集合计算环境 ...

  9. 计算机辅助数据绘图(matlab\python\js)

    1. matlab绘图 官方说明:https://ww2.mathworks.cn/help/matlab/creating_plots/types-of-matlab-plots.html 基本图形 ...

随机推荐

  1. Net Core2.0 升级到.Net Core 2.1

    1. 安装新 .Net Core SDK 2.1 2. 升级VS.net 到15.7, 这个版本极其不好用,IIS打中文会自动退出,但现在也没办法降级了.只能等微软打补丁. 3. 对于面向 ASP.N ...

  2. 开发环境转Mac FAQ

    vs2017 for mac, 默认的源代码管理工具是git, 不是svn, 安装source tree,注册bitbucket(免费1G私有空间),整合的比较好(国内的码云也能支持,不过是用账号密码 ...

  3. possible error

    1● regedit 2● path [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Windows Error Reporting]       3● 步 ...

  4. window.open打开新窗口 参数

    1,基本描述 oNewWindow = window.open( sURL , sName , sFeatures, bReplace) window.open在打开一个窗口(其url为sURL)后, ...

  5. mac 安装Seaslog扩展及SeasLogger应用

    首先下载 http://pecl.php.net/package/SeasLog 下载最新解压 cd /SeasLog-2.0.2/SeasLog-2.0.2/ phpize ./configure ...

  6. 【Loadrunner_WebService接口】对项目中的GetProduct接口生成性能脚本

    一.环境 https://xxx.xxx.svc?wsdl 用户名:username 密码:password 对其中的GetProduct接口进行测试 备注:GetProducts.xml文件内容和S ...

  7. Oracle.练习题

    2018-07-31 ---练习3 ---创建sporter表 create table sporter( sporterid ) constraint sport_id primary key, s ...

  8. laravel中的登录页面逻辑

    <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades ...

  9. [Codeforces513E2]Subarray Cuts

    Problem 给定一个长度为n的数字串,从中选取k个不重叠的子串(可以少选),将每个串求和si 求max|s1 - s2| + |s2 - s3| + ... + |sk - 1 - sk|(n & ...

  10. 每天CSS学习之box-shadow

    box-shadow是CSS3的属性,目的是给盒子添加一个或多个阴影.怎么感觉有点像光明使者使用该法术照亮敌人的阴暗面? box-shadow一共有六个属性,请看: box-shadow: h-sha ...