matlab读取txt文件程序,Matlab读取TXT文本文件通用程序

这篇博客展示了如何使用MATLAB处理包含大量浮点数和特殊符号(如'#INF00')的数据文件。通过读取文本文件、过滤非数字行,并将数字行写入临时文件,然后使用`textread`函数读取并存储到矩阵中,实现了数据的读取和转换。代码旨在高效地处理百万级别的数据记录。
摘要由CSDN通过智能技术生成

我的数据类型是这样的:

0.000000 0.000000 0.000000 144 144 144 [1 0] d-1

0.000000 0.000000 0.000000 145 145 145 [2 0] d-1

0.000000 0.000000 0.000000 73 73 73 [3 0] d-1

0.000000 0.000000 0.000000 90 90 90 [4 0] d-1

0.000000 0.000000 0.000000 140 140 140 [5 0] d-1

0.000000 0.000000 0.000000 31 31 31 [6 0] d-1

0.000000 0.000000 0.000000 152 152 152 [7 0] d-1

0.000000 0.000000 0.000000 141 141 141 [8 0] d-1

0.000000 0.000000 0.000000 142 142 142 [9 0] d-1

0.000000 0.000000 0.000000 97 97 97 [10 0] d-1

0.000000 0.000000 0.000000 14 14 14 [11 0] d-1

0.000000 0.000000 0.000000 45 45 45 [12 0] d-1

0.000000 0.000000 0.000000 193 193 193 [513 330] d-1

-2.042475 -4.825477 32.254028 196 196 196 [514 330] d66

-2.047885 -4.900263 32.753906 199 199 199 [515 330] d65

-2.052787 -4.975761 33.258545 200 200 200 [516 330] d64

0.000000 0.000000 0.000000 39 39 39 [1249 545] d-1

0.000000 0.000000 0.000000 59 59 59 [1250 545] d-1

0.000000 0.000000 0.000000 52 52 52 [1251 545] d-1

1.#INF00 1.#INF00 1.#INF00 50 50 50 [1252 545] d0

1.#INF00 1.#INF00 1.#INF00 59 59 59 [1253 545] d0

1.#INF00 1.#INF00 1.#INF00 64 64 64 [1254 545] d0

1.#INF00 1.#INF00 1.#INF00 65 65 65 [1255 545] d0

1.#INF00 1.#INF00 1.#INF00 71 71 71 [1256 545] d0

0.000000 0.000000 0.000000 76 76 76 [1257 545] d-1

0.000000 0.000000 0.000000 81 81 81 [1258 545] d-1

0.000000 0.000000 0.000000 78 78 78 [1259 545] d-1

0.000000 0.000000 0.000000 75 75 75 [1260 545] d-1

0.000000 0.000000 0.000000 73 73 73 [1261 545] d-1

0.000000 0.000000 0.000000 68 68 68 [1262 545] d-1

这样的数据长度大概有1000000以上,我要把所以的数字读出来。程序如下:

clear all

close all

DispartyData = '1.txt';

a1 = 1280*1024;

tmpfile='tmp2.mat';

fidin = fopen(DispartyData, 'r'); % 打开原始数据文件(.list)

fidtmp=fopen(tmpfile,'w'); % 创建保存数据文件(不含说明文字)

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

tline=fgetl(fidin); % 从文件读入一行文本(不含回车键)

if ~isempty(tline) % 判断是否空行

[m,n]=size(tline);

flag=1;

for i=1:n %判断一行中有没有相应的字符

if (tline(i)=='#')

flag=0;

break;

end

end

if flag==1 % 如果是数字行,把此行数据写入文件

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

end

end

end

fclose(fidin);

fclose(fidtmp);

[a,b,c,d,e,t,h,i,j] = textread(tmpfile,'%f %f %f %d %d %d [%d %d] d%d',a1);

A = [a,b,c,d,e,t,h,i,j];

delete(tmpfile);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值