2019-04-11 12:54:48

이전 포스팅에서는 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