본문 바로가기

Software/MATLAB

EVAL (excutive string function) 함수 사용하기

만약 필요에 의해서

 

 

와 같이 코딩해야한다고 생각하자.

물론 예제니까 간단하게 잡았지만, 100번째정도까지만 가도 기절할 지도 모를일이다

물론 구조체나 배열 등등을 적절히 쓰면 잘 해결되는 경우도 있다.

그러나 어쩔 수 없는 경우라는 것도 있고, 또 속도에 큰 문제가 없다면

'eval '명령어로 간단히 해결할 방법이 있는데, 머리를 싸매고 앉아있을 필요는 없지 않겠나...

 

먼저 이해해야할 명령어가

 

num2str 이라는 명령어다. 이 명령어는 당연히 발음나는데로 읽어도 그 뜻을 대강 짐작할 수 있는데

 

num2str(i)

 


이렇게 입력하면 숫자를 문자처럼 인식하게 하는 명령어다

 

이제 아래 코드를 보자.

 

 

 

 아까 의도가 A1어쩌고 부터 A9어쩌고까지 직접 코드를 편집하기는 꽤나 귀찮다는데서 출발했다.

이제 eval 명령어를 직접 코딩했는데...

 

for 문 이야 당연히 1부터 9까지 돌아줘야 할 것이고, 곳곳에 보이는

 

 

' num2str(i) '

 

 

이 명령어가 1-9라는 것을 인식하게 해준다. 이때 조심해야할 것은 MATLAB 6버젼 이후부터는 num2str(i) 앞 뒤로 꼭 한 칸씩 띄어주어야 한다.

  

 

eval(['             '])

 

 

이것이 eval의 기본 형이며, 그 안에 문장을 넣어주면 된다. 본래  "eval"명령은 위의 형식에서 ' ' 사이에 들어가 있는 문장을 MATLAB Command Window에서 입력한것처럼 실행해 주는 명령이다. 그러므로 ' num2str '이랑 적절히 만나서 수십번을 타이핑해야할지도 모르는 프로그램 코드를 간단히 줄여줄 수 있다.

 

아참,  Transpose A를 의미하는 MATLAB 명령어인 A' 같이 "  '  " 기호를 eval안에서 쓰고 싶다면 연달아 두면 쓰면 된다.

 

예전에 가끔은 C 코드를 짤때, 숫자만 바뀌면서 꽤 길게 프로그램을 짜야하는 경우

MATLAB에서 for 문과 저 eval 명령어로 간단하게 C 코드를 display  하게 해서

긁어서 사용했던적이 있었는데... 그럴때도 꽤나 유용했다.(뭐 본래 목적은 아니지만^^)

이 글은 제 이전 홈페이지에 2008년 6월 16일 올렸던 내용입니다.
티스토리로 이전하면서 몇몇 글들을 이렇게 옮기고 있습니다.


반응형