matlab

[ matlab ] textscan

humming_stereo 2023. 7. 31. 19:19

목표

1. 설명

2. format

3. parameter


설명

일정한 양식을 가진 텍스트 파일(.txt , .csv)의 데이터를 읽을 때 사용한다.

 

1. 파일을 열고 파일 ID를 가져온다.

fid = fopen('test.csv')

 

2. 해당 파일의 양식에 맞춰 읽어들일 양식을 지정한다.

  • Mathworks 의 공식 문서를 인용하면
    - "textscan은 파일의 데이터가 formatSpec의 변환 지정자와 일치하는지 확인합니다."
    - "textscan은 전체 파일에 formatSpec을 다시 적용하고 formatSpec을 데이터와 일치시킬 수 없는 경우 중지합니다."
  • 간단히 말해서
    →형식을 제대로 맞추지 않으면 데이터를 읽다가 중단될 수 있기 때문에 올바른 format을 지정하는 것이 중요하다.
format = '%s %s %f'

 

3. 기본형태 - 추가적으로 필요한 경우 옵션을 추가한다 (parameter)

textscan(fid,format,parameter)

: 열려있는 텍스트 파일의(fid) 데이터를 지정한 형식에(format) 맞춰  cell형 배열로 읽어들인다.

 

 


Format

아래의 표에 따라 본인의 데이터에 맞는 형식을 만든다.

  • 형태는 작은 따옴표로 묶어준다.
  • 반복되는 특정한 텍스트를 제외하고 싶은 경우, % 앞에 해당 텍스트를 넣어 생략가능 하다.
  • 중간에 필요없는 데이터의 경우, % 뒤에 * 를 붙여 건너 뛸 수 있다.
  • (제가 자주쓰는 형식들만 적어두었습니다. 더 많은 정보는 아래 reference의 링크를 참고하시길 바랍니다.)
변환 지정자 입력 유형 출력값 class
%D datetime형으로 변환 datetime
%{format}D 'Format' default 형이 아닌경우 직접 지정
%s 텍스트 형으로 변환 char
%f 소수 형으로 변환 double
%q 큰 따옴표로 묶인 각 데이터를 풀어준다. char
%[^\n] 지정하지 않은 나머지 텍스트들을 묶어준다. char

 

 

- 예시 -

  • 결과는 직접 확인해 보시길 바랍니다.

test.csv
0.00MB

fid = fopen('test.csv');
format = '%{yyyy-MM-dd}D No.%f %[No]s %q %*[\n]';
d = textscan(fid,format);

 

 

Parameter

format 뒤에 상황에 따라 적절한 parameter를 추가하여 사용한다.

이름 역할
HeaderLines 1번째 줄부터 설정한 줄까지 생략 number
TreatAsEmpty 특정 텍스트를 빈값으로 정의 ex) '-'
Delimiter 구분 문자 지정. 복수 지정 가능 ex) ','  or {',', ':'}
  • 다음과 같은 구분자인 경우 기억해면 좋다.
\n 새줄
\t
\\ 벡슬래시

 

- 예시 -

textscan(ftp.id,format,'HeaderLines',4,'Delimiter','\t','TreatAsEmpty','-')

 


reference

 

https://kr.mathworks.com/matlabcentral/answers/132580-textscan-problem-empty-values-and-nan

https://kr.mathworks.com/matlabcentral/answers/122577-what-does-n-r-mean

 

'matlab' 카테고리의 다른 글

t_tide 메뉴얼  (0) 2023.10.18
structure 특정 값 추출  (0) 2023.10.04
[ matlab ] 데이터 읽기 방법 (textscan / importdata)  (0) 2023.06.05
[ matlab ] colorbar  (0) 2023.06.02
[ m_map ] m_map 사용법_2 (지도 생성)  (0) 2023.05.03