https://github.com/gave92/matsim
Matlab/Simulink interface. Easily create Simulink models from a Matlab script.
https://github.com/gave92/matsim
matlab-script matlab-simulink
Last synced: 25 days ago
JSON representation
Matlab/Simulink interface. Easily create Simulink models from a Matlab script.
- Host: GitHub
- URL: https://github.com/gave92/matsim
- Owner: gave92
- License: mit
- Created: 2018-08-07T17:51:08.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2020-07-13T19:50:32.000Z (over 5 years ago)
- Last Synced: 2025-04-04T23:23:04.154Z (7 months ago)
- Topics: matlab-script, matlab-simulink
- Language: MATLAB
- Homepage: https://it.mathworks.com/matlabcentral/fileexchange/68436-matsim
- Size: 1.37 MB
- Stars: 19
- Watchers: 6
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
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](https://www.mathworks.com/) script. Matsim is a wrapper around the standard [simulink API](https://it.mathworks.com/help/simulink/ug/approach-modeling-programmatically.html) that makes building a simulink model programmatically much faster.
[](https://it.mathworks.com/matlabcentral/fileexchange/68436-matsim)  [](https://www.paypal.me/gave92)
## 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 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](https://www.graphviz.org/), which you need to install separately.
1. Install [GraphViz](https://www.graphviz.org/download/) and add it to the system PATH
2. Download and extract the Matsim package (from [File Exhange](https://it.mathworks.com/matlabcentral/fileexchange/68436-matsim) 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](https://github.com/gave92/Matsim/tree/master/tests) folder.
#### 1. Create or load a simulink model
```matlab
import matsim.library.* % Import Matsim package
sys = simulation.load('my_model'); % Create or load a model named 'my_model'
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
```matlab
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
```matlab
sys.layout() % Connect and layout the model
```
#### 4. Simulate the system
```matlab
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
```
© Copyright 2017 - 2019 by Marco Gavelli