초급-MATLAB 해양자료처리

MATLAB - TXT & CSV 파일 읽기

Kamanberr 2023. 9. 16. 11:24

이전 글에서는 Excel, NC 파일을 다루었고, 이번 글에서는 TXT, CSV를 다루고자 한다. 

TXT, Dat, CSV를 읽어들이는 방법은 서로 매우 유사하다. 

 

fnm = ‘filename.txt’;
fid = fopen(fnm,'r');
data = textscan(fid, '%d %f %s', 'HeaderLines', 1); 
time = data{1}; % 중괄호 사용하기!

과제 1

DOWNLOAD

바다누리 : http://www.khoa.go.kr/oceangrid/gis/category/reference/distribution.do

(바다누리 사이트에는 회원가입로그인을 해야 데이터를 다운받을 수 있다.)

 

 

조위, 수온, 염분을 시계열로 나타내세요.

 


Hint   

1. textscan 함수 HeaderLine

위 코드에서 ‘1’이라는 값을 가지는 HeaderLine 옵션은 txt의 내용 중에서, 특정 줄 수만큼 데이터로 읽어 들이지 않겠다는 뜻이다.

, 위 코드에서는 Raw data 초반의 1줄을 읽지 않고, 그 다음 줄부터 데이터로 읽어 들이겠다는 뜻이다.

 

이해를 돕기 위해 아래의 Raw data를 보자.

 

여기서 우리가 읽어 들이고자 하는 데이터가 본격적으로 시작되는 줄은 10번째 줄이다.

그 이전에 9개의 줄은 MATLAB에서 읽어 들일 필요가 없다.

이때 Hearderline 옵션을 9로 설정하면 맨 처음 9개의 줄은 읽어 들이지 않는다.

 

그리고 %s, %f, %d 등의 데이터형 중에서 무엇을 써야 할 지는, Raw data를 직접 보고 각 열의 데이터가 어떤 데이터형인지 직접 일일이 확인하고 결정해야 한다.

 

예를 들어, Raw data가 이렇게 되어 있을 때, ‘동해는 문자열 string이므로 첫번째 열의 자리에는 %s를 사용한다.

‘105’는 정수이므로 %d 혹은 %f 를 사용한다.

‘105-00’은 정수나 실수로 읽어 들일 수 없으므로 %s 를 사용한다.

날짜를 표현한 ‘2020-02-13’ 또한 같은 이유에서 %s 를 사용한다.

그 이후에 사용하지 않는 정보들은  %* [^\n] 으로 생략한다.

 

2. Datetime 처리

Raw data를 읽어 들이면 시간 데이터가 연//일 값과 시//초 값이 서로 다른 cell에 저장되어 있다.

이 두 값을 어떻게 결합해서 하나의 datetime 형 배열로 만들 수 있을까?

 

이는 strcat, string, datetime 함수를 사용하면 간단하게 할 수 있다! 

(직접 쉽게 찾아볼 수 있는 부분이니 이건 직접 찾아보면서 구글링 실력을 길러보자.)

 


과제 2

DOWNLOAD

바다누리 : http://www.khoa.go.kr/oceangrid/koofs/kor/observation/obs_real.do

(바다누리 사이트에는 회원가입로그인을 해야 데이터를 다운받을 수 있다.)

 

해당 관측소에서 제공하는 데이터 중, 원하는 데이터 선택해서 CSV 로 다운로드 받기!  

 

예시 결과물 그림은 다음과 같다.


Hint

1. textscan 함수  Delimiter

아래의 코드에서 Delimiter라는 옵션은 무엇일까?

 

예를 들어 Raw data가 다음과 같이 주어진다고 하자.

 

각 열들은 쉼표(,) 로 구분되어 있다.

Delimiter 데이터를 읽어 들일 때, 어떤 기호를 기점으로 행을 구분하여 읽어야 하는지를 정해주는 것이다.

참고로 Delimiter 옵션을 따로 설정해두지 않으면, Default값은 띄워 쓰기이다.

 

 

'초급-MATLAB 해양자료처리' 카테고리의 다른 글

MATLAB - Scatter vs Pcolor  (0) 2023.09.16
MATLAB - NC 파일 읽기 - 해양 산성화  (0) 2023.09.16
MATLAB - Excel 파일 읽기 : 해양 산성화  (0) 2023.09.16
MATLAB - Plotting  (0) 2023.09.16
MATLAB - 제어문  (1) 2023.09.16