发布时间:2026/7/9 16:23:00
第五章:仿真配置与运行 第五章仿真配置与运行5.1 仿真参数配置5.1.1 打开 Configuration Parameters仿真参数配置是运行仿真前最重要的步骤所有仿真行为都由此控制。打开方式方法1菜单 Simulation → Model Configuration Parameters 方法2快捷键 CtrlE 方法3工具栏齿轮图标 ⚙ 方法4命令行 set_param(modelname, StopTime, 10)配置参数对话框结构Configuration Parameters ├── Solver求解器 ← 最重要 ├── Data Import/Export ← 数据导入导出 ├── Math and Data Types ← 数学和数据类型 ├── Diagnostics ← 诊断设置 ├── Hardware Implementation ← 硬件实现代码生成用 ├── Model Referencing ← 模型引用 └── Code Generation ← 代码生成设置5.1.2 仿真时间设置Solver 页面顶部 Start time仿真开始时间通常为 0 Stop time 仿真结束时间 示例 Start time 0 Stop time 10 → 仿真 0~10 秒 Stop time inf → 无限运行需手动停止 Stop time 2*pi → 支持 MATLAB 表达式仿真时间选择建议控制系统 Stop time 5~10 倍的系统时间常数 例τ0.1s → Stop time 1~2s 信号处理 Stop time 足够观察完整信号特征 例1Hz信号 → Stop time ≥ 3s至少3个周期 嵌入式代码验证 Stop time 实际运行时间 例电机控制 → Stop time 5s5.1.3 求解器选择Solver求解器是 Simulink 仿真的核心决定如何在时间上推进计算。求解器分类┌─────────────────────────────────────────────────────┐ │ 求解器类型 │ ├─────────────────────┬───────────────────────────────┤ │ 变步长Variable│ 固定步长Fixed │ │ 连续系统 │ 离散系统/代码生成 │ ├─────────────────────┼───────────────────────────────┤ │ ode45默认推荐 │ Fixed-step代码生成必选 │ │ ode23 │ ode4Runge-Kutta 4阶 │ │ ode113 │ ode3 │ │ ode15s刚性系统 │ ode1Euler法 │ │ ode23s │ discrete纯离散系统 │ │ ode23t │ │ │ ode23tb │ │ └─────────────────────┴───────────────────────────────┘各求解器适用场景求解器适用场景特点ode45大多数连续系统默认4-5阶Runge-Kutta精度高速度快ode23精度要求不高的连续系统2-3阶速度更快ode113高精度要求可变阶Adams法精度最高ode15s刚性系统Stiff适合时间常数差异大的系统ode23s刚性系统快速比ode15s更快但精度略低Fixed-step离散系统/代码生成步长固定结果可重复如何判断是否为刚性系统刚性系统特征 系统中同时存在快变量和慢变量 时间常数相差 100 倍以上 例电力电子系统μs级开关 ms级滤波 症状 使用 ode45 仿真极慢步长被迫很小 或仿真结果不稳定 解决改用 ode15s 或 ode23s5.1.4 步长设置变步长Variable-stepMax step size最大步长auto 或 指定值 auto → 由求解器自动决定推荐 指定值 → 限制最大步长提高精度但增加计算量 Min step size最小步长 通常保持默认 Initial step size初始步长 通常保持 auto 建议 一般情况使用 auto 如果 Scope 波形不光滑减小 Max step size 例Max step size 0.0011ms固定步长Fixed-stepFixed-step size固定步长必须指定 例0.001 → 每1ms计算一次 选择原则 步长 ≤ 系统最快时间常数的 1/10 步长 ≤ 采样周期离散系统 例系统最快时间常数 τ0.01s 步长应 ≤ 0.001s5.1.5 容差设置Tolerance相对容差Relative tolerance 默认1e-30.1% 含义每步计算误差不超过结果的 0.1% 精度要求高时改为 1e-6 绝对容差Absolute tolerance 默认auto由相对容差决定 当信号值接近零时起作用 调整建议 一般仿真保持默认 1e-3 精度要求高改为 1e-6 仿真速度慢可适当放宽到 1e-25.2 运行仿真5.2.1 运行/暂停/停止运行控制▶ 运行Run 快捷键CtrlT 工具栏点击绿色三角按钮 命令行sim(modelname) ⏸ 暂停Pause 快捷键CtrlShiftT 工具栏点击暂停按钮 暂停后可以查看当前信号值 ▶ 继续Continue 暂停后再次点击运行按钮 ⏹ 停止Stop 快捷键CtrlShiftT再次按 工具栏点击红色方块按钮 强制终止仿真仿真状态显示状态栏显示 Compiling... → 正在编译模型 Initializing... → 正在初始化 Running... → 仿真运行中显示当前时间 Paused → 已暂停 Done → 仿真完成 Error → 发生错误5.2.2 仿真加速模式Simulink 提供三种仿真模式速度依次提升Normal普通模式 默认模式 完整解释执行支持所有调试功能 速度慢 适用开发调试阶段 Accelerator加速模式 将模型编译为 MEX 文件 速度比 Normal 快 2~10 倍 限制部分调试功能不可用 切换菜单 Simulation → Mode → Accelerator Rapid Accelerator快速加速模式 生成独立可执行文件 速度比 Normal 快 10~100 倍 限制不支持实时调试参数修改需重新编译 切换菜单 Simulation → Mode → Rapid Accelerator切换仿真模式菜单 Simulation → Mode → 选择模式 或工具栏下拉菜单 [Normal ▼] → 点击切换 建议 调试阶段Normal 参数扫描/批量仿真Rapid Accelerator 日常仿真Accelerator5.2.3 仿真进度监控实时监控方法方法1状态栏 底部状态栏显示当前仿真时间 例Simulation time: 3.456 / 10.000 方法2Scope 实时更新 仿真运行时 Scope 实时显示波形 可以观察系统动态行为 方法3Display 模块 实时显示关键信号的数值 方法4命令行监控 sim() 函数返回后查看结果仿真时间估计% 使用 tic/toc 测量仿真时间ticsim(mymodel);elapsedtoc;fprintf(仿真耗时%.2f 秒\n,elapsed);5.3 仿真结果查看5.3.1 Scope 示波器使用基本操作打开 Scope双击 Scope 模块 关闭 Scope点击右上角 X不影响仿真 Scope 工具栏功能 放大框选区域放大显示 - 缩小缩小视图 ↔ 自动缩放X轴适应时间轴 ↕ 自动缩放Y轴适应幅值轴 ⊞ 自动缩放全部同时适应X和Y 保存图像导出为图片 ⚙ 参数设置配置显示选项Scope 参数配置右键 → ParametersGeneral 标签 Number of input ports输入端口数多路信号 Time range时间轴范围 auto → 自动 10 → 显示最近10秒 Tick labels坐标轴标签显示方式 Sampling显示采样方式 Display 标签每个子图 Y-limitsY轴范围[最小值 最大值] Title子图标题 Show legend显示图例信号名称 Line properties线条颜色、宽度、样式多路信号显示技巧方法1增加输入端口 右键 Scope → Signals Ports → Number of Input Ports 3 → 每路信号在独立子图显示 方法2使用 Mux 合并 [信号1] ──→ [Mux] ──→ [Scope] [信号2] ──→ │ → 所有信号在同一子图显示便于对比 方法3使用 Bus 适合大量信号的组织管理Scope 数据导出仿真结束后在 Scope 窗口 菜单 File → Export → 选择格式 或直接拖拽到 MATLAB 工作区 配置自动导出 Scope 参数 → Logging 标签 勾选 Log data to workspace 设置变量名和格式5.3.2 Data Inspector 数据检查器Data Inspector 是比 Scope 更强大的数据分析工具。打开方式菜单 Simulation → Data Inspector 快捷键 CtrlShiftI 工具栏 Data Inspector 图标主要功能① 查看所有仿真信号 ② 对比多次仿真结果 ③ 信号数学运算加减、FFT等 ④ 导出数据到 MATLAB 或文件 ⑤ 信号属性查看采样时间、数据类型等使用步骤Step 1配置信号记录 右键信号线 → Properties → Logging 勾选 Log signal data 或在 Scope 中配置 Logging Step 2运行仿真 Step 3打开 Data Inspector 自动显示所有已记录的信号 Step 4分析数据 选择信号 → 查看波形 右键 → 导出数据5.3.3 导出数据到 MATLAB 工作区方法一To Workspace 模块位置Sinks → To Workspace 参数配置 Variable name工作区变量名如 output_data Limit data points to last限制保存的数据点数 Decimation抽取比例1全部保存 Save format Timeseries推荐→ 保存为 timeseries 对象 Array → 保存为矩阵 Structure → 保存为结构体 使用示例 [Transfer Fcn] ──→ [To Workspace] Variable name y_out 仿真后在 MATLAB 中访问 plot(y_out.Time, y_out.Data) y_out.Data(end) % 最终值方法二sim() 函数返回值% 配置输出端口% 在模型中添加 Outport 模块% 运行仿真并获取输出simOutsim(mymodel,StopTime,10);% 访问输出数据ysimOut.get(yout);% 获取输出端口数据tsimOut.get(tout);% 获取时间向量% 绘图plot(t,y)xlabel(时间 (s))ylabel(输出)title(仿真结果)方法三Scope 数据导出% 配置 Scope 记录数据% Scope 参数 → Logging → Log data to workspace% Variable name ScopeData% 仿真后访问tScopeData.time;yScopeData.signals.values;plot(t,y)5.3.4 保存仿真结果保存为 .mat 文件% 仿真后保存工作区数据save(simulation_results.mat,y_out,t)% 加载数据load(simulation_results.mat)保存 Scope 图像Scope 窗口 → File → Print to Figure → 生成 MATLAB Figure 窗口 → Figure 窗口 → File → Save As → 选择格式.png/.pdf/.fig保存为 CSV 文件% 将数据导出为 CSVdata[t,y];writematrix(data,results.csv)% 或使用 csvwrite旧版csvwrite(results.csv,data)5.4 常见仿真错误处理5.4.1 代数环Algebraic Loop什么是代数环代数环模型中存在没有延迟的直接反馈回路 示例错误 [Sum] ──→ [Gain] ──→ [Sum]直接反馈无延迟 ↑ │ └────────────────────┘ 问题 计算 Sum 的输出需要知道 Gain 的输出 计算 Gain 的输出需要知道 Sum 的输出 → 循环依赖无法求解错误提示Warning: Algebraic loop detected in modelname Error: Cannot solve algebraic loop解决方法方法1添加 Unit Delay离散系统 在反馈回路中插入 Unit Delay 模块 引入一个采样周期的延迟打破代数环 方法2添加 Memory 模块连续系统 Memory 模块输出上一步的值 打破代数环 方法3重新设计模型结构 检查是否真的需要直接反馈 通常可以通过重新排列模块避免 方法4使用 Algebraic Constraint 模块 适用于真正需要求解代数方程的情况5.4.2 采样率不匹配问题描述当连续模块和离散模块混合使用时 可能出现采样率不匹配的警告 警告示例 Warning: Sample time mismatch between blocks解决方法方法1添加 Rate Transition 模块 位置Signal Attributes → Rate Transition 在不同采样率的模块之间插入 自动处理采样率转换 方法2统一采样率 将所有模块设置为相同的采样时间 方法3使用 Zero-Order Hold 在连续到离散的转换处添加 ZOH 配置诊断级别 CtrlE → Diagnostics → Sample Time 可以设置为 Warning 或 Error5.4.3 数值发散问题症状仿真结果出现 Inf 或 NaN Scope 波形爆炸无限增大 仿真报错停止常见原因和解决方法原因1步长太大 解决减小 Max step size 例从 auto 改为 0.001 原因2系统不稳定 解决检查控制器参数减小增益 例PID 参数过大导致振荡发散 原因3刚性系统使用了非刚性求解器 解决改用 ode15s 或 ode23s 原因4除以零 解决添加 Saturation 或 Dead Zone 防止分母为零 例在除法模块前添加限幅 原因5积分器无限积分 解决添加积分限幅Integrator → Limit output调试技巧% 检查数据中是否有 Inf 或 NaNany(isinf(y_out.Data))any(isnan(y_out.Data))% 找到第一个异常值的位置find(isinf(y_out.Data),1)5.4.4 维度不匹配错误提示Error: Dimensions of arrays being concatenated are not consistent Error: Input port 1 of block expects a [3x1] signal but receives [1x3]常见原因行向量 vs 列向量混用 [1 2 3] → 1×3 行向量 [1;2;3] → 3×1 列向量 两者不能直接相加 矩阵维度不匹配 Gain 设置为矩阵时维度必须与输入匹配 解决方法 添加 Reshape 模块转换维度 修改 Gain 的 Multiplication 设置 检查 Constant 模块的向量方向设置维度检查工具仿真前 菜单 Display → Signals Ports → Port Data Types → 显示每个端口的数据类型和维度 仿真时 信号线上显示维度信息 绿色信号线表示向量/矩阵信号综合实战仿真配置最佳实践%% 完整的仿真配置和运行示例% Step 1定义模型参数Kp2.0;Ki0.5;Kd0.1;setpoint1.0;% Step 2配置仿真参数通过命令行modelnamepid_control_demo;set_param(modelname,StopTime,10);set_param(modelname,Solver,ode45);set_param(modelname,MaxStep,0.01);set_param(modelname,RelTol,1e-4);% Step 3运行仿真simOutsim(modelname);% Step 4提取结果tsimOut.tout;ysimOut.yout{1}.Values.Data;% Step 5分析结果steady_statey(end);error_ssabs(setpoint-steady_state);fprintf(稳态值%.4f\n,steady_state);fprintf(稳态误差%.4f\n,error_ss);% Step 6绘图figure;plot(t,y,b-,LineWidth,2);hold on;plot(t,setpoint*ones(size(t)),r--,LineWidth,1.5);xlabel(时间 (s));ylabel(输出);title(PID 控制仿真结果);legend(系统输出,参考输入);grid on;% Step 7保存结果save(pid_results.mat,t,y,Kp,Ki,Kd);本章小结本章核心要点 ✅ Configuration ParametersCtrlE是仿真配置的核心入口 ✅ 连续系统用变步长求解器ode45离散/代码生成用固定步长 ✅ ode15s 适合刚性系统时间常数差异大 ✅ 三种仿真模式Normal调试/ Accelerator / Rapid Accelerator ✅ Scope 是最常用的结果查看工具Data Inspector 功能更强大 ✅ To Workspace 模块将数据导出到 MATLAB 工作区 ✅ 代数环直接反馈回路用 Unit Delay 或 Memory 解决 ✅ 数值发散检查步长、系统稳定性、求解器选择课后练习打开第四章搭建的 RC 电路模型配置以下仿真参数Stop Time 1sSolver ode45Max step size 0.001运行仿真并观察结果对比三种仿真模式的速度搭建一个复杂模型多个积分器分别用 Normal / Accelerator / Rapid Accelerator 运行记录各模式的仿真时间使用 To Workspace 模块导出仿真数据将 RC 电路的输出导出到工作区在 MATLAB 中绘制响应曲线计算时间常数故意制造代数环观察错误提示然后用 Memory 模块修复

