# gave92 / Matsim

https://it.mathworks.com/matlabcentral/fileexchange/68436-matsim

Geek Repo

Github PK Tool

### Matsim

A sleek, intuitive interface for building Simulink models from a Matlab script.
Explore Matsim docs »

Report bug · Request feature

Matsim is a high level interface to create Simulink models from a Matlab script. Matsim is a wrapper around the standard simulink API that makes building a simulink model programmatically much faster.

## Key features

• Automatic layout (no need to specify block positions!)
Source script (.m)        Resulting model Notes
c = Constant(1) Create a Constant block with value 1
res = a+b Create an Add block and connect its inputs to blocks a and b
res = [a,b] Create an Mux block and connect its inputs to blocks a and b
res = Max(a,b) Create an MinMax block and connect its inputs to blocks a and b
res = 1 - u1./(u2.*u3) Create a group of simulink blocks that computes a complex expression
Scope(Gain(FromWorkspace('var'),'Gain',0.5)) Easily combine blocks

## Installation

The automatic layout feature relies on GraphViz, which you need to install separately.

1. Install GraphViz and add it to the system PATH
2. Download and extract the Matsim package (from File Exhange or from here)
3. Add Matsim folder (and subfolders) to the Matlab path

## Quick guide

Quick example to get started. For more check the tests folder.

import matsim.library.*                       % Import Matsim package

sys.setSolver('Ts',0.01,'DiscreteOnly',true)  % Set solver for the model
sys.clear()                                   % Delete all blocks
sys.show()                                    % Show the model

#### 2. Create blocks

Vx = FromWorkspace('V_x');                    % Add FromWorkspace and Constant blocks
Wr = FromWorkspace('W_r');
Rr = Constant(0.32);

slip = 1 - Vx./(Wr.*Rr);                      % Evaluate complex mathematical expression
sys.log(slip,'name','slip')                   % Log the output of the "slip" block

s = Scope(slip);                              % Create and open scope block
s.open()

#### 3. Connect and layout the model

sys.layout()                                  % Connect and layout the model

#### 4. Simulate the system

V_x = [0:0.1:10;linspace(5,20,101)]';         % Define input variables
W_r = [0:0.1:10;linspace(5,23,101)/0.32]';
simOut = sys.run('StopTime',10).Logs;         % Simulate the system