2012-03-31 3 views
0

Здесь я использую один из моих данных, которые находятся в формате .dat. У меня 16162 разных файла. Я объединил все в один файл и хочу прочитать его в Matlab, и вам нужно извлечь три значения параметра из одного файла и упорядочить их как по строке, так и по столбцу. Я могу сделать это, используя C-коды, но я хочу сделать это, используя matlab. Может ли кто-нибудь помочь мне написать коды, пожалуйста?Объединение нескольких файлов в один файл с помощью MATLAB

Вот данные файла один пример:

DISTRIBUTION: monomodal log-normal 
n : 1.000 
r_mod: .010 
sigma: 1.400 

number conc., surface. conc., volume conc. 

.1087E+01  .1866E-02  .7878E-05 

part. ave. radius, surf. ave. radius, vol. ave. radius : 
.1149E-01 .1169E-01 .1201E-01 

surface mean radius, volume mean radius : 
.1267E-01 .1392E-01 

eff. variance : 
.9939E-01 

Скажем: Я хочу, чтобы извлечь или прочитать три параметра (r_mod, сигма, Поверхностный означает радиус). Соответствующие значения для этих трех параметров из файла, который я поставил на этой странице 0,010, 1,400, .1267E-01

Выход должен быть (что я хочу):

r_mod sigma surface mean radius .01 1.4 1.27E-02 .02 1.4 2.67E-02 .03 1.4 3.98E-02 ... .. .. .. .. .. .. .. .. 

у меня больше тысячи похожих файлов в одном каталоге. Я хочу прочитать все эти файлы в Matlab, и вывод должен отображаться таким образом в одном файле.

+0

Возможно, вам повезло, если вы попросили об этом в StackOverflow. Статистика SE сильнее в статистической методологии, чем вопросы программирования. –

+0

Какие три параметра вы хотите извлечь? Когда вы объединили файлы, вы просто добавили отдельные файлы? – Jonas

+0

Каков формат выходного файла? –

ответ

0

Учитывая, что все файлы имеют одинаковую структуру, следующее будет выполнять задание (просто убедитесь, что вы читаете комментарии в коде, вам нужно будет адаптировать ваши имена файлов и количество файлов для чтения):

n = 2; % Number of files you want to go through 
vals = zeros(1,3*n); 
str = 'r_mod sigma surface mean radius  '; 
k = 1; 
for i = 1:n 
    path = ['myFile',num2str(i),'.dat']; % change this to fit your file names 
    fid = fopen(path, 'rb'); 
    data = textscan(fid,'%s'); 
    fclose(fid); 
    data = data{1}; 
    vals(k) = str2double(data{8}); 
    vals(k+1) = str2double(data{10}); 
    vals(k+2) = str2double(data{40}); 
    k = k+3; 
end 
out = [str, num2str(vals)]; 
fid = fopen('output.txt', 'w'); 
fprintf(fid,out); 

Файл output.txt теперь содержит нужную строку. Вы можете изменить формат, если вы хотите, чтобы выходной файл также был .dat.

+0

Кажется, что Мустафа удалил свою учетную запись: s Вы нашли этот ответ достаточным @yuk? – JCKaz

Смежные вопросы