본문으로 바로가기

 오늘도 그냥 허덥한 MATLAB 팁하나 끄적거려 볼까합니다^^.
 보통 MATLAB의 Simulink를 사용한다면 당연히 Scope는 필수로 사용하게 되겠죠. 아마 가장 사용빈도가 높은 블럭중 하나일텐데요. 예네가 까망 바탕화면이라 이런 프리젠테이션이나 프린터로 출력할때 난감한 상황이 가끔생기지요. 물론 어떤분들은 간단히 그래픽툴로 간단히 반전시키기도 하시고, 또 Workspace 블럭으로 데이터를 저장하기도 하는데요.
 Workspace블럭을 사용하지 않아도 Scope에서 간단히 Workspace로 저장할 수 있습니다. 아... 미리 말씀드리지만.. 뭐 월래 팁들이라는게 그런거지만 꼭 사용해야한다 뭐 그런건 아닙니다. 그저 좀 편하다는거... 사실 가장 편한건 자기 손에 익은 방법이겠지만요...^^


위의 시뮬링크화일에서 Scope를 더블클릭해보면요.


저렇게 출력결과가 나오죠. 아까도 말했지만 저 까망바탕화면이 좀 거슬릴때가 있거든요. 혹은 그냥 출력데이터를 Workspace에 저장하고 싶기도 하겠죠. 그러면 위의 그림에서 프린터아이콘 옆에 보시된 서류철처럼 생긴 Parameters 아이콘을 클릭하세요


저렇게 뜨는데요. 상단의 Data history 탭을 클릭하시구요


아 저기 표시된건 Scope가 원래 데이터를 5000만 보여주는건데 시뮬레이션 시간이 길거나하면 저거 때문에 짤리거든요. 저걸 클릭해서 해제하시구요



그다음 Save data to workspace를 클릭하시면 됩니다. 그러면 활성화되는 두개의 옵션은 저장할 데이터의 이름과 format을 잡아줘야하는데, 그냥 Structure with time으로 두도록 하죠.



그러고 다시 시뮬레이션을 하면 ScopeData란 이름의 Structure가 Workspace에 저장되어 있습니다.


위에 보시다시피....^^ 저장할때 Structure로 저장했으니 저렇게 보이는데요. 그걸 더블클릭해보면...


위에서 처럼 time과 signals가 보입니다. time은 느낌그대로 시간축이구요. signals는 다시 structure로 되어있네요. 다시 더블클릭해보면


values가 보이네요. 물론 처음의 시뮬링크 화일을 보시면 알겠지만, Demux로 scope에 신호를 두개 줬거든요. 그러니 values도 2개의 열로 구성되어있음을 알 수 있습니다.

이걸 plot해보면

plot(ScopeData.time, ScopeData.signals.values)


위와 같이 호출하시면 되구요.


위와같이 나타납니다. 앗 grid는 다시 명령을 줘야겠지요^^ 전 보통 grid on 이라는 명령을 일일이 쳐주길 싫어해서, 2009/04/15 - [공학기초/MATLAB] - Short Cuts 활용하기에서 이야기 한데로 전 short cut에다가 grid on을 넣어두거든요^^


위에서 처럼요....^^ 근데... 이왕 초보스런 팁 이야기하는거니 더 초보스럽게 가면, 위에서처럼도 프리젠테이션이나 리포트에는 쓰질 않습니다.


Figure의 Edit에 Copy Figure를 누르고 내부그림만 사용을 하죠...



위에서 처럼요.... 뭐 타이틀이나 legend 등등은 뭐 알아서들 넣어서 구미에 맞게 요리하시면 되겠습니다....^^


