이전 포스팅에서는 txt 파일의 데이터를 matlab에서 읽는 함수인 txtread에 대해서 다뤘었다. 그것과 반대로 matlab의 숫자 및 문자 데이터를 txt 파일(메모장)에 써야하는 경우도 종종 있다. 오늘은 그것을 가능케 해주는 fprintf 함수에 대해 알아보자. 바로 예로 들어가겠다.
fprintf 함수 사용법
Hi, I am Kyohoon Sim. 1 2 3 0.12 34.56 을 test.txt라고 명명한 메모장에 남겨보자. 코드는 다음과 같이 작성했다.
clc, clear, close all
string = 'Hi, I am Kyohoon Sim.'; % 문자열
nums = [1 2 3 0.12 34.56]; % 숫자들
fileID = fopen('test.txt', 'w'); % test.txt을 열어서 써라!
formatSpec = '%s %d %d %d %f %f'; % 문자열 정수 정수 정수 소수 소수
fprintf(fileID, formatSpec, string, nums); % fileID에 formatSpec 양식으로 string과 nums를 써.
fclose(fileID); % 이제 test.txt 파일 닫아줘.
실행 결과 test.txt 메모장이 같은 폴더 내에 생성되었고, 아래와 같이 쓰고자 한 내용이 담겨졌다.
그런데 정확히 말하면 약간 다르게 쓰여졌다. 0.12 34.56으로 쓰고 싶은데 소수점 아래가 6자리씩 쓰여졌다. 이 문제는 다음과 같이 코드를 수정하면 해결할 수 있다.
clc, clear, close all
string = 'Hi, I am Kyohoon Sim.'; % 문자열
nums = [1 2 3 0.12 34.56]; % 숫자들
fileID = fopen('test.txt', 'w'); % test.txt을 열어서 써라!
formatSpec = '%s %d %d %d %.2f %.2f'; % 문자열 정수 정수 정수 소수 소수
fprintf(fileID, formatSpec, string, nums); % fileID에 formatSpec 양식으로 string과 nums를 써.
fclose(fileID); % 이제 test.txt 파일 닫아줘.
변경한 것은 %f %f 를 %.2f %.2f 밖에 없다. 제대로 쓰여졌는가 확인해보자.
원하는 대로 소숫점 아래 둘째자리까지만 출력되었다.
이 글도 한번 읽어보세요 ☞
메모장에 있는 숫자들을 matlab에서 읽어내려면?, textread 함수
[python] 메모장에 데이터 쓰고, 추가하고, 읽기
<참고자료>
[1] https://www.mathworks.com/help/releases/R2018b/matlab/ref/fprintf.html?s_tid=mwa_osa_a
'Dev > matlab' 카테고리의 다른 글
[MATLAB] 문자열에서 필요한 데이터만 추출하기, sscanf 함수 (2) | 2019.04.18 |
---|---|
[MATLAB] 숫자형을 문자형으로, 문자형을 숫자형으로 변환하기, num2str 함수와 str2num 함수 (2) | 2019.04.16 |
matlab에서 문자열 비교하기, strcmp 함수 (0) | 2019.04.12 |
matlab을 이용해서 파일 복사하기, copyfile 함수 (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에서 읽어내려면?, textread 함수 (2) | 2017.10.07 |
[MATLAB] 폴더 속의 이미지 파일들의 이름을 읽어내고 싶을 때는?, dir 함수 (2) | 2017.09.27 |