본문 바로가기
매트랩(Matlab)/매트랩 강의

[Matlab / 매트랩] 7. m-file 사용하기

by freezkim 2010. 2. 3.

[Matlab / 매트랩] 매트랩 강의 7번째

 "m-file 사용하기" 

오랜만입니다. 요즘 뭔가 계속 뜸해지고 있습니다.ㅠㅠ
분발해야겠죠ㅠㅠ흑..
생각보다 매트랩을 학교에서 강의하는데가 많은것 같아요.
아주 가끔씩(???) 문의질문이 오는데 대부분 학교 숙제인 듯 합니다. 
여튼 그 중에서도 특히 프로그래밍 관련해서 많은 질문이 오는데요. 
오늘은 프로그래밍의 기본이 되는 m-file 사용하기를 한번 해볼 예정입니다.
 

먼저 m-file이란거에 대해 소개를 잠깐 해야겠네요.
아, 바로 하기전에 간단하게 몸풀기 게임이나 하나 해볼까요.
매트랩에서 이렇게 한번 쳐보세요.
 
>>xpbombs

 

흐흐 뭔가 낯익으면서도 그리우면서도 뭔가 거시기한 거시기가 뜹니다.

흐흐 지뢰찾기 게임이죠.

사실 요런 거도 매트랩을 이용해서 프로그래밍이 가능합니다!!!
대단하죠 후후

요런 프로그래밍도 처음에는 다 요 m-file이란거에서부터 시작합니다.

이제 슬슬 m-file이라는게 뭔지 정체가 궁금하지 않나요?? 흐흐흐흐 궁금하시다면 낚이신겁니다 크크크 

좋아요 이제 한번 시작해 보도록 합시다. 

1. m-file은 무엇인가?
2. m-file을 실행시켜보자.
3. m-file을 이용한 명령어 만들기 
(....악 다 날라갔다ㅠㅠ 이런 ㅅㅅㅅ)

1. m-file은 무엇인가?

m-file은 매크로라고 할 수 있어요. 어떤 기능을 저장했다가, 단순한 실행만으로 같은 작업을 반복하게 하는거죠.
 

흐흐 여기 한번 마법사가 되는방법 2라는 게임을 가지고 설명을 해보도록 할까요. 

 자 한번 도시락 만들기 마법을 배워보자ㅋ 

 재료를 구해야겠지?ㅋ 

 이 재료들을 말리던 갈던 끓이던 여튼 뭐 알아서 잘 해봐 그럼 도시락 하나가 나와.  

네, 요런 과정을 거쳐서 도시락 한개를 뽑아내는 건데요.
이렇게 뭐 알아서 말리고 끓이고 갈고 막 이런걸 매번 해야되면.... 차라리 도시락을 하나 싸는게 낫겠죠? 
하지만, 이렇게 하고나면 바로 도시락 마법이 생기게 되는데!!! 

 

짜잔, 도시락 마법이 생기면 재료만 있다면 언제든지 실행시켜서 도시락을 만들어 낼 수 있습니다.
미리 위에서 말리고 갈고 끓이고 했던 과정을 레시피로 만들어서, 뚝딱 실행만 하면 그 결과가 나오는 거죠. 

요런 마법 레시피를 m-file 이라고 생각하시면 되는데요.
재료(입력변수)만 있다면 m-file을 실행시켜서 그 결과를 뽑아낼 수 있어요. 

여러분도 이미 이런 m-file을 많이 사용해오셨을 겁니다. 저도 앞전 강의에서 무지 많이 썼었고요.
바로 이때까지 써왔던 plot, plot3, mesh, surf, patch, tilte, subplot .... 등등이 다 이런 m-file이었던 겁니다.
한번 예전에 했던 과정을 떠올려 볼까요.

난 x,y값 지정했을 뿐이고, plot을 쳤을 뿐이고, 그래프가 나왔을 뿐이고, 너무 간단해서 신기할 뿐이고!
요렇게 한거라곤 x,y라는 재료(?)를 가져다가 plot이란 레시피를 썼을 뿐인데
너무나도 멋진 그래프가 순식간에 그려지게 됩니다. 

요런 plot과 같은 레시피가 바로 m-file이란 거죠 쿠쿠 

이제 이런 m-file을 한번 직접 만들어 봅시다. 

여러분만의 고유한 마법을 만들어 보는거죠 후후  

2. m-file을 실행시켜보자.

자 m-file을 한번 실행시켜 봅시다.

File -> new- > M-file을 클릭합니다. 

  

자 그럼 요렇게 백색의 간달프 희멀건한 창이 뜨게 되는데요.
꼭 도화지 같습니다.

 

