本文最后更新于 2026年2月19日。
滤波模型是通过回调函数加载的,这就会导致多个模型混用相互干扰。
在 Simulink 中从 .mat 文件获取参数值是一个非常常见的操作,通常有三种主流方法,取决于你希望在什么时候加载这些数据。
1. 使用 Model Workspace(推荐:最整洁)
这是最专业的方法,因为参数会直接绑定在模型内部,不会污染你的 MATLAB 基础工作区(Base Workspace)。
-
步骤:
-
在 Simulink 菜单栏点击 Modeling 选项卡。
-
打开 Model Explorer。
-
在左侧树状图中找到你的模型名称,点击其下的 Model Workspace。
-
在右侧面板的 Data Source 中,将
Source改为MAT-file。 -
在下方选择你的
.mat文件路径。 -
点击 Re-initialize from Source。
-
-
优点: 每次打开模型时,参数会自动加载;变量仅在模型内部可见。
2. 在 Callback(回调函数)中加载(最灵活)
如果你希望在模型启动运行的一瞬间自动加载数据,可以使用回调函数。
-
步骤:
-
在 Simulink 中打开 Modeling -> Model Settings -> Model Properties。
-
切换到 Callbacks 选项卡。
-
选择 PreLoadFcn(打开模型前加载)或 InitFcn(点击运行按钮时加载)。
-
在右侧代码框中输入:
Matlab
load('your_data_file.mat');
-
-
优点: 适合需要根据脚本动态调整参数的情况。
3. 使用 "From File" 或 "From Workspace" 模块(用于信号/时间序列)
如果你要加载的不是单一参数(如
-
From File 模块: 直接在模块参数中指定
.mat文件路径。注意,数据格式必须是timeseries对象或特定的struct格式(含有time和signals字段)。 -
From Workspace 模块: 先在 MATLAB 中用
load('file.mat')加载数据,然后在模块中填入变量名。
常见问题小贴士
-
变量冲突: 如果你在多个地方加载了同名变量,优先级通常是:
Model Workspace>Mask Workspace>Base Workspace。 -
路径问题: 确保你的
.mat文件在 MATLAB 的当前文件夹(Current Folder)中,或者已添加到系统路径。 -
数据格式: 对于老版本的 Simulink,加载信号数据通常要求
.mat文件中保存的是(2, n)的矩阵,其中第一行是时间,第二行是幅值。
你想把这些参数用于普通的增益/常数模块,还是打算给仿真输入一段随时间变化的测试波形? 如果是后者,我可以为你提供具体的数据结构代码。