본문 바로가기

simulink18

Simulink shift register generation function Simulink 를 사용하면서 shift register 가 필요한 경우가 종종 있는데 개인적으로는 unit delay 를 사용하여 shift register 를 구성하곤 합니다. 그런데 shift register 의 사이즈가 얼마 안된다면 그냥 노가다로도 만들수 있지만 그 사이즈가 커 진다면 이렇게 일일이 만들어서 사용하는것이 힘들더군요. 그래서 오늘은 unit delay 를 사용한 shift register 를 자동으로 만들어주는 스크립트를 소개하려 합니다. shiftRegisterGeneration 함수를 만들었고 코드는 아래와 같습니다. 아래 명령어는 shiftRegisterGeneration 함수를 사용하여 15 사이즈의 shift register 를 만드는 명령어 입니다. MATLAB Comm.. 2018. 12. 23.
MATLAB Simulink configuration 스크립트 사용방법 MATLAB 은 일종의 소프트웨어 플랫폼이라고 볼 수가 있어서 매트랩 툴박스들은 MATLAB 위에서만 실행됩니다. 따라서 시뮬링크를 사용한다라고 해도 매트랩을 잘 다루어야 시뮬링크를 조금 더 효율적으로 사용할 수 있습니다. 요즘 저는 많은 차량용 로직들을 Simulink Stateflow 로 설계하고 Embedded Coder 를 사용하여 C 코드를 생성해서 개발 보드에 탑재하는 업무를 하고 있습니다. Simulink 를 사용하기 위해서는 샘플레이트를 비롯하여 다양한 configuration 을 하게 되고~ Embedded Coder 를 사용할 때 역시도 마찬가지로 설정 할 것들이 많이 있습니다. 이런 설정들은 그때그때 달라지기도 하지만 사용하는 MCU 가 동일하다면 그리 크게 달라지지는 않습니다. 따라.. 2018. 12. 22.
MATLAB Simulink 시작하기 요즘 자동차 분야에서 제어기를 설계할때 MATLAB 의 Simulink 제품을 많이들 사용합니다. 제어기 사양서는 state machine 으로 구성되기 때문에 주로 Stateflow 를 사용하여 설계되고 Embedded Coder 등을 사용하면 시뮬레이션 후에 코드 생성까지 되기 때문에 기존에 시뮬레이션 후 C 코드를 다시 작성하고 하는 번거로움을 줄일 수 있습니다. 저도 회사에서 과제를 하면서 MATLAB 으로 알고리즘 시뮬레이션을 하고 Embedded Coder 를 사용하여 C 코드를 생성해서 사용한 경험이 있고~ 나름 신뢰할만한 코드가 나와서 편리하다는 생각을 많이 합니다. 그래서 일단 오늘은 Simulink 를 시작하는 방법에 대해 소개하려 합니다. 1. Simulink 실행 Simulink 를.. 2018. 11. 16.
MATLAB 공부 자료 많은 공학도 분들이 MATLAB 의 사용법에 대해서 공부하실 거라고 생각합니다. MATLAB 은 아시는 바와 같이 매우 비싼 툴이고 업데이트를 위한 라이센스 유지비용 역시도 1년에 20~30 % 정도를 내는 걸로 알고 있습니다. 저는 학교에서 MATLAB 수업 과목의 조교를 했었고~ 이런 경험을 바탕으로 MATLAB 사용 방법을 소개하기 위해서 본 블로그를 만들었습니다. 개인적으로도 회사에서 MATLAB 을 사용한 업무를 하지만, 일반적으로 학생들이 학교에서 배우는 MATLAB 을 사용한 알고리즘 개발까지는 사실 MATLAB을 사용할 필요가 없다고 생각합니다. 제 블로그에서 소개했었던 Python, Scilab, Octave 를 비롯해서 매틀랩을 대신하여 알고리즘을 개발해 볼 수 있는 오픈소스 또는 프리.. 2018. 7. 18.
블로그 운영 관련 도움되는 사이트들 20대 후반에 ‘남성의 MATLAB LOG’ 블로그를 만들었습니까~ 벌써 제 블로그도 8년 이상이 되었습니다. 뭐 특별한 목적이 있었다기보다는 그 당시에 제가 매우 좋아했던 MATLAB 이라는 프로그램의 사용 방법에 대해서 기록하기 위한 용도로 만들었습니다. 그래서 그런지 저는 회사에서도 MATLAB 을 사용한 개발을 많이 해 왔던 것 같습니다. 가장 최근에 다녔던 회사는 자동차 부품 개발 관련 회사 였고 MBD(Model Based Design) 일을 했었습니다. Simulink Stateflow 제품을 많이 사용하였었고 타겟 보드에 올리기 위해서 Embedded Coder 를 사용하여 C 코드 생성을 했었습니다. 언제인지 잘은 모르겠지만 블로그를 운영하면서 수익을 낼 수 있다라는 것을 알게 되었습니다.. 2018. 3. 15.
Python 에서 matplotlib 사용하여 그래프 그리기 요즘은 굉장히 다양한 오픈소스 프로그램들이 있습니다. 수치 분석에 주로 MATLAB 을 사용하곤 했지만 요즘은 MATLAB 을 꼭 써야 하는 것들이 아니라면 Python 을 주로 사용하고 있습니다. 회사에서는 차량용 MBD(Model Based Development) 개발을 위해 Simulink 환경에서 Stateflow 툴박스를 주로 활용하는데 모델링의 일부는 Stateflow API 를 사용하여 MATLAB 스크립트를 통해 자동으로 모델을 구성하는 작업을 하곤 합니다. 모델링 구성후에는 당연히 simulation 을 수행하고 simulation 을 마치면 Embedded Coder 를 사용하여 MATLAB 알고리즘/Simulink 모델에 대해 C 코드 생성후 타겟 보드에서 테스트를 진행 합니다. 위와.. 2018. 1. 18.
Simulink Signal Builder 사용시 Data Type Conversion 생성하기 Simulink 에서 테스트 진행시 Signal Builder 를 사용하여 test case 를 만들곤 하는데 signal builder 의 출력은 double 값으로 나오기 때문에 해당 출력을 입력으로 사용하는 블록과 데이터 타입을 맞춰주는 과정이 필요 합니다. 이렇게 데이터 타입을 맞춰주기 위해 Simulink 에서는 Data Type Conversion 블록을 사용하는데 Signal 이 여러 개가 되는 경우 일일이 Data Type Conversion 블록을 붙여주는 것도 고된 잡업이더군요. 그래서 여러개의 Data Type Conversion 블록을 자동으로 생성하도록 하는 MATLAB 코드를 만들어 봤습니다. 코드는 다음과 같습니다. dataTypeConversionMake 함수를 사용하기 위해.. 2017. 7. 14.
Simulink slx 파일을 텍스트 에디터에서 열어보기 아래 포스팅에서도 소개한적이 있지만 요즘 Simulink 에서는 MDL 확장자 대신에 SLX 를 주로 사용합니다. http://iamaman.tistory.com/1822 MDL 파일의 경우 에디터에서 열어서 확인 해 볼 수가 있었는데 SLX 파일의 경우 에디터에서 열어 볼 수가 없더군요. 그래서 오늘은 SLX 파일을 텍스트 에디터에서 확인 하는 방법에 대해 소개해 보려 합니다. SLX 파일은 JAR 와 같이 아카이브 파일 형태라고 합니다. test.slx 파일이 잇다면 파일의 확장자를 test.zip 으로 변경합니다. 다음과 같은 메시지가 나오는데 예를 클릭합니다. test.zip 파일을 압축 프로그램을 사용하여 압축 해제 합니다. 저는 반디집을 사용했습니다. 압축을 해제 하고 폴더에 들어가 보면 아래.. 2017. 2. 25.
MATLAB 현재 폴더 안의 모든 Simulink MDL 파일 SLX 로 변경하기 MATLAB 은 1 년에 두 번 업데이트를 진행하고 이에 따라 a, b 버전을 release 합니다. 2016 년에는 2016a, 2016b 버전이 나왔죠. 2012a 버전부터 Simulink 모델 파일의 확장자가 MDL 에서 SLX 형태로 변경 됐습니다. 최신 버전에서는 하위 호환을 위해 MDL, SLX 를 둘 다 지원하고 있습니다. 그냥 MDL 파일을 그대로 사용해도 되지만 기왕이면 최신 버전으로 사용하기 위해 저는 과거에 만들었던 MDL 파일을 SLX 로 변환해서 사용하고 있습니다. 단순히 MDL 확장자를 SLX 로 변경하는건 탐색기를 통해서도 가능 하겠지만 이렇게 변환한 경우에는 해당 모델 파일이 정상적으로 동작하지 않습니다. 단순히 확장자만 바뀐게 아니기 때문이죠. MDL 파일을 SLX 로 변경.. 2016. 10. 26.
MATLAB Simulink 블록의 존재 유무를 확인 하는 방법 Simulink 는 많은 경우 MATLAB script 를 사용하여 자동화를 할 수가 있습니다. 당연히 MATLAB 코딩을 잘해야 Simulink를 자유자재로 다룰 수 있을 겁니다. 물론 그냥 노가다로 Simulink를 구현 할 수도 있지만 이렇게 하면 무수한 클릭질에 Simulink 설계가 정말 싫어 질 겁니다. 암튼 오늘은 Simulink 블록의 존재 유무를 MATLAB Command Window 에서 확인 하는 방법에 대해 소개 하려 합니다. Simulink 블록의 존재 유무를 확인하기 위해서는 getSimulinkBlockHandle() 함수를 사용하면 됩니다. 함수의 이름을 보면 알겠지만 Simulink 블록의 handle 을 구하는 함수 입니다. getSimulinkBlockHandle() 함.. 2016. 10. 20.
Simulink scope 한번에 다 닫는 명령어 Simulink 를 사용하다 보면 여러 Scope 를 여는 경우가 종 종 있습니다. 이러한 경우 한번에 Scope 를 다 닫는 명령어가 있나 해서 찾아보니 아래 주소에 그 방법이 나와 있더군요. https://kr.mathworks.com/matlabcentral/answers/94334-how-can-i-programmatically-close-simulink-scope-windows-in-simulink-7-1-r2008a 위 주소의 코드를 활용하여 아래와 같이 Simulink Scope 를 다 닫는 함수를 만들어서 사용한다면 편리 할 것 같네요. function scopeCloseAll shh = get(0,'ShowHiddenHandles'); set(0,'ShowHiddenHandles','On.. 2016. 8. 11.
DRAKON editor 소개 오늘은 좀 독특한 언어에 대해 소개해 드리려 합니다. 해당 언어의 이름은 DRAKON editor 라고 하고 홈페이지는 아래 주소와 같습니다. http://drakon-editor.sourceforge.net/ DRAKON editor는 아래 그림과 같이 그래프를 사용해서 코딩을 하는 툴이라 할 수 있습니다. 홈페이지에서도 visual language 라고 되어 있네요. 홈페이지에는 러시아 우주 프로그램에 사용되었다고 하는데~ 요즘 자동차 쪽에서 이슈인 MBD(Model Based Design)와 비슷한 컨셉으로 보였습니다. 그런데 약간 사용을 해보니 완전 그렇지는 않은 게 MBD의 경우 MATLAB Simulink 등을 통해 그래프를 그리면 코드가 나오는 형태임에 반해 DRAKON editor 는 그래.. 2015. 10. 5.
LMS Test Using Simulink 아래 포스팅에서 간단하게 LMS 알고리즘에 대해 소개한 적이 있습니다. http://iamaman.tistory.com/221 오늘은 하드를 뒤지다 보니 예전에 한 LMS 테스트 자료가 있어서 공개하려 합니다. 이번에는 Simulink 를 사용한 자료이며 보시면 아시겠지만 역시 LMS 는 참 간단하면서도 효율적인 알고리즘이라는 생각이 드네요. FIR 필터 identification 을 수행했으며 필터 탭은 [0.5 2 1 0.3 0.1 0.05 0 0 0 ] 로 설정했습니다. 위 필터를 identification 하기 위해 LMS 필터 탭은 13 탭을 사용했고 Gain은 보시다시피 0.04 로 줬습니다. 잡음이 안 들어갔으니 뭐…. 잘 될 수 밖에 없죠~ 수식이나 코드로 보는 것 보다는 훨씬 쉽게 이해 .. 2015. 6. 14.
무료 클라우드 MATLAB, freematlab 요즘 MATLAB 많이들 사용하시나요? 산업계뿐만 아니라 학교에서도 이 비싼 MATLAB 을 가르치니 학생들도 MATLAB 을 많이들 사용하는 것 같네요. 아래 tiobe 사이트에서도 비싼 툴임에도 불구하고 MATLAB 이 14위에 랭크 되어 있는 걸 보면 MATLAB 이 요즘 잘 나가고 있다는 건 확실 한 듯 하네요. 그래서 일까~ 아래 포스팅에도 소개 했지만 MATLAB 과 유사한 오픈 소스 프로그램들도 굉장히 많이 있습니다. 사실 스크립트만 활용한다면 MATLAB 을 굳이 살 필요는 없다는 생각이 드네요. http://iamaman.tistory.com/639 http://iamaman.tistory.com/1427 그런데 요즘은 MBD(Model Based Design) 과 같은 이슈들로 Simu.. 2015. 6. 7.
MATLAB Code를 사용하여 Simulink model 구성하기 Simulink 사용시 보통 마우스를 사용하여 모델을 구성하곤 합니다. 하지만 이런 GUI 방식은 자동화를 위해서는 그리 좋은 방법은 아닙니다. 대량의 시스템 구성시 GUI 을 사용한 구성방식은 한없는 노가다일 수 있습니다. 단순 반복적인 작업들은 당연히 자동화를 해야 하고 이를 위해서는 Script 가 필수라고 할 수 있죠. simulink 를 구성하기 위한 MATLAB 명령어들로는 add_block, add_line, new_system, open_system, delete_line, delete_block, replace_block, set_param 와 같은 명령어들이 있습니다. new_system() 을 사용하여 Simulink 블록을 구성하고 open_system 명령어를 사용하여 해당 파일을.. 2015. 3. 29.
MATLAB Communication Systems Reference Curves MATLAB BER simulation 관련 검색을 하다가 아래 주소의 글을 발견했습니다. http://www.mathworks.com/matlabcentral/fileexchange/22316-communication-systems-reference-curves 위 파일에서 설명하는 내용은 아래와 같습니다. - PSK and QAM over AWGN Channel (BER and SER) - BPSK over Rayleigh fading channel (BER) - Convolutional Coded BPSK over AWGN (BER) 일단 BER 이나 SER 시뮬레이션을 어떻게 해야 할 지 모르는 분들이 보기에 참 좋은 코드라는 생각이 들더군요. 위 주소에 들어가서 아래 그림과 같이 Download.. 2014. 4. 29.
Simulink From/To workspace 블록 사용하기 Simulink 에서 소스데이터를 발생시키는 방법은 다양하게 있겠지만, 덤프 받은 데이터 등을 사용할 때 From/To workspace 블록을 주로 사용합니다. From workspace 블록은 말 그대로 workspace 상의 변수를 simulink 상으로 불러 오는 것을 말하고 ~ To workspace블록은 반대로 Simulink 상에서 MATLAB workspace 로 값을 내보내는 것을 말하죠~ 아래 예는 간단하게 Fixed step solver 에서 간단하게 Sin, cosine 값을 읽어 들여서 두 배 해서 a 라는 변수로 내보내는 예인데요. From Workspace 창을 열어서 읽어보면 아시겠지만, 1차원 데이터에 대해서는 matrix 형태로 읽어 들여도 되지만, Multi-diment.. 2012. 5. 28.
Simulink Algebraic Loop Simulink 를 사용하면서 종종 Algebraic Loop Error를 만나게 되는데요. 오늘은 이 Algebraic Loop에 대해 알아보려고 합니다. Algebraic Loop 에 대해 이해하기 위해서는 Simulink 의 Direct feedthrough 에 대한 이해가 선행 되어야 합니다. Direct feedthrough 란 어떤 블록의 출력이 결정되는데 현재의 입력이 영향을 미치는 것을 의미합니다. 예를 들면 Add, Gain 과 같은 블록은 현재의 입력이 있어야 출력을 알 수가 있을 테니깐 이런 블록들이 바로 direct feedthrough 한 블록들인 것입니다. Algebraic Loop 란 이런 direct feedthrough 한 블록의 출력이 입력에 연결 되었을 때 발생을 합니다.. 2012. 2. 13.