以单元格高效的方式搜索字符串

时间:2012-11-08 21:51:26

标签: string matlab search cell

这是我在这里的第一篇文章,所以请耐心等待: - )。

问题背景: 我有多个形式的文本文件:

<ticker>,<date>,<open>,<high>,<low>,<close>,<vol>
A,20120904 0926,37.14,37.14,37.14,37.14,693
.
.
.
ZZ,20120904 1602,1.6,1.6,1.6,1.6,11771

你可能已经猜到了它的股票价格。当我将它加载到matlab时,它会创建一个带有数组(数值)和一个单元格(用于字符串)的结构,此时我可以使用它。 问题:

我想找到一种最有效的方法来搜索数组中的特定符号(~70K行)。虽然很容易进行天真或减半的搜索,但我认为这些方法对于多个文件和/或多次搜索非常有用,无法提取给定符号/字符串的开始和结束索引。 我在这里查看过去的帖子并阅读有关Rabin-Karp,Bitap和哈希表的内容,但我不确定它们是否能完全满足我的需求。

到目前为止,我倾向于在单元格中运行一次,并为每个字母创建一个哈希表(即“A”,“B”等),然后运行一个天真的搜索或者你可能建议的任何其他内容: - )。散列的原因是我可能会使用相同的文件来查找不同的股票代码,所以我认为贯穿它一次并标记字母会降低长期的复杂性。

您对此事有何看法?我是朝着正确的方向吗? 我正在使用matlab btw。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以将所有代码存储在结构数组中。每列都是一个属性。假设您有非空值,则可以执行以下操作,

tickers = [S.tickers];
dates = [S.date];

您可以轻松地执行查询以从结构数组S获取所需的索引。您可以通过创建具有股票名称作为键的索引来更进一步并通过股票代码索引代码。