matlab/simulink-agentic-toolkit:Simulink 代理工具包为您的AI代理提供工具和专业知识,使其能够有效使用Simulink和基于模型的设计。

matlab/matlab-agentic-toolkit:MATLAB 代理工具包为人工智能代理带来了值得信赖的 MATLAB 能力,使工程和科学工作流都已准备好代理。

claude安装结果
调用命令:
📌 使用前必读
Simulink 工具需要连接到已运行的 MATLAB 会话。每次使用前:
- 启动 MATLAB,然后执行:
addpath("~/.matlab/agentic-toolkits/simulink")
satk_initialize
重启 Claude Code 会话(让 MCP server 连接到 MATLAB)
验证:在 MATLAB 中打开一个模型(如 open_system("f14")),然后问我:
▎ "Describe the structure of the currently open model."
注意下以上路径要换成你使用的具体位置,如果不知道也可以让claude查找
贴上我的路径给大家做个参考在 MATLAB 命令行中执行:
addpath('C:\Users\29785\matlab-agentic-toolkit\simulink-agentic-toolkit')
satk_initialize
matlab输出指令如下>> test1
Simulink Agentic Toolkit - Installation Check
===============================================
Prerequisites
✓ MATLAB 24.2.0.3212159 (R2024b) Update 9
✓ Simulink installed and licensed
MATLAB Environment
✓ All 7 tool entry points on path
✓ Package resolution correct (+sage, +mbd inside SATK)
MCP Server
✓ matlab-mcp-core-server.exe found: C:\Users\29785\.matlab\agentic-toolkits\bin\matlab-mcp-core-server.exe
MCP Connectivity
✓ shareMATLABSession available (MATLAB-side MCP components installed)
✓ MATLAB connector running (port 31515)
===============================================
Result: PASS
>>

我打开了simulink的一个文件

"Describe the structure of the currently open model." named:Tinf_2.slx
询问cluade结果如下:

我当前的任务是制作simulink模型
指令如下:帮我新建一个simulink模型名字叫Quadrotor_drone
先在Matlab中显示出simulik,我需要看到界面


传感器模型代码完成。设置互补滤波器代码:
Thought for 3s, called simulink 2 times (ctrl+o to expand)
● 所有核心函数代码完成。现在重新连接 Controller 的第二个输入,并搭建 Mixer 子系统:
Thought for 2s, called simulink 2 times (ctrl+o to expand)
● Controller 连接完成。搭建 Mixer 子系统:
Thought for 2s, called simulink 2 times (ctrl+o to expand)
● Mixer 子系统创建完成。设置电机分配代码:
Thought for 3s, called simulink 2 times (ctrl+o to expand)
● 所有模块代码设置完成。现在重新连接顶层子系统:
● Calling simulink... (ctrl+o to expand)
Thought for 3s, called simulink 2 times (ctrl+o to expand)
● 所有连接完成!现在配置仿真参数:
Thought for 1s, called simulink (ctrl+o to expand)
● 仿真参数配置完成。更新任务状态并验证模型结构:
Thought for 3s (ctrl+o to expand)
Thought for 3s (ctrl+o to expand)
Thought for 1s (ctrl+o to expand)
Thought for 3s (ctrl+o to expand)
Thought for 2s (ctrl+o to expand)
Thought for 2s, called MCP (ctrl+o to expand)
● 所有任务完成。验证模型最终结构:
Thought for 3s, called simulink 2 times (ctrl+o to expand)
● 模型结构验证通过!保存模型:
Thought for 2s, called simulink (ctrl+o to expand)
● Quadrotor_drone 四旋翼无人机仿真模型已搭建完成!
模型总体架构
Reference Position ──► Controller ──► Mixer ──► Plant ──► Sensors ──┐
0;0;1 (PID) (分配) (6DOF) (MPU6050) │
▲ │
└──────── Attitude Estimator ◄──────────────┘
(互补滤波)
子系统说明
┌────────────────────┬──────────────────────────────────┬────────────────────────────────┐
│ 子系统 │ 功能 │ 核心算法 │
├────────────────────┼──────────────────────────────────┼────────────────────────────────┤
│ Plant │ 6DOF 刚体动力学 + 电机模型 │ Newton-Euler 方程,12 状态变量 │
├────────────────────┼──────────────────────────────────┼────────────────────────────────┤
│ Sensors │ MPU6050 加速度计/陀螺仪 + 气压计 │ 含噪声和偏置的真实传感器模拟 │
● 所有任务完成。验证模型最终结构:
Thought for 3s, called simulink 2 times (ctrl+o to expand)
● 模型结构验证通过!保存模型:
Thought for 2s, called simulink (ctrl+o to expand)
● Quadrotor_drone 四旋翼无人机仿真模型已搭建完成!
模型总体架构
Reference Position ──► Controller ──► Mixer ──► Plant ──► Sensors ──┐
0;0;1 (PID) (分配) (6DOF) (MPU6050) │
▲ │
└──────── Attitude Estimator ◄──────────────┘
(互补滤波)
子系统说明
┌────────────────────┬──────────────────────────────────┬────────────────────────────────┐
│ 子系统 │ 功能 │ 核心算法 │
├────────────────────┼──────────────────────────────────┼────────────────────────────────┤
│ Plant │ 6DOF 刚体动力学 + 电机模型 │ Newton-Euler 方程,12 状态变量 │
├────────────────────┼──────────────────────────────────┼────────────────────────────────┤
│ Sensors │ MPU6050 加速度计/陀螺仪 + 气压计 │ 含噪声和偏置的真实传感器模拟 │
├────────────────────┼──────────────────────────────────┼────────────────────────────────┤
│ Attitude Estimator │ 姿态解算 │ 互补滤波 (α=0.98) │
├────────────────────┼──────────────────────────────────┼────────────────────────────────┤
│ Controller │ 级联 PID 控制 │ 位置环→姿态环→高度环 │
├────────────────────┼──────────────────────────────────┼────────────────────────────────┤
│ Mixer │ 电机分配 │ X 型四旋翼混控矩阵 │
└────────────────────┴──────────────────────────────────┴────────────────────────────────┘
仿真配置
求解器:ode4 (固定步长)
步长:0.001s
仿真时长:20s
下一步操作
运行仿真:在 MATLAB 命令窗口输入 sim('Quadrotor_drone')
查看结果:plot_results.m 绘制曲线
调参优化:使用 PID Tuner 调整控制器参数
增加场景:修改 Reference Position 实现轨迹跟踪