댓글을 달아 주세요

  1. BlogIcon 영웅전쟁 2009.07.12 14:55

    이공계 새내기들의 최대 적, 미적분이라 ㅎㅎㅎㅎ
    미적분 만큼 재미있는 게 없는데 ㅎㅎㅎ
    왜 그럴까요 ...

    고맙습니다.
    편안한 휴일 되시길 바랍니다.

    • BlogIcon PinkWink 2009.07.12 15:26 신고

      ㅎ...응? 갑자기 왜 이공계의 적 미적분이라고 말씀하셨지? 하고 유심히보니 글 하단 제일 밑에 구글광고였군요...ㅎㅎㅎ^^ 더운여름입니다...건강 조심하세요^^

    • BlogIcon 영웅전쟁 2009.07.12 16:31

      티스토리 시작할때
      아들놈이 글보고 광고 1~2번 클릭하고
      오는게 예의라고 해서 그거 클릭하다 봤답니다. ㅎㅎ
      고맙습니다.
      남은 휴일 잘 보내시길 바랍니다.

    • BlogIcon PinkWink 2009.07.13 15:48 신고

      ㅎㅎ..좋은 예법을 ...ㅎㅎ
      휴일잘보내버렸지요...ㅎㅎ^^

  2. 공상 2010.07.21 01:06

    안녕하세요. 반갑습니다. 우연히 한번 들렸다가,
    너무 좋은 자료가 많은거 같아서 많이 들르기로
    결정한 초보 공대생입니다. 매트랩을 공부해보고
    싶은데, 참 ~~ 많네요. 많은 자료 감사합니다.^^^*
    자주 댓글 달겠습니다 크크ㅡ

  3. mijong 2011.06.17 22:19

    ㅎㅎ 여기서 인풋에요 sinwave말고 어떤 데이터 추출한거를 넣을려면 constant쓰는거 맞죠??
    그래서 해봣는데요 연속적인 값이 안나오네요 그러니까 a에다가 1;2;3;4;5;이렇게 넣으니까 각각따로 스코프에찍히네요 샘플링 타임이 0.01초인데 이걸 어떻게 설정해줘야 하는지 모르겟네요 그래야 연속적인 값이 나올텐데요 ,,,,

    • BlogIcon PinkWink 2011.06.19 08:36 신고

      그냥 constant를 쓰는게 아닙니다. 음.. 이름이 가물거리네요. source에서 보시면, workspace의 변수를 시뮬링크에 가져간다라는 블럭이 있습니다. 이걸 사용하면 행렬로 된 데이터를 시간간격에 맞게 소스로 사용할 수 있습니다.

  4. 강윤식 2012.10.01 15:52

    안녕하세요, simulink 를 공부하다가 찾게된 블로그라 며칠째 이것저것 많이 읽어보고 도움이 많이 되었습니다 ^^
    디바이스 마트도 어렸을적부터 이것저것 하나둘씩 사던 곳이었는데 블로거님과 관련된 곳이었다는걸 오늘 알았네요 ㅎㅎ;;; 각설하고 질문좀 하고 싶은데요, 제가 매틀랩을 지금 막 시작해서 정말 아는게 별로 없는데 시뮬링크랑 심메카닉스는 블록다이어그램을 써서 조금씩 따라 해 보고 있거든요, 지금 그래서 펜듈럼을 만들어 보고 여기 있는것처럼 출력을 해 보았는데, 궁금한것이... scope 로 출력한걸 work space 에서 엑셀파일처럼 수치들을 볼 수 있던데요, 여기서 위에 1,2,3,4,5,6 이런식으로 번호만 써있고, 이게 무엇을 나타내는지는 직접 계산 해 보거나 유추 하는 방법말고 각 나타내는 값을 숫자가 아니라 문자로 표시 되게 출력 할 수는 없나요? 아니면 숫자로 출력이 되더라도 각 숫자별로 어떤 값을 나타내는 것인지 알 수 있는 방법이 없는지 궁금하네요 ㅠ

    • BlogIcon PinkWink 2012.10.04 11:11 신고

      이 부분은 사용자의 손길이 좀 필요합니다.
      해당 데이터열에 인덱싱을 하시겠다는 이야기인데요.
      기본적으로 행렬개념으로 움직이는 MATLAB내부에서
      별도의 인덱싱을 하는 것은 그리 간편하지는 않습니다.
      꼭 하셔야한다면, 그나마 간단한것은
      데이터들을 Structure로 선언하셔서, 인덱스를 붙이는 것이 괜찮지 않을까합니다.
      비슷하게 제가 http://pinkwink.kr/354 에서 포스팅한 적이 있습니다.

  5. 사과주의 2015.12.15 02:34

    좋은 글 잘읽었습니다. 질문이 있습니다. value값의 열이 3개일 경우는 어떤 plot함수로 표현할수 있습니까.

  6. 제어쟁이 2016.11.19 15:17

    안녕하세요. 좋은 글덕분에 많이 지식 얻어갑니다. 근데 제가 똑같이 따라했는데, ScopeDate가 정의되지 않는 변수라고 뜹니다. 혹시 왜그런지 아시나요?

    • BlogIcon PinkWink 2016.11.21 12:13 신고

      워크스페이스에 ScopeData라는 변수가 나타났는지 확인하셔야합니다. 아마 없다면 Scope에서 Workspace로 저장이 되지 않은듯합니다.

  7. 하이하이 2018.03.07 09:02

    안녕하세요~ 좋은 지식 배워갑니다~
    그런데 한가지 여쭤볼게 있습니다!!
    스코프 설정에서 데이터 제한을 무제한으로 뒀는데도
    워크스페이스로 데이터를 뽑아낼때 데이터수가 53개 내지 71개 이렇게 한정됩니다
    혹시 워크스페이스로 보내는 데이터를 늘릴수 없나요???

    • BlogIcon PinkWink 2018.03.07 12:49 신고

      몇십개 수준이라면 이상하네요.. 그렇게 제한이 되지 않을겁니다.... 다른 원인을 보시죠.. 예를들면 애초에 데이터가 그 정도 밖에 없다든지 말이죠^^