当需要得到一个系统的输出和输入之间的关系时,采用理论建模的方法比较麻烦,想跳过某个系统的建模,则可以首先通过实验得到这个系统的输入和输出信号(阶跃响应信号),再通过系统辨识的方法得到该系统的传递函数。

导入实验数据

在MATLAB界面上方,选择“APP”->“System Identification”,在弹出的对话框中,选择“Time domain data”。
在这里插入图片描述

辨识设置

然后,在弹出的对话框中,在“Input”和“Output”中填入工作区中的变量名称(由实验获得),同时“Sampl time”和实验的采样率保持一致,点击“Import”。
在这里插入图片描述
之后即可看到数据已经被导入进来了。接下来选择“Transfer Function Models…”,
在这里插入图片描述
在弹出的对话框中,输入传递函数的极点和零点,由于我的系统是比例系统,因此应辨识为一阶传递函数,因此这里设置极点为1个,零点是0个。点击“Estimate”。
在这里插入图片描述

辨识结果查看

双击“tf1”图框,弹出的对话框中就有辨识后的传递函数了,如下图:
在这里插入图片描述
如果想查看曲线:选中“tf1”之后,勾选下方的“Model output”,即可查看拟合曲线。
在这里插入图片描述

辨识曲线导出

(1)曲线操作
如果想导出辨识后的曲线,则可以点“文件”->“Copy figure”。
在这里插入图片描述
在复制出的图框中,选择“查看->”“属性编辑器”,在属性编辑器中,选中实验曲线,按delete删掉。再讲属性编辑器关掉。
在这里插入图片描述
(2)代码提取
目前图框中就只剩一条曲线了,也就是需要导出数据的曲线,在MATLAB的命令行或者.m文件中运行以下代码:

% 找到所有线条对象
lines = findobj(gca, 'Type', 'line');
% 提取数据
for i = 1:length(lines)
    xData = get(lines(i), 'XData');
    yData = get(lines(i), 'YData');
end
plot(xData, yData,  'r', 'LineWidth',2);

即可得到辨识后曲线的数据了。

更新时间:2025.04.04

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