Matlab/Simulink的Excel数据导入1-D Lookup Table

目录

前言

第一次尝试

1、Breakpoints那一列数据严格递增

2、模块详情不一样

3、excel数据导入到工作区

4、持续报错

第二次尝试 

1、利用程序将excel数据导入到工作区,生成object

2、选择object选项

总结 


前言

和之前建立simulink输出的plot曲线导入到excel一样(🚪:Matlab画的plot导入到excel),这一次是想反过来,讲excel里面的数据导入到simulink里面形成一个模块,在论坛里询问大家,说是1-D Lookup Table可以实现这个操作。

我想要得到的曲线如下图所示:


第一次尝试

首先是在B站上面搜索相关教学视频,这个UP主我觉得讲的最好(👉Simulink 0基础入门教程 P12 查表模块的介绍 Lookup table),我看那个操作也不是很困难,就是要把excel里面的数据导入到matlab的工作区,我们假设Breakpoint为x,Table Data为y,在1-D Lookup Table详情里面对应Sourse源后面输入x和y就行了。唯一需要注意的是Breakpoint需要严格递增

1、Breakpoints那一列数据严格递增

首先来看看我excel里面的数据吧,是两列数据,第一列代表时间,第二列代表力。为了使其严格递增,我在excel里对其两列选中进行升序排列。

2、模块详情不一样

正当我踌躇满志想这还不是简简单单,后面我打开simulink的1-D Lookup Table模块后发现不对劲,怎么和视频中的不一样?

这是UP主视频中的:

这是我的:

 没有那个Source,可能是因为matlab的版本不同导致的吧(我的版本是R2019b)。

3、excel数据导入到工作区

但是我没有慌,我把excel的两列数据导入到了matlab工作区。

然后和UP主一样的把time和force分别填到Breakpoints 1和Table data后面,再apply。

4、持续报错

之后就有了这个报错:

看来还是Breakpoints的问题,于是我仔细检查time这一列的数值大小是不是严格增大,我发现了有一些时间是相同的,但是数值并不同,我改正后还是报这个错误,试了好几次,而且我这个有两百多个数据点,查起来也麻烦。

第二次尝试 

 同样也是在网上搜索相关资料,在CSDN上发现有人发将Excel数据导入到2-D Lookup Table(这是ta的地址🚪:【Matlab】2-D Lookup Table 导入Excel数据 简单教程),和1-D Lookup Table有异曲同工之妙,我尝试了一下最后成功了,接下来我发一下过程。

1、利用程序将excel数据导入到工作区,生成object

和ta的那篇内容一样,只是ta是有两个指标X1(Breakpoints 1)和X2(Breakpoints 2)才能对应一个Y(Table data)。我这里是两列数据,在ta提供的代码上稍微修改下:

data = xlsread('file.xlsx');
mylookuptable = Simulink.LookupTable;
mylookuptable.Breakpoints(1).Value = data(1:261 ,7);
mylookuptable.Table.Value = data(1:261 ,8);
mylookuptable.StructTypeInfo.Name = 'filelookuptable';

这个excel文件要和simulink模型在同一个文件夹下,我只有一个Breakpoints,所以删除了一行,我是两列,第7列和第8列,将这几行代码输入到matlab的命令行中回车,在工作区workspace就会生成一个mylookuptableobject

这是我生成的object里面的内容:

2、选择object选项

然后回到simulink中,点开1-D Lookup Table的详情页,将Data specification选择Lookup tableobject(之前用的是Table and breakpoints)。

后面的name就是那个工作区mylookuptable的object。

再点击apply就成了,效果看起来和原图也大差不差。

 

总结 

就是按照上面我写的内容来完成的,有什么不懂的欢迎讨论,评论必回!

感谢那些做文字/视频教程的博主和UP主们。

希望这篇文章对大家能有帮助!!!

  • 24
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Simulink 1-D查找表是一种在Simulink中使用的数据类型,它可以将输入值映射到输出值。它通常用于控制系统中的参数调整和校准。1-D查找表可以通过插值算法来计算输入值的输出值,这使得它在实时控制系统中非常有用。 ### 回答2: Simulink 的 1-D Lookup Table 模块是一种用于实现线性插值的函数近似工具。它可以将一个输入信号的值映射到一个输出信号的值。模块内可以定义一个或多个关键点,每个关键点都包含一个输入值和对应的输出值。当输入信号的值在两个关键点之间时,Lookup Table 将进行线性插值,输出信号值将是输入信号值对应于两个关键点之间线性插值的结果。 在实际应用中,1-D Lookup Table 主要用于控制系统中对于输入输出关系曲线的需求。例如,换挡控制系统中的转速与车速之间的映射关系就可以通过使用1-D Lookup Table 来完成。同时,也可以通过在 Lookup Table 内部的插值类型中选择不同的方法,如线性、Nearest、下限和上限插值等,来满足不同的需要。 需要注意的是,1-D Lookup Table 模块的使用需要给定一组输入输出的关键点,并且需要将这些关键点按照从小到大的顺序排列。关键点可以通过手动输入或者直接导入数据来实现。在实际应用中,为了实现更高的准确性和稳定性,通常会将 Lookup Table 和其他控制系统模块配合一起使用。 总之,通过 Simulink 的 1-D Lookup Table 模块,我们可以方便地实现对于输入输出关系的控制和近似,满足不同领域的需求。 ### 回答3: Simulink 1-D查找表是一种模型工具,用于在系统中建立与输入和输出之间相关的映射。它是用于建立比例关系的非线性映射工具,即将输入数据映射到输出数据,以便系统能以一种更加直观的方式处理它们。具体来说,1-D查找表用于与输入信号相关的非线性转换,以生成相应的输出信号。 1-D查找表基本上是一组输入和输出关系组成的表格,其中一列是输入数据,而另一列是相应的输出数据。当输入信号满足某个特定的条件时,查找表会自动查找表格中相应的输出数据,并将其作为该输入信号的输出。此外,1-D查找表还具有插值和外推功能,这意味着可以在输入数据值不完全匹配时,使用更复杂的算法计算相应的输出值,从而使系统能够更好地适应实际的输入数据。 基于1-D查找表,Simulink时序建模的优势在于它可以与各种不同的输入和输出信号类型一起工作。这让Simulink在车辆控制系统、机器人技术、自动化系统等领域广泛应用。更具体的应用包括控制系统中的油门控制、刹车控制和方向盘转向控制,以及模拟现实环境中的相似情况。 总之,Simulink中的1-D查找表是一种实用、高效且灵活的模型工具,可用于各种不同的应用场景。它的使用已被广泛证明是在控制和自动化系统中的一种有效方法,可以帮助开发人员更好地管理复杂的输入和输出数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值