03. Resources/Matlab & Simulink(5)
-
[Simulink 개발] Moving Average Filter (이동 평균 필터)
Moving Average Filter (이동 평균 필터) 다양한 이산 시간에서의 동적 시스템을 모델링하기 위해서 Simulink를 이용한다. 이번 포스팅에서는 저번에 Matlab에서 구현한 Moving Average Filter를 Simulink에 구현해보고 결과를 확인해볼 것이다. Moving Average Filter에 대한 설명은 이전 포스팅에 적어놨으니, 이번 포스팅에서는 이산 시간 시스템에 적용하기 위해 어떤 점들을 고려했는지 설명하겠다. 개인적으로, Simulink를 쓰더라도 블록으로 구현하기 복잡한 기능들은 Matlab function 블록으로 처리하는 것을 좋아한다. 블록으로 구현해서 가독성이 떨어져 이해하기 어려울 바에는 그냥 Matlab script로 보는 것이 기능을 이해하는 측면에..
2021.04.02 -
[Simulink 개발] 시뮬링크 센서 축 회전변환
function [x_rot, y_rot] = Rotation(x,y,theta, yaw_car, yaw_traf) In = [x, y, 1]'; yaw_car_deg = yaw_car/3.14 * 180; yaw_traf_deg = yaw_traf/3.14 * 180; yaw_deg = yaw_traf_deg-yaw_car_deg; RotMat = [[cosd(theta-yaw_deg) -sind(theta-yaw_deg) 0]; [sind(theta-yaw_deg) cosd(theta-yaw_deg) 0]; [0 0 1]]; Out = RotMat*In; x_rot = Out(1); y_rot = Out(2);
2021.03.30 -
[Simulink 개발] C언어로 작성된 코드를 Simulink에서 실행시키는 방법 (2)
Simulink에서 C 함수 실행시키는 법 (2) 1. 목적 이전 포스팅에서는 하나의 디렉토리에 있는 하나의 헤더파일과 하나의 소스파일을 시뮬링크에 넣어서 실행시켰다. 그런데, 프로젝트의 사이즈가 더 커지는 경우, 여러 폴더에 있는 파일들을 참조해서 이용하게 된다. 이러한 부분에 대한 정리를 위해 이 문서를 작성한다! 2. 테스트용 소스파일 작성 여러 함수를 여러 폴더에 나누어 작성하였다. 총 3개의 폴더에서 3개의 함수를 참조하여 최상위 디렉토리에서 복합적인 연산을 처리한 결과를 출력으로 내준다. 작성한 함수 add subtract multiply 작성된 함수를 참조하여 복합적인 연산을 처리하는 함수 complexCalc 위의 함수들은 아래의 디렉터리 구조에 맞게 위치한다. 각각의 파일들은 아래와 같이..
2020.08.19 -
[Simulink 개발] C언어로 작성된 코드를 Simulink에서 실행시키는 방법 (1)
Simulink에서 C 함수 실행시키는 법 (1) 1. 목적 C언어로 개발된 프로젝트를 simulink에서 실행시키려면 S-function을 만들어야 된다고 하는데 그냥 C를 쓸 수 있는 방법은 없을까 찾아보다가 예제파일을 발견했다. slexCCallerExample % 시뮬링크에서 C 함수를 C Caller 함수로 불러와 이용하는 예제 파일 예제 파일을 읽어보고 내가 원하는 함수를 이용하는 방법을 테스트하면서, 설정해야하는 조건들이 여기저기에 있어서 정리를 하려고 이 문서를 작성한다! 2. 테스트용 소스파일 작성 두 입력을 받아서 간단하게 더해주는 함수를 작성했다. 소스파일 // Test.c #include "Test.h" double add(double u1, double u2) // 두 입력을 받아..
2020.08.19 -
[Matlab 개발] Moving Average Filter (이동 평균 필터)
Moving average filter (이동 평균 필터) 센서의 노이즈를 제거할 때 많이 이용되는 필터 특정 윈도우 사이즈를 정해두고, 해당 윈도우 만큼의 데이터를 평균내어 현재 값으로 이용하는 필터 프로그램에서 제공해주는 센서의 데이터가 너무 노이즈가 많이 껴서, 이를 처리하는 방법을 찾아보던 중 이 필터가 노이즈 처리하기 좋고, 개발하기 쉽다는 후기를 봐서 직접 짜봤다. 윈도우 사이즈란 평균을 낼 데이터의 갯수를 의미한다. 몇 개의 데이터를 이용해서 특정 시점의 값을 만들어낼 것인지가 이 필터의 핵심이라고 생각된다. 윈도우 사이즈 만큼의 데이터가 주어지지 않았을 경우에는 현재까지 가지고 있는 데이터의 수 만큼을 이용하여 평균을 내도록 코드를 작성했다. 윈도우 사이즈 만큼의 데이터가 있다면, 필터링 ..
2020.06.25