zoukankan      html  css  js  c++  java
  • 函数textread

      函数textread可以按列读取ascii 文件中的元素,每一列中可能含有不同的数据类型。这函数读取其他程序生成的数据表时非常地有用。

    实际应用中也要经常要读取txt文件,这个时候就需要用到强大的textread函数。

    这个命令的形式如下:

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

    [a, b, c, ...] = textread(filename, format, n)

      其中filename 代表要打开的文件的名字,format 是用于每一行数据类型的字符串,n 代表要读取的行数(如果没有n,则这个命令将读完这个文件)。格式化字符串与函数fprintf 格式化描述的字符串相同。注意输出参数的个数必须与你读取的列数相区配。

    举例如下:
    例子1:myfile.txt 中的内容如下:
    1 2 3 4
    5 6 7 8
    9 10 11 12
    相应的语句为:
    filename = '.myfile.txt';
    [data1,data2,data3,data4]=textread(filename,'%n%n%n%n');
    或者为
    filename = '.myfile.txt';
    [data1,data2,data3,data4]=textread(filename,'%n%n%n%n',3);



    例子2:myfile.txt 中的内容如下:
    1, 2, 3, 4
    5, 6, 7, 8
    9, 10, 11, 12
    相应的语句为:
    filename = '.myfile.txt';
    [data1,data2,data3,data4]=textread(filename,'%n%n%n%n','delimiter', ',');
    这里delimiter指出分隔符,读数据的时候会自动跳过分隔符。



    例子3:myfile.txt 中的内容如下:
    % this a comment
    1, 2, 3, 4
    5, 6, 7, 8
    9, 10, 11, 12
    相应的语句为:
    filename = '.myfile.txt';
    [data1,data2,data3,data4]=textread(filename,'%n%n%n%n','delimiter', ',','headerlines', 1);
    这里告诉textread跳过一开始的1行,1可以替换为任意你要跳过的行数。


    例子4:myfile.txt 中的内容如下:

    Sally Level1 12.34 45 Yes

    相应语句为:

    filename = '.myfile.txt';

    [names, types, x, y, answer] = textread(filename , '%s %s %f %d %s', 1) 

    4.1如果要忽略12.34这个浮点数。[names, types, y, answer] = textread(filename , '%s %s %*f %d %s', 1) 

    %*f 告诉textread跳过一个浮点数。
     

    4.2 如果要忽略Level,指读取后面的数字,

    [names, levelnum, x, y, answer] = textread(filename , ... '%s Level%d %f %d %s', 1)例子5:myfile.txt 中的内容如下

    1,2,3,4,,6 7,8,9,,11,12想用nan替代为空的部分。语句如下:data = textread('myfile.txt', 'delimiter', ',', 'emptyvalue', NaN); 

     例子6: myfile.txt 中的内容如下   

    Sally    Type1 12.34 45 Yes 

    Joe      Type2 23.54 60 No 

    Bill     Type1 34.90 12 No 

    如果只想读第一列,其余的跳过 

    filename = '.myfile.txt'; 

    [names]=textread(filename,'%s%*[^ ]') 

    %[^...] - reads characters not matching characters between the brackets until first matching character   

    %[^ ] 就是一直读到行尾。%*[^ ] 就是从当前直接跳到行尾。  

    可对比[names,rest]=textread(filename,'%s%[^ ]')

      函数textread 要比load 命令简单有效的多。load 命令假设输入文件中的所有数据都是同一类型——它不支持在不同的列上有不同的数据。此外,它把所有的数据都存储在一个数据中。相反地,函数textread 允许每一列都有独立的变量,当和由不同类型的数据组成的列运算时,它更加的方便。函数textread 中有许许多多参数,它们增加了函数的灵活性。
      

    注意:
        textread不用先fopen那个文件,适用于格式统一的txt文件的一次性大批量读取。textread读取某个文件后,下次再用textread读取这个文件时,还是会从文件头开始读取。

     

  • 相关阅读:
    poi 导出Excel
    【EasyUI】combotree和combobox模糊查询
    多线程和Socket套接字
    io流
    前端页面的语法 jquery javascript ajax
    spring+mybatis
    Exchanger 原理
    CountDownLatch、CyclicBarrier和 Semaphore
    sleep() 、join()、yield()有什么区别
    创建线程的方式及实现
  • 原文地址:https://www.cnblogs.com/lihuidashen/p/3431478.html
Copyright © 2011-2022 走看看