간혹 메모장에 있는 숫자들을 매트랩에서 읽어내어 사용해야하는 경우가 있다. 사실 숫자가 몇 개 안되면 그냥 하나씩 옮겨 적으면 되겠지만, 20개 이상만 되도 상당히 피곤한 일이다. 이럴 때 필요한 함수가 textread이다. 간단한 예제를 통해 사용법을 알아보자.
그림1과 같이 정수가 연속적으로 나열되어 있는 경우에 불러들이는 코드를 작성해보자.
data = textread('memo.txt', '%d');
메모장 파일명과 메모장 내의 숫자의 형식을 입력해주면 된다. 여기서는 정수이므로 %d라고 세팅했다. %d는 C언어를 공부한 사람이라면 익숙할 것이다. 이 코드를 실행하면, 작업 공간에 data라는 변수가 생성되고, 그 변수의 내용을 들여다보면 그림2와 같이 memo.txt내의 숫자들이 제대로 읽혀진것을 알 수 있다.
그러면 이번에는 메모장내에 실수가 있는 경우를 살펴보자. 위에 있던 data.txt를 살짝 바꿔서, 소수가 포함되도록 만들었다 (그림3).
C언어를 공부한 사람이라면 아까 %d 대신 %f를 넣어야할 것 같은 직감이 들 것이다. 바로 그 직감대로 아래와 같이 코드를 작성하면 된다.
data = textread('memo1.txt', '%f');
결과적으로 생성된 변수를 살펴보면(그림4), 제대로 읽어들인 것을 확인할 수 있다.
만일 memo1.txt의 숫자들을 %d로 읽으려고하면 오류가 발생한다.
이번에는 마지막으로 숫자들이 열로 배열되어 있지 않고, 행으로 배열되다가 열로 배열되어 있다면(그림5)?
이번에도 아래와 같이 메모장 파일 명을 제외하고 방금 전 예제와 동일한 코드를 실행하면 어떻게 될까?
data = textread('memo2.txt', '%f');
동일하게 숫자가 하나씩 열로 배열되었다(그림6). 그림4와 같다는 것을 주목하자.
이것을 통해 우리는 textread함수가 공백을 기준으로 숫자들을 읽어들여서 하나의 열벡터로 배열시킴을 알 수 있다.
'Dev > matlab' 카테고리의 다른 글
[MATLAB] 숫자형을 문자형으로, 문자형을 숫자형으로 변환하기, num2str 함수와 str2num 함수 (2) | 2019.04.16 |
---|---|
matlab에서 문자열 비교하기, strcmp 함수 (0) | 2019.04.12 |
matlab을 이용해서 파일 복사하기, copyfile 함수 (0) | 2019.04.11 |
matlab을 통해 txt 파일(메모장)에 기록을 남기려면?, fprintf 함수 (0) | 2019.04.11 |
Matlab용 CNN 라이브러리 MatConvNet 설치하기 (win10 + visual studio 2015 + Matlab 2018b + CUDA 8.0 + cuDNN 5.1) (2) | 2019.02.25 |
LIBSVM 활용하여 매트랩에서 SVM 사용하기 (34) | 2018.12.19 |
[MATLAB] 폴더 속의 이미지 파일들의 이름을 읽어내고 싶을 때는?, dir 함수 (2) | 2017.09.27 |
[MATLAB] grape-based visual saliency (GBVS)로 saliency 맵 산출하기 (6) | 2017.05.16 |