Skip to content

Matlab/Simulink interface. Easily create Simulink models from a Matlab script.

License

Notifications You must be signed in to change notification settings

electrojit/Matsim

Repository files navigation

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.

logodonate

Key features

  • Automatic layout (no need to specify block positions!)
  • Intuitive interface (you can "add", "subtract", "multiply", ... simulink blocks)
  • Extensible library (easily add new blocks from your custom libraries)
Source script (.m) Resulting modelNotes
c = Constant(1)Create a Constant block with value 1
res = a+bCreate 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'),'value',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.

1. Create or load a simulink model

sys =simulation.load('my_model'); % Create or load a model named 'my_model'sys.setSolver('Ts',0.01,'DiscreteOnly',true) % Set solver for the modelsys.clear() % Delete all blockssys.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 expressionsys.log(slip,'slip') % Log the output of the "slip" block s = Scope(slip); % Create and open scope blocks.open()

3. Connect and layout the model

simlayout(sys.handle) % 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('tstop',10).Logs; % Simulate the system

Known issues

The first time you execute a script you might get this error:

Attempt to modify 'simulink' which is a locked (read-only) library

Keep calm and execute the script again.

© Copyright 2017 - 2018 by Marco Gavelli

About

Matlab/Simulink interface. Easily create Simulink models from a Matlab script.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • MATLAB99.9%
  • Batchfile0.1%