博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
matlab txt文档读取
阅读量:6253 次
发布时间:2019-06-22

本文共 2409 字,大约阅读时间需要 8 分钟。

下面这个函数是取filein中的第line行写入fileout中的程序,如果想实现取特定几行,只要稍微修改一下就可以。 

function dataout=dataread(filein,fileout,line) 

  fidin=fopen(filein,'r'); 

  fidout=fopen(fileout,'w');

  nline=0; 

  while ~feof(fidin) % 判断是否为文件末尾 

    tline=fgetl(fidin); % 从文件读行 

    nline=nline+1; if nline==line 

    fprintf(fidout,'%s\n',tline); 

    dataout=tline; 

  end 

end 

fclose(fidin); 

fclose(fidout); 

%%%%%%%%%%%%%%%%%%%%%%%%%% 
调用格式:dataout=dataread(filein,fileout,line) 如果你的txt文件数据是矩阵形式的,而没有其它的文字,用下面的程序就可以读任意行任意列的数据 a=textread('ll.txt'); t=a(1:43,4:10); 
1:43是1到43行,4:10是4到10列的数据,当然也可以只读一个数据,如果你的matlab没有textread函数,直接从mathworks网站下载就行

 

 

一、纯数据文件(没有字母和中文,纯数字)

对于这种txt文档,从matalb中读取就简单多了

例如test.txt文件,内容为“17.901 -1.1111 33.045

                                          17.891 -1.1286 33.045
                                          17.884 -1.1345 33.045”

可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。

二、中英文和数据如test1.txt

“你好
欢迎来到
振动论坛
vib.hit.edu.cn
1 11 111 1111
2 22 222 2222
3 33 333 3333
4 44 444 4444
5 55 555 5555”
这样的文件怎么读入数据呢?
方法有多种,现举两个比较简单实用的。

方法一:
file/import data....../next/finish 
>> whos
Name           Size                   Bytes Class

data           5x4                      160 double array

textdata       4x1                      300 cell array

Grand total is 54 elements using 460 bytes

>> data

data =

           1          11         111        1111

           2          22         222        2222
           3          33         333        3333
           4          44         444        4444
           5          55         555        5555

>> textdata

textdata =

    '你好'

    '欢迎来到'
    '振动论坛'
    'vib.hit.edu.cn'

方法二:
[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)
说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。
这里%s的个数和[a1,a2,a3,a4]对应。
>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)

a1 =

    '1'

    '2'
    '3'
    '4'
    '5'

a2 =

    '11'

    '22'
    '33'
    '44'
    '55'

a3 =

    '111'

    '222'
    '333'
    '444'
    '555'

a4 =

    '1111'

    '2222'
    '3333'
    '4444'
    '5555'
因以字符串的形式读入,所以有''。
————————————————————————————————

三、中文 数据 英文 混乱如test.txt

你好

1 11 111 1111
欢迎来到
2 22 222 2222
振动论坛
3 33 333 3333
vib.hit.edu.cn
4 44 444 4444
5 55 555 5555

说明:这种内容格式的文件用上面的方法是不行的。

以下是由chinamaker编写的一种方法:

fidin=fopen('test.txt');                               % 打开test2.txt文件             
fidout=fopen('mkmatlab.txt','w');                       % 创建MKMATLAB.txt文件
while ~feof(fidin)                                      % 判断是否为文件末尾               
    tline=fgetl(fidin);                                 % 从文件读行   
    if double(tline(1))>=48&&double(tline(1))<=57       % 判断首字符是否是数值
       fprintf(fidout,'%s\n\n',tline);                  % 如果是数字行,把此行数据写入文件MKMATLAB.txt
       continue                                         % 如果是非数字继续下一次循环
    end
end
fclose(fidout);
MK=importdata('MKMATLAB.txt');      % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来 
>> MK

MK =

           1          11         111        1111

           2          22         222        2222
           3          33         333        3333
           4          44         444        4444
           5          55         555        5555

 

from:

转载于:https://www.cnblogs.com/YananZ/p/3795078.html

你可能感兴趣的文章
气象预警采集及推送
查看>>
【SSH网上商城项目实战29】使用JsChart技术在后台显示商品销售报表
查看>>
python 基础复习 09 之基础函数
查看>>
Extjs 4
查看>>
教你使用Android SDK布局优化工具layoutopt
查看>>
Java内存模型(JMM)以及 垃圾回收机制 小结
查看>>
开源3D游戏引擎Irrlicht简介
查看>>
如何花更少的时间学习更多的知识
查看>>
学习鸟哥的Linux私房菜笔记(8)——文件查找与文件管理2
查看>>
day04 列表 增删改查 元组 range
查看>>
php 调用百度sms来发送短信的实现示例
查看>>
android 小结
查看>>
ThinkPHP5分页样式设置
查看>>
基于canvas的原生JS时钟效果
查看>>
PL/SQL查看表结构
查看>>
I2C通信时序图解析
查看>>
JSON的学习理解
查看>>
Jenkins+MSbuild+SVN实现dotnet持续集成 快速搭建持续集成环境
查看>>
经典SQL语句大全
查看>>
Android Service
查看>>