[Matlab][Simulink]如何在2d数组中查找特定值?

[Matlab][Simulink]如何在2d数组中查找特定值?,matlab,simulink,lookup-tables,Matlab,Simulink,Lookup Tables,我遇到了一个必须使用Simulink的情况 我有一个包含数据的csv文件(1000行x 6列)。我需要搜索csv文件的第6列,找到与我要查找的内容最接近的匹配项,然后返回第1列、第2列、第3列和第4列 为了简单起见,让我们来看看我的问题的小版本 Csv文件示例 0 0 0 0 0 20 0 10 15 2 4 30 1 50 2 54 2 40 我搜索21。我发现第1行第6列最接近21行。然后返回0(前四列) 我搜索34,发现第3行第6列最接近34,然后返回150254 希望这能解释

我遇到了一个必须使用Simulink的情况

我有一个包含数据的csv文件(1000行x 6列)。我需要搜索csv文件的第6列,找到与我要查找的内容最接近的匹配项,然后返回第1列、第2列、第3列和第4列

为了简单起见,让我们来看看我的问题的小版本

Csv文件示例

0  0  0  0 0 20
0 10 15  2 4 30
1 50  2 54 2 40
我搜索21。我发现第1行第6列最接近21行。然后返回0(前四列)

我搜索34,发现第3行第6列最接近34,然后返回150254

希望这能解释我需要什么

最初,我使用find(..)在matlab中编写了一个工作脚本,它工作正常,但这个必须使用simulink来完成

我注意到有2d loopup表块可以工作,但是,似乎我需要事先知道我的索引


如果有人能给我指出我可以使用哪些块的正确方向,我可以在谷歌上搜索如何使用它们,我将不胜感激。

正如我在评论中所说,您最好的办法就是简单地使用或块,以便将您已经存在的功能合并到Simulink模型中(如果不需要,无需重新发明车轮)

如果您在必须为“所有Simulink”(即,没有用户定义的块)的约束下工作,则可能有用的几个块是、、和

我可能采取的一种方法是使用选择器隔离第6列。查找列中每个值与您尝试匹配的值之间的“错误”(即,取差值的绝对值)。使用
Min
块查找最小错误。从错误向量中减去该最小错误,使最接近匹配的索引现在的值为0。使用
与零比较
find
可以确定最接近匹配的索引。获得该值后,可以使用它来dri移动另一个
选择器
块,以便根据需要选择元素


我认为还有其他一些块可能非常有用(我敢打赌,您可以将这些块合并到解决方案中);但是,它们需要额外的工具箱。

您可以使用最小块来实现这一点。将其模式设置为index,以便输出错误最小的项的索引


将此索引传递到变量选择器块中,通过In1获取原始行/列以及Idx上最小值的索引。

您“拥有”的原因是什么使用Simulink?如果您已经有一个工作的Matlab函数,那么最简单的方法是使用块或块将现有函数合并到Simulink模型中。如果出于某种原因,您必须拥有“所有Simulink”解决方案然后你可能想查看块。我没有看到这个问题有答案。我最终编写了一个自定义matlab函数,并将其转换为simulink块,在该块中我收到了来自其余设计的输入。你提出的基本上是一样的。我感谢你的回答!