메모장에 있는 숫자들을 matlab에서 읽어내려면?, textread 함수

일과 공부 사이/MATLAB|2017.10.07 20:50

간혹 메모장에 있는 숫자들을 매트랩에서 읽어내어 사용해야하는 경우가 있다. 사실 숫자가 몇 개 안되면 그냥 하나씩 옮겨 적으면 되겠지만, 20개 이상만 되도 상당히 피곤한 일이다. 이럴 때 필요한 함수가 textread이다. 간단한 예제를 통해 사용법을 알아보자. 


그림1. 메모장에 정수들이 나열되어 있는 경우

그림1과 같이 정수가 연속적으로 나열되어 있는 경우에 불러들이는 코드를 작성해보자.

data = textread('memo.txt', '%d');


메모장 파일명과 메모장 내의 숫자의 형식을 입력해주면 된다. 여기서는 정수이므로 %d라고 세팅했다. %d는 C언어를 공부한 사람이라면 익숙할 것이다. 이 코드를 실행하면, 작업 공간에 data라는 변수가 생성되고, 그 변수의 내용을 들여다보면 그림2와 같이 memo.txt내의 숫자들이 제대로 읽혀진것을 알 수 있다.


그림2. 생성된 data 변수


그러면 이번에는 메모장내에 실수가 있는 경우를 살펴보자. 위에 있던 data.txt를 살짝 바꿔서, 소수가 포함되도록 만들었다 (그림3). 


그림3. 메모장에 실수들이 포함된 경우

C언어를 공부한 사람이라면 아까 %d 대신 %f를 넣어야할 것 같은 직감이 들 것이다. 바로 그 직감대로 아래와 같이 코드를 작성하면 된다.


data = textread('memo1.txt', '%f');


결과적으로 생성된 변수를 살펴보면(그림4), 제대로 읽어들인 것을 확인할 수 있다.


그림4. 읽어들인 숫자들을 담은 변수 data

만일 memo1.txt의 숫자들을 %d로 읽으려고하면 오류가 발생한다. 


이번에는 마지막으로 숫자들이 열로 배열되어 있지 않고, 행으로 배열되다가 열로 배열되어 있다면(그림5)?


그림5. 숫자들이 행으로 배열되다가 열로 배열되어 있는 경우

이번에도 아래와 같이 메모장 파일 명을 제외하고 방금 전 예제와 동일한 코드를 실행하면 어떻게 될까?


data = textread('memo2.txt', '%f');


동일하게 숫자가 하나씩 열로 배열되었다(그림6). 그림4와 같다는 것을 주목하자. 


그림6. 읽어들인 숫자들을 담은 변수 data


이것을 통해 우리는 textread함수가 공백을 기준으로 숫자들을 읽어들여서 하나의 열벡터로 배열시킴을 알 수 있다. 



댓글()
  1. 2017.11.10 18:09 댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다