全自动生成结果

第一次报错
=== 仿真 (已用时间: 13 秒) ===
错误:要串联的数组的维度不一致。
函数 'Sensors/MPU6050 + Baro' (#43.1277.1308),行 41,列 14:
"acc_meas; gyro_meas; baro_alt"
启动诊断报告。
错误:数组元素 7 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Attitude Estimator/Complementary Filter' (#50.494.495),行 18,列 24:
"7"
启动诊断报告。
错误:解析 'Quadrotor_drone/Attitude Estimator/Complementary Filter' 时出错。
错误:由于模块体中的错误或基础分析的限制,Simulink 无法确定模块 'Quadrotor_drone/Attitude Estimator/Complementary Filter' 的输出大小和/或类型。错误可能不准确。请修复指示的错误,或显式指定所有模块输出的大小和/或类型。
错误:数组元素 2 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Controller/Cascade PID' (#57.746.747),行 23,列 36:
"2"
启动诊断报告。
错误:数组元素 3 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Controller/Cascade PID' (#57.764.765),行 23,列 54:
"3"
启动诊断报告。
错误:数组元素 4 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Controller/Cascade PID' (#57.782.783),行 24,列 15:
"4"
启动诊断报告。
错误:解析 'Quadrotor_drone/Controller/Cascade PID' 时出错。
错误:由于模块体中的错误或基础分析的限制,Simulink 无法确定模块 'Quadrotor_drone/Controller/Cascade PID' 的输出大小和/或类型。错误可能不准确。请修复指示的错误,或显式指定所有模块输出的大小和/或类型。
错误:数组元素 2 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Mixer/Motor Mixer' (#65.342.343),行 14,列 14:
"2"
启动诊断报告。
错误:数组元素 3 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Mixer/Motor Mixer' (#65.374.375),行 15,列 14:
"3"
启动诊断报告。
错误:数组元素 4 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Mixer/Motor Mixer' (#65.407.408),行 16,列 14:
"4"
启动诊断报告。
错误:解析 'Quadrotor_drone/Mixer/Motor Mixer' 时出错。
错误:由于模块体中的错误或基础分析的限制,Simulink 无法确定模块 'Quadrotor_drone/Mixer/Motor Mixer' 的输出大小和/或类型。错误可能不准确。请修复指示的错误,或显式指定所有模块输出的大小和/或类型。
错误:Simulink 没有足够的信息来确定此模块的输出大小。如果您认为以下错误不准确,请尝试指定模块输入的类型和/或模块输出的大小。
错误:数组元素 2 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Plant/6DOF Dynamics' (#36.729.730),行 30,列 20:
"2"
启动诊断报告。
错误:数组元素 2 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Plant/6DOF Dynamics' (#36.781.782),行 31,列 27:
"2"
启动诊断报告。
错误:数组元素 2 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Plant/6DOF Dynamics' (#36.851.852),行 32,列 52:
"2"
启动诊断报告。
错误:解析 'Quadrotor_drone/Plant/6DOF Dynamics' 时出错。
错误:由于模块体中的错误或基础分析的限制,Simulink 无法确定模块 'Quadrotor_drone/Plant/6DOF Dynamics' 的输出大小和/或类型。错误可能不准确。请修复指示的错误,或显式指定所有模块输出的大小和/或类型。
错误:Simulink 没有足够的信息来确定此模块的输出大小。如果您认为以下错误不准确,请尝试指定模块输入的类型和/或模块输出的大小。
错误:要串联的数组的维度不一致。
函数 'Sensors/MPU6050 + Baro' (#43.1277.1308),行 41,列 14:
"acc_meas; gyro_meas; baro_alt"
启动诊断报告。
错误:解析 'Quadrotor_drone/Sensors/MPU6050 + Baro' 时出错。
错误:由于模块体中的错误或基础分析的限制,Simulink 无法确定模块 'Quadrotor_drone/Sensors/MPU6050 + Baro' 的输出大小和/或类型。错误可能不准确。请修复指示的错误,或显式指定所有模块输出的大小和/或类型。
错误:数组元素 2 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Controller/Cascade PID' (#57.746.747),行 23,列 36:
"2"
启动诊断报告。
错误:数组元素 3 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Controller/Cascade PID' (#57.764.765),行 23,列 54:
"3"
启动诊断报告。
错误:数组元素 4 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Controller/Cascade PID' (#57.782.783),行 24,列 15:
"4"
启动诊断报告。
错误:解析 'Quadrotor_drone/Controller/Cascade PID' 时出错。
错误:由于模块体中的错误或基础分析的限制,Simulink 无法确定模块 'Quadrotor_drone/Controller/Cascade PID' 的输出大小和/或类型。错误可能不准确。请修复指示的错误,或显式指定所有模块输出的大小和/或类型。
错误:由于模块体中的错误或基础分析的限制,Simulink 无法确定模块 'Quadrotor_drone/Controller/Cascade PID' 的输出大小和/或类型。错误可能不准确。请修复指示的错误,或显式指定所有模块输出的大小和/或类型。
第一次修复结果
错误原因是 MATLAB Function
块无法自动推断输入信号的维度。我需要为每个函数块明确定义输入输出的大小和类型。
Thought for 9s, called simulink 2 times (ctrl+o to expand)
● Stateflow API 路径不同。我换一种方法,直接用 coder.newtype 来设置端口规格:
Thought for 32s, called simulink 5 times (ctrl+o to expand)

第二次报错
=== 仿真 (已用时间: 13 秒) ===
错误:要串联的数组的维度不一致。
函数 'Sensors/MPU6050 + Baro' (#43.1277.1308),行 41,列 14:
"acc_meas; gyro_meas; baro_alt"
启动诊断报告。
错误:数组元素 7 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Attitude Estimator/Complementary Filter' (#50.494.495),行 18,列 24:
"7"
启动诊断报告。
错误:解析 'Quadrotor_drone/Attitude Estimator/Complementary Filter' 时出错。
错误:由于模块体中的错误或基础分析的限制,Simulink 无法确定模块 'Quadrotor_drone/Attitude Estimator/Complementary Filter' 的输出大小和/或类型。错误可能不准确。请修复指示的错误,或显式指定所有模块输出的大小和/或类型。
错误:数组元素 2 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Controller/Cascade PID' (#57.746.747),行 23,列 36:
"2"
启动诊断报告。
错误:数组元素 3 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Controller/Cascade PID' (#57.764.765),行 23,列 54:
"3"
启动诊断报告。
错误:数组元素 4 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Controller/Cascade PID' (#57.782.783),行 24,列 15:
"4"
启动诊断报告。
错误:解析 'Quadrotor_drone/Controller/Cascade PID' 时出错。
错误:由于模块体中的错误或基础分析的限制,Simulink 无法确定模块 'Quadrotor_drone/Controller/Cascade PID' 的输出大小和/或类型。错误可能不准确。请修复指示的错误,或显式指定所有模块输出的大小和/或类型。
错误:数组元素 2 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Mixer/Motor Mixer' (#65.342.343),行 14,列 14:
"2"
启动诊断报告。
错误:数组元素 3 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Mixer/Motor Mixer' (#65.374.375),行 15,列 14:
"3"
启动诊断报告。
错误:数组元素 4 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Mixer/Motor Mixer' (#65.407.408),行 16,列 14:
"4"
启动诊断报告。
错误:解析 'Quadrotor_drone/Mixer/Motor Mixer' 时出错。
错误:由于模块体中的错误或基础分析的限制,Simulink 无法确定模块 'Quadrotor_drone/Mixer/Motor Mixer' 的输出大小和/或类型。错误可能不准确。请修复指示的错误,或显式指定所有模块输出的大小和/或类型。
错误:Simulink 没有足够的信息来确定此模块的输出大小。如果您认为以下错误不准确,请尝试指定模块输入的类型和/或模块输出的大小。
错误:数组元素 2 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Plant/6DOF Dynamics' (#36.729.730),行 30,列 20:
"2"
启动诊断报告。
错误:数组元素 2 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Plant/6DOF Dynamics' (#36.781.782),行 31,列 27:
"2"
启动诊断报告。
错误:数组元素 2 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Plant/6DOF Dynamics' (#36.851.852),行 32,列 52:
"2"
启动诊断报告。
错误:解析 'Quadrotor_drone/Plant/6DOF Dynamics' 时出错。
错误:由于模块体中的错误或基础分析的限制,Simulink 无法确定模块 'Quadrotor_drone/Plant/6DOF Dynamics' 的输出大小和/或类型。错误可能不准确。请修复指示的错误,或显式指定所有模块输出的大小和/或类型。
错误:Simulink 没有足够的信息来确定此模块的输出大小。如果您认为以下错误不准确,请尝试指定模块输入的类型和/或模块输出的大小。
错误:要串联的数组的维度不一致。
函数 'Sensors/MPU6050 + Baro' (#43.1277.1308),行 41,列 14:
"acc_meas; gyro_meas; baro_alt"
启动诊断报告。
错误:解析 'Quadrotor_drone/Sensors/MPU6050 + Baro' 时出错。
错误:由于模块体中的错误或基础分析的限制,Simulink 无法确定模块 'Quadrotor_drone/Sensors/MPU6050 + Baro' 的输出大小和/或类型。错误可能不准确。请修复指示的错误,或显式指定所有模块输出的大小和/或类型。
错误:数组元素 2 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Controller/Cascade PID' (#57.746.747),行 23,列 36:
"2"
启动诊断报告。
错误:数组元素 3 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Controller/Cascade PID' (#57.764.765),行 23,列 54:
"3"
启动诊断报告。
错误:数组元素 4 超出边界。请修改索引表达式以访问范围 1-1 内的元素。
详细信息
函数 'Controller/Cascade PID' (#57.782.783),行 24,列 15:
"4"
启动诊断报告。
错误:解析 'Quadrotor_drone/Controller/Cascade PID' 时出错。
错误:由于模块体中的错误或基础分析的限制,Simulink 无法确定模块 'Quadrotor_drone/Controller/Cascade PID' 的输出大小和/或类型。错误可能不准确。请修复指示的错误,或显式指定所有模块输出的大小和/或类型。
错误:由于模块体中的错误或基础分析的限制,Simulink 无法确定模块 'Quadrotor_drone/Controller/Cascade PID' 的输出大小和/或类型。错误可能不准确。请修复指示的错误,或显式指定所有模块输出的大小和/或类型。
=== 仿真 (已用时间: 12 秒) ===
错误:'Quadrotor_drone/Plant/6DOF Dynamics' 或它引用的模型包含在计算输出时更新持久变量或状态变量的模块,并且在代数环中不受支持。它位于包含以下模块的代数环中。
错误:'Quadrotor_drone/Sensors/MPU6050 + Baro' 或它引用的模型包含在计算输出时更新持久变量或状态变量的模块,并且在代数环中不受支持。它位于包含以下模块的代数环中。
错误:'Quadrotor_drone/Attitude Estimator/Complementary Filter' 或它引用的模型包含在计算输出时更新持久变量或状态变量的模块,并且在代数环中不受支持。它位于包含以下模块的代数环中。
错误:'Quadrotor_drone/Controller/Cascade PID' 或它引用的模型包含在计算输出时更新持久变量或状态变量的模块,并且在代数环中不受支持。它位于包含以下模块的代数环中。
错误:'Quadrotor_drone/Plant/6DOF Dynamics' 的输入端口(1) 涉及该代数环。
错误:'Quadrotor_drone/Sensors/MPU6050 + Baro' 的输入端口(1) 涉及该代数环。
错误:'Quadrotor_drone/Attitude Estimator/Complementary Filter' 的输入端口(1) 涉及该代数环。
错误:'Quadrotor_drone/Controller/Cascade PID' 的输入端口(2) 涉及该代数环。
错误:'Quadrotor_drone/Mixer/Motor Mixer' 的输入端口(1) 涉及该代数环。
第二次修复结果


版本一,可输出sim_out数据,添加功能可视化界面

按照淘宝商家界面对模型进行优化