여기다가 하고 싶은 작업을 적고 저장하시면 되는데요.

흠, 저는 1~10까지 숫자가 나오도록 한번 해볼께요.

 

  

그리고 저장을 합니다. 전 oneten이란 이름으로 저장했어요. 

 

자 요걸 저장하고, 다시 매트랩 화면으로 돌아갑니다. 

current directory를 보시면 oneten이란 m-file이 생겨 있는 걸 확인할 수 있는데요. 

요걸 실행을 시키면 1~10이 나오겠죠?ㅋ
실행은 파일 이름을 치시면 됩니다.
요렇게 말이죠. 

 

 

자 숫자가 1~10까지 출력이 됩니다.
(한 화면에 다 나오지는 않았네요ㅠㅠ ) 
또 oneten을 치시면 또 1~10까지가 출력이 됩니다. 

대충 m-file의 사용법은 아시겠죠?ㅎ 
요렇게 작업을 미리 m-file에 적어 넣고,
m-file의 이름을 치는 것으로!!
결과가 뜨게 됩니다!! 

 

3. m-file을 이용한 명령어 만들기

자, 위에 했던 건 m-file이긴 하지만.. 하지만 plot과 같은 명령어는 아니죠. 
plot같은 명령어는 입력값을 가져다가 뭔가의 출력값을 내보내는 구조입니다. 즉 함수죠. 

요런 함수를 만드는게 바로 프로그래밍이라 할 수 있겠죠. 

자 그럼, plot과 같은 명령어를 m-file로 만드는 방법은 어떻게 하느냐! 

바로 이런 구조를 가집니다.

-------------------------------------------
function 출력변수 = 함수이름(입력변수)

출력변수= 궁시렁 궁시렁
--------------------------------------------
m-file이름은 함수 이름으로 저장할 것.

  

백문이 불여 일견.
예제로 함수를 하나 만들어 볼게요. 

흠 요즘 뜨고 있는 허경영 씨로 함수를 한번 만들어 볼게요.
 

입력이 "허" 로 들어가면
Let me introduce

입력이 "경"으로 들어가면
허경영

입력이 "영"으로 들어가면
Right now!

다른 변수가 들어가면
허경영을 입력해 

가 출력되는 함수를 한번 만들어 볼게요.....제가 뭐 딱히 허경영씨랑 친분이 있다거나 그런건 아닙니다.

흠 함수이름은 Huh로 해볼께요ㅋㅋ 

 

함수이름은 Huh로 지정했습니다.

이제 실행창에서 실행을 한번 해볼까요? ㅋ

내 앙탈지게 싫어라고 입력하면 허경영을 입력하라는 인정사정없는 답변이 나오게 됩니다ㅋ

여기서는 ans라고 출력이 되는데요. 그 이유는 명령어를 실행시키면  

출력값이 나오도록 m-file에서 지정했기 때문입니다. 

-----------------------------------------------
function 출력변수 = 함수이름(입력변수)
-----------------------------------------------

그러니깐, 그 출력값을 어떤 데이터로 저장하고 싶으시면 

데이터=함수이름(입력변수) 로 치시면 데이터에 함수값의 출력변수가 저장되게 되는거죠.

예를 들어 보이자면 

 

 

이렇게 data=Huh('허') 라고 했더니

출력값이 data라는 데이터에 저장이 된거죠. 

네, 일단 m-file에 대한 소개는 여기까지로 마치도록 하겠습니다.
 

위에서 if문과 sprintf 같은 함수들이 프로그래밍을 할때 잠시 나왔었는데요.

잘 모르신다고 너무 걱정하지는 마세요ㅋ 오늘은 그냥 이렇게 m-file이 쓰이는 거다. 라는걸 알기 위한데 목적이 있는겁니다!!! 

 

요런 함수들은 m-file을 가지고 프로그래밍(즉, 코딩)을 할 때 필수적으로 쓰이는데요.

다음시간부터는 요렇게 m-file을 짤 때 필요한 함수들을 하나씩 배워보도록 할께요.

한 3강 정도면 충분할 것 같습니다.

 

여러분도 이제 프로그래밍의 고수가 되는거죠 후후후후후후후후 크크크크크

 







Tip!!!
function 함수이름(입력변수) 형태로 m-file을 작성하시면
출력변수가 나오지 않으면서, 입력변수에 따라 결과가 나타나는 함수를 만들 수 있어요.
즉, 처음에 그냥 m-file만 만든거랑, 출력이 나오는 함수를 만든거랑의 중간이라고 할까요?
여튼 가능하답니다ㅋ