블로그 이미지
Salt n Light

calendar

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

Notice

Recent Comment

Recent Trackback

Archive

2008.03.15 15:55 Season#2 - M.S./Programming
출처 블로그 > 인생은 도전하기에 아름답다.
원본 http://blog.naver.com/horgan/40018931645

안녕하세요. 오늘은 fprintf 함수의 파일 저장 기법에 대해서 알아보도록 하겠습니다. 간단한 예제를 통하여 각기 다른 방식으로 저장하였을 때 실제로는 어떻게 저장되는지를 이해하는 것이 오늘 강의의 목표입니다.

fid=fopen('test.txt','w');
x=[1 2 3];

y=[4 5 6];
fprintf(fid,'%f %f\n',x,y);
fclose(fid);

그런데 여기서 우리가 한가지 주의해야 할 사실이 있습니다. 우리가 일반적으로 저장하기 원하는 방식은 다음과 같은 구조일 것입니다.

사용자 삽입 이미지

그러나, 실제로는 우리가 원하던 포맷으로 저장이 안되게 됩니다. 왜 그런지를 보도록 하겠습니다. 가장 일반적인 경우인  fprintf(fid,'%f %f\n',x,y); 코드를 사용하였을 때를 도식화하여 보이도록 하겠습니다.

사용자 삽입 이미지
위의 그림에서 알 수 있듯이 fprintf 함수는 출력포맷을 데이타의 끝까지 반복 적용하는 것을 알 수가 있습니다. 그런데, 결과는 우리가 원하던 형식이 아닙니다. 그렇다면 데이타를 전치행렬로 바꾸어서 결과를 보도록 하겠습니다.
사용자 삽입 이미지

fprintf 함수의 출력포맷은 기본적으로 열부터 스캔하고 다음에 행을 스캔는 방식이기 때문에 처음 경우와 같은 결과를 얻게 됩니다. 다음 3번과 4번 경우도 기본적으로는 같은 방식이 적용되어 처음과 같은 결과를 얻게 됩니다.

사용자 삽입 이미지
사용자 삽입 이미지

자, 그렇다면 다음과 같이 하면 어떤 결과를 얻게 될까요?

사용자 삽입 이미지
올커니, 우리가 원하던 결과를 얻었습니다. 마지막 경우를 살펴보겠습니다.

사용자 삽입 이미지
처음과 같은 결과를 얻게 되는 것을 알 수 있습니다.  fprintf  함수의 출력포맷 특성을 알았으므로 앞으로는 어떠한 식으로 데이타를 저장할지 감이 오셨으리라 믿습니다. 그럼 여기서 이번 강의를 마치도록 하겠습니다.

posted by Salt n Light