matlab文件名批量读取dat文件,求问怎样用matlab批量读取dat文件中的数据?在线等...
求问怎样用matlab批量读取dat文件中的数据?在线等
关注:137 答案:2 手机版
解决时间 2021-02-24 23:26
提问者终究是陌生了
2021-02-24 12:03
我的数据是在一个文件夹内,共10个dat文件,每个文件有四列,3000多行,都是双精度的小数。现在想读入matlab中,放入矩阵中,编写了下面的程序,结果提示fread用的不对,怎么改正?files = dir('E:\毕业设计\data\cold_slice\15\*.dat');n_snapshots = size(files,1);for j=1:n_snapshots fid = fopen('E:\data\cold_slice\15,files(j).name'); data=fread(fid); x = data(1,:); y = data(2,:); U(j,:) = data(3,:); V(j,:) = data(4,:); fclose(fid);end另外也试了用load语句,可是语句也总写不对求大神给指点,万分感谢!!
最佳答案
二级知识专家喜欢就甘愿
2021-02-24 12:12
最近也碰到这样的问题~你最后是怎么解决的? path=dir('E:\test data\run\*.dat'); fid = fopen('path.name');C_text0=textscan(fid,'%s',73,'delimiter','|'); %提取变量说明项Time=textscan(fid,'%s',1,'delimiter','|'); %提取时间项%C_text1=textscan(fid,'%s',4,'delimiter','|');%提取变量项Vary=textscan(fid,'%s',71);%提取变量项C_data1=textscan(fid,'%f','CollectOutput',1); %提取数据C_text2=textscan(fid,'%s',1);%读取最后平均值的的字符Average=textscan(fid,'%f'); %提取平均数的数据最后也是报错,说textscan出错
全部回答
1楼白胡子大佬
2021-02-24 13:01
for i=1:300
g{i}=load(strcat('g_',num2str(i),'.dat'));
len(i)=length(g{i});
end上面程序生成的是一个cell类型的变量g,含有300列数据,分别从300个文件中读取出来的。可以不去在意有多少行。如果达到要求的话,上面的代码就足够。最终的结果就是g。
cell的操作方式跟矩阵操作没有什么特别大的差异。如果想变成矩阵的话可以在上面代码执行完之后运行下面的代码:
maxlen=max(len);
result=zeros(maxlen,300);
for i=1:300
result(1:len(i),i)=g{i};
end最终的结果是result。
注意:
因为存在不同行的情况,所以矩阵300列中最大列为最终结果矩阵的行,在这里先初始化一个最大行,300列的零矩阵,再将对应的列进行赋值。如果你的数据中含有零,则不好区分,就需要进行其他数值上的处理,这个可以根据数据内容进行变化。
我要举报
如以上信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
推荐资讯
大家都在看
更多推荐


所有评论(0)