如何在 Simulink 查找中使用来自 cftool 的 3D 表面数据 table?

How to use 3D surface data from cftool in Simulink lookup table?

我正在设计一个电池模型,其内阻取决于两个变量:SoC 和温度。

我已经使用 MATLAB 的曲线拟合工具箱对我拥有的数据(x、y 和 z 基本上 - 每个总共 131 个点)进行了插值,并且能够生成所需的依赖性 3D 地图(见下图) :

我的问题是我现在如何为我的 Simulink 模型使用该地图?作为输入参数,我将有 SoC 和温度,以欧姆为单位的电阻应该是输出。但是,我一直无法找到一种方便的方法来导出 suitable 查找 table 中的数据(或类似有用的方法,我的第一个猜测是我应该使用 2-D 查找 table 在这种情况下)在 Simulink 中。但是,我对此很陌生,我不知道如何为 Simulink LUT 生成 table 数据。

Simulink 查找表:

Table 数据是您从曲线拟合中插入的 z 数据。我猜它对每个断点组合都有一个值(即它涵盖了第一个图中的每个网格交叉点)。因此,如果断点 1 为 100 个元素,断点 2 为 40 个元素,则 Table 数据为 100x40.

如果您无法从基于 GUI 的交互式曲线拟合中获取数据,我想您可以从命令行中提取数据。以下是 Mathworks 曲线拟合文档的节选。最好验证一下,因为我没有工具箱来测试它。

•插值法:fittedmodel = fit([Time,Temperature], Energy, 'cubicinterp');
•评估:fittedmodel(80, 40)

根据您的 LUT 输入 u1 和 u2,table 将内插或外推网格以获得您的输出值。

希望对您有所帮助。

总算找到了解决方法,感谢Tom的帮助,fittedmodel()函数确实是关键所在。然后,我使用两个 FOR 循环来填充我的矩阵,该矩阵在 cftool 插值之后为 49x51(如图像中的网格所示)。之后,只需两个 for 循环就可以用我的 T 和 SoC 参数的 z 值填充我的矩阵。

for x = 1:49
for y = 1:51
    TableData(x,y)=fittedmodel(B_SoC(x),B_Temp(y));
end
end

其中TableData是我的LUT需要的49x51矩阵,B_SoC和B_Temp分别是[0:2.083:100]和[-10:1.1:45](根据需要确定我的 x 轴和 y 轴的起点和终点与数据光标从图像中获取的间距)。