matlab如何读取未知行数,带头文件和字段名的txt文件

文件格式是这样的
20120108 50024 X235RZB30801 01 15
2361 2362 2363 2364 2365 2366 2367 2368 2369 236A 236B 236C 236D 236E 236F
18854.49 17757.25 90809.09 98429.45 21283.85 77620.26 45330.92 70173.54 16957.37 -9.51908 18.67279 27.211 22.175 1182.5 1029.49
18854.81 17757.46 90808.71 98429.45 21283.85 77620.20 45330.57 70173.99 16957.39 -9.51824 18.67171 27.206 22.175 1181.1 1029.27
18854.44 17757.52 90808.91 98429.38 21283.85 77620.48 45330.77 70173.82 16957.51 -9.52009 18.67234 27.212 22.175 1181.4 1028.74
18854.70 17757.32 90809.15 98429.46 21283.85 77619.98 45330.61 70173.45 16957.49 -9.51951 18.67069 27.214 22.175 1182.8 1028.04
所有的数据在txt文件中都是以空格符隔开的,以上是为了让大家看清楚才换行间断的。所以整个文件好像是只有一行。
20120108 50024 X235RZB30801 01 15  这些是头文件。
2361 2362 2363 2364 2365 2366 2367 2368 2369 236A 236B 236C 236D 236E 236F 这是十五个字段名。
18854.49 17757.25 90809.09 98429.45 21283.85 77620.26 45330.92 70173.54 16957.37 -9.51908 18.67279 27.211 22.175 1182.5 1029.49  这十五个数据就是每个字段对应的。
列数就是十五,行数应该是1440行,一分钟一行,一天24小时。
试了textread,fscanf,我是matlab新手,一直不知道该怎么样读取。
我想要的结果就是跳过头文件和字段,将数据存储成15列乘1440的矩阵。
如果转换后能在每行数据前加上这一列时间就更好了。
2012-01-08 00:00:00
2012-01-08 00:01:00
2012-01-08 00:02:00
2012-01-08 00:03:00
请大家帮忙实现,非常感谢

sample vision

filename='data.txt';
fid=fopen(filename, 'r');
%% 读第一行,无视之
firstLine=fgetl(fid);
% disp(firstLine);
%% 读第二行,解析为列头
secondLine=fgetl(fid);
columnHeader=regexp(secondLine, '\s', 'split');
fprintf(1, '数据列数为:%d\n', size(columnHeader, 2));
%% 读之后的数据行
dataLine=fgetl(fid);
data=cell(1440, size(columnHeader, 2));
i=1;
while(dataLine~=-1)
    % 显示数据行
%     disp(dataLine);
    % 处理数据行
    temp=regexp(dataLine, '\s', 'split');
    data(i, 2:16)=temp(1, 1:15);
    % 读取下一行
    dataLine=fgetl(fid);
    i=i+1;
end
% 显示在一张表中
f = figure;
colnames = columnHeader;
t = uitable(f, 'Data', data, 'ColumnName', colnames, 'Position', );

转载于:https://www.cnblogs.com/AI-Algorithms/p/3669720.html

原创matlab读取txt中文文本的解决方案-程序.rar matlab对中文的支持一直以来都是个不小的问题,尤其在读取文本方面。一般读出的中文文本都是乱码,网上找了半天没找到答案,自己研究了一下,在快要绝望的时候终于有了结果~ 呵呵     这个问题是在本论坛中的GUI教学视频第5课中提到的,学生的成绩单必须要转换成英文 数字才能正常读入,我用的是中文系统,用fopen试了一下,结果读出的中文是'???'样的乱码。不多废话,还是用本课视频的例子,为了证明读取中文的有效性,我把源程序的思路做了一下改动,界面中不做中文string的设置,全部由程序给出,解决方案如下 编程环境:matlab7.1;Windows XP professional SP2 更改后的代码 function matlab_GUI_4_OpeningFcn fdata = importdata    % 导入文本数据 ftextdatasize = size;   % 求文本类数据长度 fdatasize = size    % 求数据长度 counter = 1; while counter<ftextdatasize  % ftextdatasize 为 fdata.textdata 行数     % 从第二行开始取(从第二行起才为人名),第一行为标识     xingming = fdata.textdata;     counter = counter 1; end counter = 1; while counter<fdatasize 1     chengji = fdata.data;     counter = counter 1;    end set; handles.chengji = chengji; % 设成了全局变量,留着扩展用,其实只用局部变量也成 handles.kemu = fdata.textdata); set); set); set); set); 复制代码function listbox1_Callback value = get; % value为行向量,选择前2项即为[1 2]; set)); 复制代码结果如图 未命名.JPG 感谢管理员为我们做的如此精彩的视频,附件中为数据及代码(包括本例代码以及GUI视频教程第5课程序代码)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值