网上搜集的几个代码,很有用,保存。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1)要读入的文件下的文件名称依序列的方式命名,如a1b.mat, a2b.mat,...,ajb.mat,...
2)文件夹下的文件名称无规律
主程序:
clc;
clear;
fidin=fopen('title.txt','r');
fidout=fopen('result.txt','w');
while ~feof(fidin)
end
fclose(fidin);
fclose(fidout);
部分文件名(title.txt)
B12-B51-58
B12-B53-58
B12-B55-59
B12-B55-62
B12-B55-64
B12-B57-51
B14-B50-44
B14-B50-48
B14-B51-46
B14-B52-49
B14-B54-48
B14-B54-53
B14-B54-74
B14-B55-52
B14-B55-56
B14-B55-60
B14-B55-63
B14-B55-65
B14-B55-67
B14-B55-69
B14-B55-75
B14-B56-49
B14-B56-53
B14-B56-70
…………
function [efc_dpt,efc_poro,efc_perm,efc_ratio]=numprocessor(file)
%读入数据,进行处理,输出结果
end
井的数据
1865.2
1867.8
1874.4
1885
1888.8
1891.8
1897
1898
1903
1906.2
1911
1914.6
1919
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
多数据文件批处理的一个技巧
数据处理过程中,很多时候需要对大批的数据文件进行循环处理。如果文件名是有规律的,那么正常的方法尚可处理,但是碰到文件名没什么规律,或规律不强时,表示出这些文件按名就是一件很头疼的事了。假设现有以下文件需要进行循环处理,以供参考。
1、MATLAB
clc;clear;
%--将'e:/POP/data/'下的文件信息写入构架数组file_structure
file_structure = dir('e:/POP/data/');
%--file_structure.name下是'e:/POP/data/'内的文件名
for i=3:size(file_structure)
end
怎么用matlab读取多个数据文件?
1:如果文件名规则 % 文件目录:
my_dir=' /home/my_calculation1/test1/'; %文件名前缀
my_pre_T='test'
;
%文件数目 fnum =1:32; %Read files for i=1:length(fnum) filename = [my_dir,prefix_T1 num2str(fnum(i))]; 然后dlmread,fopen等操作就不需详写了!与单个文件一样。 end
2:文件夹数据批量读取的问题,命名无规则 在windows下很简单,ls函数便可以得到一个包含所有文件名的字符矩阵。可惜在unix下得到的是个字符行向量。当然,处理下也可以批量读取数据文件,不过不想再写了。因为另外一个函数也可以实现批量处理数据文件的功能。即dir函数 LS displays the results of the 'ls' command on UNIX.
On UNIX, LS returns acharacter row vectorof filenames separated by tab and space characters.
假定.dat文件在/home/my_calculation1/test1/ 文件夹下,文件名符合matlab变量名的命名规则,要读取第二列的浮点数字为数组并以文件名为变量名。
mydir='/home/my_calculation1/test1/'; temp1=dir([mydir,'*.dat']);
temp=dlmread(filename,'',0,1);
1、利用dir(外层文件夹)获取子文件夹;
2、利用dir(子文件夹)获取子文件夹中的文件信息;
3、遍历文件,做处理;
对于遍历文件夹,也可以使用mathworks网站上的函数dirr轻松搞定。
注意:如果直接使用 temp1=dir(mydir]);读取文件夹下所有文件,应当从第三个开始才是目录下的文件。 另外,使用dir还可以遍历一个文件夹下的所有子文件夹。
eval_r([temp1(i1).name(1:end-4),'=temp;'])
dlmread,fopen等操作就不需详写了!与单个文件一样。
end
num_temp1=length(temp1);
for i1=1:num_temp1
filename=[mydir,temp1(i1).name];
现在有一个文件夹里面有50个的.dat文件.每个文件大概三万行.两列,第一列是字符串,第二列是浮点数字. 批量读取这个文件夹里的.dat文件的第二列。读取完以后的数组变量名就是.dat的文件名
On Windows, LS returns anm-by-n character array of filenames, where m is the number of filenames and n is the number of characters in the longest filename found. Filenames shorter than n characters are padded with space characters.
下面介绍下使用dir函数读取文件夹中文件的程序
2.1 读取所有扩展名为.dat的数据文件,并进行处理。
matlab中,也可以使用通配符的。下面就来展示下: