matlab能否读取读取文件中的某一段数据?
大家好,最近想利用matlab提取文本文件中的某一段数据,并把它这些数据放在数组中,请问有什么好的读取方法?以前读取某二进制文件的时候,是利用fread函数读取整个二进制文件,然后再把某段需要的数据放在数组中。但是对于较大的模型,读起来效率就会低。
所以想这次读取文本文件的时候知道那一段数据,然后直接读取,请问这样是否可以?
附件是文本文件,可以利用记事本打开。我想读取文件中的这段数据:
*ELSET, ELSET=weld_2_e
489, 488, 499, 500, 496, 466, 464, 474,
475, 471, 596, 598, 600, 583, 585, 571,
575, 574, 557, 558
*NSET, NSET=weld_2_n, UNSORTED
533, 612, 610, 615, 614, 585, 596, 594,
599, 598, 564, 697, 698, 686, 690, 666,
681, 682, 670, 674, 555
*ELSET, ELSET=weld_1_e
392, 393, 394, 380, 381, 447, 449, 444,
438, 440, 194, 200, 199, 180, 181, 242,
243, 244, 230, 231
*NSET, NSET=weld_1_n, UNSORTED
133, 458, 459, 451, 454, 428, 501, 499,
495, 497, 152, 287, 288, 280, 283, 257,
323, 324, 316, 319, 91
并把他们放入不同的数组,请问如何实现?
请参考本版正则系列
http://forum.simwe.com/thread-1081597-1-1.html
本帖最后由 nibam11 于 2013-12-2 15:38 编辑
liuyalong008 发表于 2013-12-1 11:55
请参考本版正则系列
http://forum.simwe.com/thread-1081597-1-1.html
谢谢版主的解答。
看了版主给的索引,我的理解是可以用那种方法找到某些特定的字符。
那么,找到这些特定的字符之后,能否用某种命令定位到那,然后再从那个位置读起,把后边的数据写入数组? nibam11 发表于 2013-12-2 15:36
谢谢版主的解答。
看了版主给的索引,我的理解是可以用那种方法找到某些特定的字符。
那么,找到这些特定 ...
x=regexp(string,exp)返回的就是位置 liuyalong008 发表于 2013-12-3 08:32
x=regexp(string,exp)返回的就是位置
感谢版主的耐心解答,我看了下regexp返回的结果是1,这是我的程序,但是没有从NSET开始读取啊
fid=fopen('hanfeng.inp','r')
str='NSET, NSET=weld_1_n, UNSORTED'
a1=regexp(str,'NSET, NSET')
fseek(fid,1,'cof')
fgetl(fid)
fgetl(fid)
fgetl(fid)
fgetl(fid)
fgetl(fid)
fgetl(fid)
还请版主不吝赐教,谢谢! nibam11 发表于 2013-12-3 11:07
感谢版主的耐心解答,我看了下regexp返回的结果是1,这是我的程序,但是没有从NSET开始读取啊
fid=fopen( ...
你的意思是不是: str='NSET, NSET=weld_1_n, UNSORTED'
a1=regexp(str,'(?<=NSET, NSET).*?') liuyalong008 发表于 2013-12-3 13:13
你的意思是不是:
我运行版主给的代码,返回的值是11,附上运行结果截图和我所使用的程序段
fid=fopen('hanfeng.inp','r')
str='NSET, NSET=weld_1_n, UNSORTED'
a1=regexp(str,'(?<=NSET, NSET).*?')
fseek(fid,11,'cof')
fgetl(fid)
fgetl(fid)
我想从NSET开始读取,读取后边的数据,并把他们放入不同的数组之中
这是我想读取的数据:
*NSET, NSET=weld_1_n, UNSORTED
133, 458, 459, 451, 454, 428, 501, 499,
495, 497, 152, 287, 288, 280, 283, 257,
323, 324, 316, 319, 91
我对matlab是边学边用的,还有很多不懂的,给版主添麻烦了。 这是运行结果的截图 nibam11 发表于 2013-12-3 14:42
这是运行结果的截图
str = fileread('C:\Users\Administrator\Desktop\New Text Document.txt')
a1=regexp(str,'(?<=NSET, NSET.*?)\d{2,}','match') liuyalong008 发表于 2013-12-4 08:30
谢谢版主耐心回答,这次的结果比我想要的多了后边的一部分。虽然我看不明白,不过还是要谢谢你。
页:
[1]