검색결과 리스트
글
만약 필요에 의해서
와 같이 코딩해야한다고 생각하자.
물론 예제니까 간단하게 잡았지만, 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 하게 해서
긁어서 사용했던적이 있었는데... 그럴때도 꽤나 유용했다.(뭐 본래 목적은 아니지만^^)
티스토리로 이전하면서 몇몇 글들을 이렇게 옮기고 있습니다.
'The Robot > Prog.Lang.' 카테고리의 다른 글
미분(차분) 및 적분하기 (8) | 2009/04/15 |
---|---|
sptool을 이용한 간단한 필터적용법 (filter) (6) | 2009/04/15 |
cftool 명령으로 Curve Fitting 간단히 하기 (2) | 2009/04/15 |
Figure에서 Legend사용시 아랫첨자 구현하기 (0) | 2009/04/15 |
Simulink에서 Annotation 사용하기 (4) | 2009/04/15 |
EVAL (excutive string function) 함수 사용하기 (8) | 2009/04/15 |
MATLAB에서 문자연산하기 (6) | 2009/04/15 |
Short Cuts 활용하기 (2) | 2009/04/15 |
똑같이 해보는데
Undefined function or variable 'B1'.
이런 오류가 나는데 왜 그런지 모르겠습니다.
이건 일종의 제안이었습니다. 이 자체로는 A1이나 B1부터 B9까지 선언되어있다는 가정하에.. 제일 위와같이 코드를 짤 필요가 있다면, eval로 간단히 해결할 수 있을거라는 이야기를 했을 뿐, 그 자체의 코드가 어떻게 동작한다는 것은 아닙니다^^
eval 함수에 대해 질문이 있습니다.
예를 들어
D=[D(i) , D(i+1)];
이런식으로 행렬안에 행렬을 넣고싶습니다.
그래서 제가 코드를 작성해 보았습니다.
k=2;
i=1;
c=1;
whlie c
data=[ 1 2 3 4 5];
eval([ 'D' num2srt(i) '= data' ';']);
if i==2
eval([ 'sumdata' ' = ' '[ D' num2str(i) ',' 'D' num2str(k) ']' ]);
end
i=i+1;
k=k+1;
end
에러가 나네요. 제가 문법을 어디에 잘못한건지
아무리 찾아봐도 잘모르겠습니다.
조언해주시면 감사하겠습니다 꾸벅 ㅇ.ㅇ...
eval([ 'D' num2srt(i) '= data' ';']);를
eval([ 'D' num2srt(i) '= data;']);로 변경해보시기 바랍니다.
비슷한 다른부분도 그렇게 하시구요.
정말 감사합니다.
해결되었네요.
왜 저기에 ';'를 사용하면 안되는지 혹시
알수 있을까요??
;를 사용하면 안되는 것이 아니라 ' ' 위 사용에 문제가 있었던 겁니다. 빈 공백으로만 ' '를 둘 수 없습니다.
감사합니다.
많이 배우고 갑니다 ^^
날씨가 많이 추워졌습니다.
감기 조심하세요 ~
작은 도움이라도 되었다면 다행입니다.