相关新闻

2026/7/9 16:18:00

Aidoku:革命性iOS漫画阅读器,打造你的私人漫画图书馆✨

Aidoku:革命性iOS漫画阅读器,打造你的私人漫画图书馆✨ 【免费下载链接】Aidoku Free and open source manga reader for iOS and iPadOS 项目地址: https://gitcode.com/gh_mirrors/ai/Aidoku 还在为寻找一款纯净、高效且功能强大的漫画阅读应用…

2026/7/9 16:18:00

OpenClaw:将豆包语音逆向封装为标准TTS API服务

1. 项目概述:用OpenClaw把豆包语音变成你自己的TTS引擎最近在几个技术群和开源社区里,总有人问:“有没有办法把豆包(Doubao)那个自然又带点情绪的语音,直接接到我自己的系统里用?”不是截图、不…

2026/7/10 3:43:30

VC++运行库缺失问题全解析:从原理到一键修复方案

1. 项目概述:为什么我们需要一个“修复工具”?如果你在Windows上用过一些老游戏、专业软件或者某些绿色版/破解版的应用,大概率见过这个弹窗:“无法启动此程序,因为计算机中丢失 MSVCP140.dll”或者“应用程序无法正常…

2026/7/10 3:43:30

企业微信API实战:新好友自动通过+拉群全攻略

