Skill simulink-integrate-python-code
✓ VerificadoIntegre funções, classes e bibliotecas Python genéricas em modelos Simulink usando o bloco Python Code.
- Estrelas no GitHub
- 1.345
- Arquivos
- 5
- Último commit
- 11 de nov. de 2026
- Licença
- See LICENSE
- Ferramentas permitidas
- —
O que a skill simulink-integrate-python-code faz?
simulink-integrate-python-code é uma Agent Skill. Integre funções, classes e bibliotecas Python genéricas em modelos Simulink usando o bloco Python Code.
Resumo gerado a partir do SKILL.md da skill.
Sobre a skill simulink-integrate-python-code
Integrar funções, classes e bibliotecas Python genéricas em modelos Simulink é o que esta SKILL permite para engenheiros que utilizam o R2025a ou versões posteriores. Ela permite que desenvolvedores executem código Python em cada timestep de uma simulação usando o bloco Python Code. Isso é particularmente útil quando você precisa chamar bibliotecas de terceiros, como numpy ou scipy, diretamente dentro de um modelo, ou quando precisa manter um objeto Python ou um estado numérico persistente entre os passos da simulação.
Um agente deve carregar esta SKILL quando um usuário quiser executar uma lógica Python personalizada que não possa ser facilmente tratada pelos blocos padrão do MATLAB. Diferente dos blocos MATLAB Function que utilizam chamadas py.*, o bloco Python Code suporta os modos Rapid Accelerator e model reference Accelerator. O fluxo de trabalho envolve a criação de um modelo, a adição do bloco com parâmetros específicos como OutputCode e SampleTime, a definição de portas através da API SymbolSpec e, finalmente, a conexão dos componentes. Ele depende do interpretador Python compartilhado do MATLAB e suporta vários mapeamentos de tipos de dados, incluindo a conversão de buses do Simulink para dicionários Python.
O que um agente pode fazer com ela
- 1Executar bibliotecas Python em simulaçãoExecute uma função Python ou uma biblioteca de terceiros, como numpy ou scipy, de dentro de um modelo Simulink.
- 2Manter estado entre timestepsPersista um objeto Python ou um estado numérico durante toda a duração de uma simulação.
- 3Configurar portas do modelo via símbolosDefina portas de entrada e saída para um bloco Python usando a API SymbolSpec para configurar escopo e tipos de dados.
- 4Habilitar modos de simulação de alta velocidadeUtilize lógica Python em modelos que exijam os modos Rapid Accelerator ou model reference Accelerator.
Escrito a partir do SKILL.md da skill. Cada caso de uso é verificado com uma citação dele.
Como instalar a skill simulink-integrate-python-code
Cada comando copia a pasta da skill para o diretório de skills do cliente. Reinicie o cliente ou inicie uma nova sessão para carregá-la.Instalar a skill simulink-integrate-python-code no Claude Code
~/.claude/skills/simulink-integrate-python-code/SKILL.md
$ npx degit matlab/simulink-agentic-toolkit/skills-catalog/simulink-modeling/simulink-integrate-python-code ~/.claude/skills/simulink-integrate-python-codeInstalar a skill simulink-integrate-python-code no Claude Code (project)
.claude/skills/simulink-integrate-python-code/SKILL.md
$ npx degit matlab/simulink-agentic-toolkit/skills-catalog/simulink-modeling/simulink-integrate-python-code .claude/skills/simulink-integrate-python-codeInstalar a skill simulink-integrate-python-code no Codex
~/.agents/skills/simulink-integrate-python-code/SKILL.md
$ npx degit matlab/simulink-agentic-toolkit/skills-catalog/simulink-modeling/simulink-integrate-python-code ~/.agents/skills/simulink-integrate-python-codeInstalar a skill simulink-integrate-python-code no Gemini CLI
~/.gemini/skills/simulink-integrate-python-code/SKILL.md
$ npx degit matlab/simulink-agentic-toolkit/skills-catalog/simulink-modeling/simulink-integrate-python-code ~/.gemini/skills/simulink-integrate-python-codeInstalar a skill simulink-integrate-python-code no Claude.ai
npx degit matlab/simulink-agentic-toolkit/skills-catalog/simulink-modeling/simulink-integrate-python-code simulink-integrate-python-code && zip -r simulink-integrate-python-code.zip simulink-integrate-python-code # claude.ai → Customize → Skills → + → Create skill → Upload a skill → simulink-integrate-python-code.zip
Verificações automatizadas
Executado em 14 de nov. de 2026Relatório completo →Passou nas nossas verificações automáticas. Não é uma auditoria de segurança: leia os scripts antes de deixar um agente executá-los. Como as verificações funcionam
- Repositório de origem vinculado e acessívelmatlab/simulink-agentic-toolkit/skills-catalog/simulink-modeling/simulink-integrate-python-code is public and reachablegithub.com/matlab/simulink-agentic-toolkit/tree/HEAD/skills- ↗Passou
- Licença de código aberto (OSI)License named in a file, not as an SPDX idNão verificado
- Commit ou release no último anoLast commit 2026-11-11github.com/matlab/simulink-agentic-toolkit/commits ↗Passou
- Sem baixar e executar nem roubo de credenciais nos scriptsNo scripts in the skill folderPassou
- Sem instruções ocultas no SKILL.mdNo override phrases, safeguard switches, credential requests or hidden charactersgithub.com/matlab/simulink-agentic-toolkit/blob/HEAD/skills- ↗Passou
- Ferramentas pré-aprovadas são restritasNo pre-approved tools; the agent asks before using onegithub.com/matlab/simulink-agentic-toolkit/blob/HEAD/skills- ↗Passou
SKILL.md
Ver no GitHubPython Code Block Reference
Library path: simulink/User-Defined Functions/Python Code (R2025a+)
The Python Code block is the way to run Python inside a Simulink model. When a user asks to run a Python function, call a Python class, or use a Python library each timestep, this block is the tool — they may not name it explicitly.
Use it even when a MATLAB Function block or MATLAB System object calling py.*
(coder.extrinsic) would produce the same numbers: those cannot build in Rapid
Accelerator or model reference Accelerator mode, and they hide the Python behind
a MATLAB block. The Python Code block works in both modes.
It converts inputs to Python objects, builds a dict keyed by symbol name, calls
exec() with that dict as namespace, then converts outputs back to Simulink
types. The interpreter is shared with MATLAB py.* — same process, modules, and
state.
- Environment setup — pyenv, venvs, sys.path, module reloading
- Examples — verified programmatic patterns
- PythonObject patterns — class integration and persistent state
When to Use
- Running a line or block of Python each timestep inside a Simulink model
- Calling a Python function, class, or third-party library (numpy, scipy, …) from a model
- Persisting a Python object or numeric state across timesteps
- Passing a tunable parameter or a vector/matrix signal into Python
- The user describes the goal ("run my Python code in the model") without naming the block
When NOT to Use
- Pure MATLAB-side Python calls with no model involved — use
py.*directly, no block needed - MATLAB Function blocks or S-Functions — those are different mechanisms
- Running a pretrained deep-learning model (PyTorch/TensorFlow/ONNX) — use the Deep Learning Toolbox Model Predict blocks (PyTorch/TensorFlow/ONNX/Custom Python Model Predict), which run via Python co-execution and are configured through the block's model-file tabs, not
SymbolSpec - General Simulink model construction unrelated to Python — use the
building-simulink-modelsskill
Workflow
Build the block in this order — ports do not exist until symbols are defined, so wiring comes last. The build takes five tool calls; batch the operations in each call:
- Create and save the model (
evaluate_matlab_code) —model_editneeds an existing model file. - Add and configure all blocks — one
model_editcall. Put the code parameters (OutputCode,InitializeConditionsCode,TerminateCode,SampleTime) inadd_blockparams. The Python Code block is created with no ports. The response maps eachrefto itsblk_NID:[{"op":"add_block","type":"simulink/Sources/Constant","ref":"src","params":{"Value":"3"}},{"op":"add_block","type":"simulink/User-Defined Functions/Python Code","ref":"py","name":"Py","params":{"OutputCode":"y = u * 2.0","SampleTime":"1"}},{"op":"add_block","type":"simulink/Sinks/Out1","ref":"out"}] - Define symbols — one
evaluate_matlab_codecall; this creates the ports.SymbolSpecis a read-only handle reached only throughget_param(blk,'SymbolSpec'), andmodel_editcannot configure symbols — this is the one step that usesget_paramdirectly. Callss.addSymbol(...)and set each symbol'sScope/Type/Sizein place. - Wire — one
model_editcall using the returned IDs:[{"op":"connect","target":"blk_1.y1 -> blk_2.u1"},{"op":"connect","target":"blk_2.y1 -> blk_3.u1"}] - Simulate and read the result — one
evaluate_matlab_codecall. The simulation compiles the block, so it is the verification; skip separate inspection calls unless it fails.
The examples give the symbol definitions and code parameters for common patterns; read them only when the pattern isn't covered here.
To run the model programmatically and inspect results (sim/parsim,
Simulink.SimulationInput, logsout), use the simulating-simulink-models skill.
Block Parameters
| Parameter | Type | Notes |
|---|---|---|
InitializeConditionsCode |
string | Runs once at simulation start |
OutputCode |
string | Runs each timestep |
TerminateCode |
string | Runs once at simulation end |
SampleTime |
string | Default "-1" (inherited) |
SymbolSpec |
handle | Read-only param — get and mutate in place, never set_param back |
What survives from InitializeConditionsCode to OutputCode: only imported
modules (import m, import m as x, import pkg.sub) and Persistent symbols.
Everything else in the init namespace is discarded — from m import f bindings,
functions, classes, and plain variables (k = 3) raise NameError in
OutputCode. Use the module-qualified form (import m → m.f(...)), repeat
the from import in OutputCode, or store objects in a Persistent symbol.
SymbolSpec API
Class: Simulink.PythonFunctionBlock.SymbolSpec (handle object).
ss = get_param(blk, 'SymbolSpec');
sym = ss.addSymbol('name'); % Returns Symbol — then set properties
sym.Scope = 'Input';
sym.Type = 'double';
sym.Size = '1';
got = ss.getSymbol('name'); % Retrieve existing
ss.deleteSymbol('name'); % Remove
Handle object: mutations apply immediately to the block.
Symbol Properties
| Property | Values | Notes |
|---|---|---|
Name |
char | Variable name in Python namespace |
Scope |
'Input' 'Output' 'Parameter' 'Persistent' |
|
Type |
'double' 'single' 'int8' 'int16' 'int32' 'int64' 'uint8' 'uint16' 'uint32' 'uint64' 'boolean' 'string' 'Bus: <BusObject>' 'fixedpoint' 'PythonObject' |
PythonObject only for Persistent. Use lowercase 'boolean' — 'Boolean' is accepted by the setter but fails at compile ("not in scope"). A bus symbol names a Simulink.Bus object in the base workspace |
Size |
char | '1', '3', '[2 3]', '-1' (inherit) |
Label |
char | Port/mask display name |
PortNumber |
int | Port ordering |
Data Type Mapping
| Simulink | Python |
|---|---|
| scalar double | float |
| vector/matrix double | numpy.ndarray if numpy is available, else array.array. Shape follows Size ('[2 3]' ↔ (2, 3)); element (i,j) in MATLAB is [i-1, j-1] in Python — no transpose |
string |
str (output str becomes a MATLAB string). A root Inport fed from the workspace needs Interpolate off |
| bus (input) | dict keyed by element name — u["a"] |
| scalar integer | int |
| vector integer | numpy.ndarray if numpy is available, else array.array |
PythonObject (Persistent) |
any Python object |
Limitations
- No variable-size signals or array of buses
- No continuous sample time with persistent variables
- No Dataflow Subsystems
- No rapid accelerator in For Each Subsystems
- No backward stepping with persistent variables
- Code generation supported (Python C API) — requires dev headers + interpreter linkage
Copyright 2026 The MathWorks, Inc.
Arquivos desta skill
5Perguntas sobre a skill simulink-integrate-python-code
Como instalo a skill simulink-integrate-python-code no Claude Code?
Execute npx degit matlab/simulink-agentic-toolkit/skills-catalog/simulink-modeling/simulink-integrate-python-code ~/.claude/skills/simulink-integrate-python-code. O Claude Code carrega skills de ~/.claude/skills (todos os projetos) ou .claude/skills (um projeto) e usa uma skill quando a descrição dela corresponde à tarefa.
Quais clientes podem usar a skill simulink-integrate-python-code?
Qualquer cliente que leia o formato Agent Skills: Claude Code, Codex, Gemini CLI e claude.ai (envie como ZIP). Scripts da skill são executados apenas onde o cliente permite execução de código.
Posso usar o bloco Python Code para inferência de deep learning?
Não. Para modelos de redes neurais treinados, como PyTorch, TensorFlow ou ONNX, você deve usar os blocos Deep Learning Toolbox Model Predict.