본문 바로가기

프로그래밍/Matlab3

넘파이 데이터를 매트랩에서 시각화하기 파이썬에서 matplotlib 라이브러리를 사용하면 데이터를 다양하게 시각화 할 수 있지만, 오랜 세월 매트랩(Matlab)을 사용하다 보니 익숙치가 않다. 그래서 편한 길을 쫓아 파이썬 프로그래밍으로 만든 결과 데이터를 매트랩으로 옮겨서 그래프로 그리곤 한다. 간단한 예제를 통해서 이 과정을 설명하겠다. 먼저 파이썬에서 넘파이 데이터를 생성하고 이를 딕셔너리로 변환한다. 그리고 scipy.io의 savemat을 이용하여 이 값을 매트랩의 mat 파일로 저장한다. 다음은 \(t \in [0, 10]\) 구간에서 \(y=\sin⁡(2\pi t)\) 를 계산하여 result.mat 파일로 저장하는 코드다. 시간은 t 로, 결과는 y 로 key를 설정했다. # savemat # coded by st.water.. 2024. 4. 7.
Matlab ODE에 추가 파라미터 전달 및 이벤트 설정하기 일반적으로 매트랩(Matlab)에서 수치적분하고자 하는 ODE 함수의 구조는 다음과 같다. dxdt = odefun(t,x) 여기서 odefun은 함수의 이름, t 는 시간, x 는 함수의 상태변수다. 함수에서 t 를 계산에 사용하지 않더라도 t 와 x 를 모두 입력값으로 받아야 한다. 그런데 만약 t 와 x 이외에 파라미터가 더 필요하다면 어떻게 해야 할까. 예를 들면, 다음과 같은 함수가 있다. \[ \begin{align} \dot{\mathbf{x}}(t) &= \begin{bmatrix} \dot{x} \\ \dot{y} \\ \dot{v}_x \\ \dot{v}_y \end{bmatrix} = \mathbf{f}(\mathbf{x}(t)) \tag{1} \\ \\ &= \begin{bmatri.. 2023. 7. 9.
Simulink Constant 블록에서 Matlab 구조체를 사용하는 방법 매트랩 구조체형 배열(struc)을 사용하면 관련 데이터를 그룹화하여 동일한 변수 이름으로 관리할 수 있어서 편리하다. 예를 들면 항공기 날개에 관련된 데이터를 다음과 같이 wing이라는 이름으로 관리할 수 있다. wing.b=30; % wing span (ft) wing.S=300; % wing area (ft^2) wing.cbar=11.32;% mean aerodynamic chord (ft) 하지만 시뮬링크에서 Constant 블록의 상수값을 구조체 wing으로 설정하고 사용하면 오류가 생긴다. 예를 들면 wing을 입력으로 받아서 이중 wing.S 만을 출력시키는 간단한 시뮬링크 모델을 만들고, function a = test(wing) a = wing.S; 실행하면 다음과 같은 오류 메시지가 .. 2023. 4. 29.