前言 在私域运营中,广告投放或活动引流带来的流量往往具有瞬时、高并发的特点。当大量的潜在客户同时发起加好友申请时,纯靠人工手动点击通过、再逐个发送欢迎语和拉群邀请,极易因为响应不及时导致流量流失。 本文将从接口层面的实现思路出…

2026/7/10 3:43:30

旧安卓手机变边缘计算节点:Hermes Agent + Termux 部署实战

1. 为什么废旧安卓手机突然成了 Hermes Agent 的“黄金矿机”你手边那台被塞在抽屉角落、屏幕有划痕、电池掉电快、连微信都懒得更新的旧安卓手机,最近可能正悄悄升值——不是因为情怀,而是因为它恰好满足了 Hermes Agent 运行最苛刻也最朴素的三个物理条…

2026/7/10 3:43:30

研究生如何读懂一篇文献-持续尝试ing

一、会选 (1)综述的定义与价值 综述由领域资深学者撰写,系统梳理领域近年研究进展,会阐明领域发展水平、主流技术方法、学界争议、未来研究方向;吃透一篇优质综述,入门效率远高于零散阅读多篇普通原始论文。 (2)综述检索渠道 理工科:检索 Nature、Science、Cell 顶刊…

2026/7/10 3:43:30

一个平台,驾驭全球顶级AI大模型

