爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
12
返回列表 发新帖

[程序设计] Matlab读取txt文件,空值和分隔符都是空格

[复制链接]
回帖奖励 6 金钱 回复本帖可获得 1 金钱奖励! 每人限 1 次(中奖概率 80%)

新浪微博达人勋

 楼主| 发表于 2017-7-24 14:03:10 | 显示全部楼层
weinihou 发表于 2017-7-24 11:34
先说明哈,好久不用MATLAB了

好,我有空试试,感觉工作量太大,谢谢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-7-25 04:02:38 | 显示全部楼层

回帖奖励 +1 金钱

气象万千2011 发表于 2017-7-24 14:03
好,我有空试试,感觉工作量太大,谢谢

工作量不大,数出每个字段所占的长度,比如第一个字段1-10 第二个字段11-18....
然后对按字符串,按位提出。trim每个字段去掉空格,如果缺值trim后就是空赋个缺省。其他的str2num就好了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-7-25 16:53:01 | 显示全部楼层
本帖最后由 气象万千2011 于 2017-7-25 16:55 编辑
weilin421 发表于 2017-7-25 04:02
工作量不大,数出每个字段所占的长度,比如第一个字段1-10 第二个字段11-18....
然后对按字符串,按位提 ...


好的,谢谢,就是有117个变量,所以字符串提取的时候又要套一层循环,而且文件数比较大,所以matlab运行得花费点时间了,附上用fgetl的方法,只是读一个文件的,别的方法用importdata,textscan的都没成功
filename='J:\data.txt';
disp(filename);
fid=fopen(filename);
tline = fgetl(fid);
n=0;
while ischar(tline)
    n=n+1;
    disp(tline)
    clear tline;
    tline = fgetl(fid);
    if tline==-1;break;end
    for j=1:117
        clear a;
        a(n,j)=str2double( tline(30*(j-1)+1:30*j) ); %用str2num空格的读出来是[],用str2double读出来是NaN
    end
end
fclose(fid);
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表