Matlab 如何在Simulink查找表中使用cftool中的三维曲面数据?

Matlab 如何在Simulink查找表中使用cftool中的三维曲面数据?,matlab,2d,lookup,simulink,Matlab,2d,Lookup,Simulink,我正在设计一个带有内阻的电池模型,内阻取决于两个变量:SoC和温度 我已经使用MATLAB的曲线拟合工具箱对我拥有的数据(x、y和z基本上-每个总共131个点)进行了插值,并且能够生成所需的依赖性3D地图(见下图): 我的问题是,我现在如何在Simulink模型中使用该地图?作为输入参数,我将有SoC和温度,以欧姆为单位的电阻应为输出。但是,在Simulink中,我无法找到一种方便的方法将数据导出到合适的查找表中(或类似有用的,我的第一个猜测是,在这种情况下,我应该使用二维查找表)。但是,我对

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

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

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

Simulink LUT:


表格数据是曲线拟合的插值z数据。我猜它对断点的每个组合都有一个值(即,它覆盖了第一个图表中的每个网格交点)。所以,如果断点1是100个元素,断点2是40个元素,那么表数据是100x40

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

•插值:fittedmodel=拟合([时间、温度]、能量、“立方英尺”)
•评估:fittedmodel(80,40)

基于LUT输入u1和u2,表格将插值或外推网格以获得输出值


希望能有所帮助。

毕竟我找到了解决方案,谢谢Tom的帮助,
fittemodel()
函数确实是关键。然后,我使用两个FOR循环来填充我的矩阵,该矩阵在cftool插值后为49x51(如图中的网格所示)。在那之后,我的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轴的期望起点和终点,使用数据光标从图像中获取间距)。

因此,理想情况下,我希望生成一个从-10摄氏度到45摄氏度的范围,SoC将在0到100之间变化(这两个是我LUT中的u1和u2)。断点需要比1更精细,比如说步长为0.1或类似值。我的问题是从插值曲线生成这些断点的表数据。所以我需要以某种方式提取矩阵,但我不知道如何提取。LE:fittemodel(x,y)函数确实帮助我得到了这个问题的最终解,谢谢你,汤姆。明确的答案贴在下面。很高兴它有帮助。插值后的曲线图看起来略有不同(对我来说,原来的曲线图似乎有更多的波峰和波谷——我不确定是从不同的角度看的,还是数据中的实际差异),所以最好确保它们是相同的。我改变了插值方法,这就是原因。第一个只是一个例子,决不是我将使用的最终方法。我现在必须评估哪一个工作得最好,但至少我知道如何将其转换到Simulink中。汤姆,干杯!