본문 바로가기

Software/MATLAB

MATLAB/Simulink에서 If - else문 구현과 유용한 scope 세팅

요즘 제가 회사를 살짝 옮기고 나서[바로가기] 전투적으로 연구하고 또 문제점도 확인하고 이러저러한 여러가지 문제들을 고민하고 토론하고 또 정리하는 이런 과정들에 새삼 즐거움을 느낌니다. 와~ 내가 이걸 몰랐구나 하는 한숨도 짓고, 또 히히 저 이거 할 줄 알아요.. 라고 자랑도 하고 말이죠^^ 아무튼 이번에는 MATLAB Simulink 사용중에 은근히 찾아보게 되는 두가지를 이야기할려고 합니다.

MATLAB / Simulink에서 If - else 문 구현

사실 뭐 별거 아닙니다. 그냥 MATLAB의 Doc을 확인하면 그만입니다만.... 그냥 제 블로그를 사전 및 노트처럼 사용하는 저는 이게 없다는 것에 깜짝 놀래서 이렇게 업데이트를 하는 거랍니다.^^.

먼저 사용할 블럭은 위의 If, If Action Subsystem, Merge... 이렇게 세 개의 블럭입니다.

If 블럭은 위와 같이 조건을 정할 수 있구요 정해진 조건으로 나머지 블럭을 이용해서 구현하는데요

예제로 위와 같이 한번 구현해보겠습니다. 먼저 If문의 입력은 하나의 sine wave를 인가해서 양일때와 음일때 나줘서 그래프를 출력하는 것이지요. If문이 참일때와 거짓일 때 마다 실행할 블럭이 바로 If Action Subsystem이 됩니다. 그렇게 한 다음 Merge를 통해 합쳐주면 되죠. 혹시 눈치 채셨는지 모르지만, 위 simulink 블럭의 신호 흐름선이 교차될때 볼록하게 지나가죠?^^ 저렇게 하는 설정은...

Preference의 Editor Defaults에서 위와 같이 Line Hop을 선택해 주면 됩니다.^^

이제 시뮬레이션 하면 위와 긑은 scope를 통해 결과를 얻을 수 있습니다.

MATLAB / Simulink에서 Scope에 관한 유용한 설정

그러나 위 그림처럼 나온 scope의 결과는 리포트나 보고서를 쓸때 꽤 나쁩니다. 왜냐면 배경이 까망색인데다, legend도 없고 뭔가 안이쁘거든요^^.

scope의 설정을 눌러서 Limit data points to last를 없애버리구요.(이 글 주제와는 관계없지만^^)

위에 보이듯이 Legends를 클릭해주세요

그리고 그냥 실행하면 에러가 납니다. legend를 입력해 주어야하는데, 위 그림처럼 Scope로 들어가는 선을 더블클릭해서 label을 입력해주고 한번더 시뮬레이션을 돌리면 위 그림처럼 legend가 나타납니다.^^

그리고, 설정의 Style에 가서 배경(Figure color)과 축 배경(Axes colors)를 흰색으로 하고 글자를 검은색으로 하면 위 그림처럼 그냥 캡쳐해서 보고서나 리포트에 붙여넣어도 될 정도가 되죠^^

하나 더 하자면... 강조하고 싶은 Properties for line을 정해서 그 선의 속성을 지정할 수 있습니다.

그리고 캡쳐해주면 M-file로 workspace의 변수를 불러서 그린것보다는 쪼~금 안 이쁘지만 그래도 썩 괜찮은 결과 그래프를 얻을 수 있지요^^

요즘 팀웍~에 대해 고민합니다. 팀 리더는 꽤 힘든일이라는 것을 알고 있는 저는 그런 주제가 되지 못하는 것을 확실히 아는데도 불구하고 뭔가 쪼금씩 불협화음이 날때 그것을 해소하는 방법에 대해 고민을 하게 되네요. 왜냐하면 결국 제가 해야할 일이 효율적으로 빨리되기를 바라기 때문이지요. 또 더 큰 이유는 팀의 미션을 효율적이면서도 재미있게 완성하고 싶기도 하구요. 그러나 사람사는일이 뜻 대로 되지는 않나봅니다.  아무튼~~~~ 그러나 저러나 우리는 또 오늘 하루를 활기차게 시작해야지요^^ 우리 모두 화이팅입니다.^^

반응형