floi 发表于 2012-11-8 02:07:52

请问Matlab能够读取没有分隔符的数据吗?

Matlab新手上路,想请问一下,Matlab能读取无分隔符的数据吗?
数据如图1所示,图2中的第一行是我添加分号为分隔符后的数据。
谢谢各位大侠们



ithinksoim 发表于 2012-11-8 10:39:19

你的数据里面不是有空格作为分隔符吗

floi 发表于 2012-11-8 16:29:08

ithinksoim 发表于 2012-11-8 10:39 static/image/common/back.gif
你的数据里面不是有空格作为分隔符吗

数据里没有空格,那个间隔比较大的地方是小数点。

liuyalong008 发表于 2012-11-10 08:08:59

字符串分割,再转换成数值

floi 发表于 2012-11-12 16:49:34

liuyalong008 发表于 2012-11-10 08:08 static/image/common/back.gif
字符串分割,再转换成数值

请问字符串分割具体是哪个命令?

floi 发表于 2012-11-13 17:18:24

最后用了一种比较笨的方法读取了。
fid1=fopen('XX'); %读取原始数据文件
bb=textscan(fid1,'%13s',-1);%数据写入bb,因原始数据每13个字符为一个数据,因此每13个字符存为一个字符串
for i=1:435
a(i,1:9)=bb{1,1}(5+11*i:13+11*i,1); %读取bb中第一列16-24行存入a中的第一行,27-35行存入a中第二行,a中一行有九列
end
=size(a);
filename2='XXX.dat';
fid2=fopen(filename2,'w'); %打开记录新数据文件'XXX.dat'
fprintf(fid2,'   EEFFM       XANTNRX??Z……\n');%写入文件题头
for row=1:nrows
    fprintf(fid2,'%13s;%13s;%13s;%13s;%13s;%13s;%13s;%13s;%13s\n',a{row,:}); %a中每13个字符存入XXX.dat,分隔符为';'
end
fclose(fid2);%关闭'XXX.dat'
fclose(fid1);%关闭原始数据
cc=importdata('XXX.dat',';',1);%读取'XXX.dat'
data=cc.data;%读出数字格式的数据
转换后的数据如图

nwcwww 发表于 2012-11-13 19:58:51

如果你会用PERL的话当然用PERL最好。
不太清楚你对结果文件的格式要求,不过在不调用PERL的情况下可以考虑结合cellfun和regexp.
3.1416E+003.1416E+013.1416E+033.1416E+04
3.1416E+053.1416E+063.1416E+073.1416E+08

那大致可以这么处理:
a=importdata('mytext.txt');
b=regexp(a,'(\d.\d+E\S\d\d)','tokens');
c=vertcat(b{:});
ExtractedData=cellfun(@str2double,c);
最后得到的结果ExtractedData是一个2x4的数字矩阵。

页: [1]
查看完整版本: 请问Matlab能够读取没有分隔符的数据吗?