필터 지우기
필터 지우기

concatenate and replace comma by dot

조회 수: 2 (최근 30일)
Momo
Momo 2012년 12월 17일
Hello, I have a series of 300 files with names respectively from data-1.dat to data300.dat. Each file consist of 6 columns and 25 rows (files contain scalars with comma instead of dot, ex: 3,21223232 and a header line) I want to concatenate all files into one matrix and I'm using the code below:
% code
numfiles = 300;
concat= cell(1, numfiles);
for i=1:300;
i
filename = sprintf(data-%d.dat, i);
concat{i} = importdata(filename, '\t');
end
the_struct = [concat{:}];
M = [the_struct.data];
For data that doesn't have a comma the code work very well, otherwise it doesn't. Anyhelpful answer is very welcome. Thank you in advance.

채택된 답변

Jan
Jan 2012년 12월 17일
편집: Jan 2012년 12월 18일
numfiles = 300;
concat = cell(1, numfiles);
for ii = 1:numfiles
filename = sprintf('data-%d.dat', ii);
concat{ii} = strrep(fileread(filename), ',', '.');
end
newFile = fullfile(tempdir, 'JoinedFile.dat');
FID = fopen(newFile, 'w');
if FID == -1, error('Cannot open file for writing'); end
fprintf(FID, '%s', concat{:});
fclose(FID);
Now the new file contains all data with dots instead of commas and can be imported at once.
[EDITED] Remove headerlines, which start with 'F':
concatC = cell(1, numfiles);
for ii = 1:numfiles
filename = sprintf('data-%d.dat', ii);
Str = strrep(fileread(filename), ',', '.');
CStr = regexp(Str, '\n', 'split');
CStr(strncmp(CStr, 'F', 1)) = [];
% Perhaps:
if isempty(CStr{end})
CStr(end) = [];
end
concatC{ii} = CStr(:);
end
concat = cat(1, concatC{:});
  댓글 수: 8
Jan
Jan 2012년 12월 20일
@Momo: Have you seen the [EDITED] section in my answer? If not, do you have any reason to be inpatient?
Momo
Momo 2012년 12월 20일
@Jan: No I just have seen it. Sorry for been inpatient (It's because I had a deadline). Thank you very much for your precious help.
M.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Momo
Momo 2012년 12월 18일
When I try to import data
all_data= importdata('JoinedFile.dat');
It import data as a text, colheader and data with only the first set of 25 rows and 6 columns(i.e only first file), and leave 299.
Best regards,

카테고리

Help CenterFile Exchange에서 Data Type Conversion에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by