2012-04-03 2 views
1

여기에서 .dat 파일에있는 데이터 중 하나를 공유하고 있습니다. 16162 개의 다른 파일이 있습니다. 모든 파일을 하나의 파일에 병합하고 matlab에서 읽고 원하는 하나의 파일에서 3 개의 매개 변수 값을 추출하여 현명한 또는 열의 현명한 배열로 정렬해야합니다. C 날카로운 코드를 사용하여 그것을 할 수 있지만 그것을 matlab을 사용하여 수행 할 싶어요. 아무도 코드 작성을 도와 주시겠습니까?matlab에 .dat 파일에서 텍스트 및 숫자 데이터 읽기

DISTRIBUTION : 로그 정규 단 일상 N : 여기

는 하나 개의 샘플 파일 데이터 인 r_mod 1.000 : 0.010 시그마 :. 1.400

번호 진한 표면. conc., volume conc. (cm^-3) (mu^2cm^-3) (mu^3cm^-3) 1087e + 01. 1866e-027878e-05

부분. 아베. 반경, 파도. 아베. 반경, 권. 아베. 반경 : .1149E .1169E - 01 - 01 - 01 .1201E

표면 반경, 평균 체적 평균 반경 : .1267E 01 .1392E 01

을 EFF. 분산 :e-01

다음과 같이 가정 해 봅시다. 3 개의 매개 변수 (r_mod, sigma, Surface는 반경을 의미)를 추출하거나 읽으 려합니다.

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

내가 이상이 :이 페이지에 넣어 파일에서 이러한 세 가지 매개 변수의 해당 값은, .1267E-01

출력은해야한다 (내가 원하는) 1.400 0.010입니다 동일한 디렉토리에있는 수천 개의 유사한 파일. matlab에있는 모든 파일을 읽고 싶다. 출력은 이런 식으로 하나의 파일에 표시되어야한다.

답변

1

모든 파일이 숫자 값을 제외하고 완전히 동일하면 Matlab 함수 textscan을 사용하고 각 행의 형식을 지정할 수 있습니다. 여기

에는 그것을 할 수 있는지의 예이다 : 만약 셀 어레이 data에 수치를 액세스 할 수있는 이러한 예에서

fid=fopen('text.dat','r'); 
format={'DISTRIBUTION: monomodal log-normal n : %f r_mod: %f sigma: %f'; ... 
     'number conc., surface. conc., volume conc. (cm^-3) (mu^2cm^-3) (mu^3cm^-3) %f %f %f'; ... 
     'part. ave. radius, surf. ave. radius, vol. ave. radius : %f %f %f'; ... 
     'surface mean radius, volume mean radius : %f %f'; ... 
     'eff. variance : %f'}; 
data=cell(numel(format),1); 
for i=1:numel(format) 
    data{i}=textscan(fid,format{i},1); 
end 
fclose(fid); 

, r_mod가 data{1}{2}이며, 시그마 data{1}{3}이고 표면은 반경 data{4}{1} 수단 등등. 그런 다음이 데이터를 구성하고 컬렉션을 파일로 저장하는 것은 단지 fprintf을 사용하여 헤더를 작성하고 dlmwrite을 사용하여 데이터를 추가하는 것입니다.

+0

안녕하세요, Aabaz. 코드와 설명을 주셔서 대단히 감사합니다. – mmenvo