还在为用不同AI模型到处注册、分别充值、反复切换账号而头疼?Mass 聚合平台,把全球顶级大模型装进一个入口🌍 一个账号,畅享全球模型ChatGPT(GPT系列)—— 对话、写作、代码,全能选手即梦 3.5 P…

2026/7/10 3:38:30

eNSP--防火墙

1.配置pc1,2的ip2.防火墙配置[SRG]int g0/0/2[SRG-GigabitEthernet0/0/2]ip address 192.168.1.1 24[SRG-GigabitEthernet0/0/2]q[SRG]int g0/0/3[SRG-GigabitEthernet0/0/3]ip address 192.168.2.1 24[SRG]firewall zone untrust [SRG-zone-untrust]add int g0/0/2…

2026/7/9 1:39:10

国内大模型选型与企业级落地实战指南

我不能提供任何关于访问境外网络信息的技术方案或变通方法。根据中国法律法规和网络管理要求,所有互联网服务必须遵守国家关于网络安全、数据安全和内容安全的规定。ChatGPT及其后续版本(如所谓“GPT-5”)是由境外机构研发的大语言模型&#…

2026/7/10 2:34:05

三步实战方案:高效获取智慧教育平台电子课本PDF的完整流程

三步实战方案:高效获取智慧教育平台电子课本PDF的完整流程 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 项目…

2026/7/10 0:02:49

5大实战技巧:用ExifToolGUI轻松解决照片元数据管理难题

5大实战技巧:用ExifToolGUI轻松解决照片元数据管理难题 【免费下载链接】ExifToolGui A GUI for ExifTool 项目地址: https://gitcode.com/gh_mirrors/ex/ExifToolGui 你是否曾为整理旅行照片时发现拍摄时间错乱而头疼?是否需要在数百张照片中批量…

2026/7/9 5:30:41

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…