保存有序的非相邻大数据

时间:2014-03-26 08:21:51

标签: matlab reference linked-list bigdata

我有一个问题。我认为其中一个答案是“不要使用matlab”,但我更愿意找到其他的。

我有一定数量的数据集。每个集由数字id(这是一个正整数)指定。我没有选择身份证。我想按id名称对这些数据集进行排序,但是这些数据并不相互关联。 例如

[3 9 17 35 69 101]

当我从我的数据流中获取新数据集时,我可以得到一个可以获取任何值的id,例如19.我想在“17”和“35”之间插入它。

其中一个肮脏的解决方案是制作一组数据集。 如果N是我到目前为止的数据集总数,则Ind是一个数据集的索引。如果我想要在我的单元格中插入一个第(N + 1)个数据集,其ID正好位于中间,我需要向上移动所有具有更大索引的数据集。你会认为这不是很有效。

然后我想起了我所拥有的一种罕见的编程类型(我是一名物理学家)。它正在处理链接列表。这里的解决方案很简单,我只需要将前一组的指针更改为我的新数据集,并添加指向下一个的指针:效率更高。

没有内置的matlab函数,但有一个名为dlnode的类示例。通过在线搜索关于这个主题的更多内容,我的第一个打击很遗憾:http://abandonmatlab.wordpress.com/category/thirty-misfeature-pileup/ 基本上,这个人表明,制作510个元素的双重列表,然后清除这两个列表会产生一堆警告。 我自己尝试了,通过清除2个变量得到了一堆警告。我还尝试保存变量(右键单击>另存为):它在链表中有510套,但会使Matlab崩溃10000(注意:每套保存的数据只有1个数值,在我的例子中每套是一千个字符 - 我希望最少10000套)。所以链表似乎不是Matlab的解决方案。

您是否已经遇到过这个问题?你能想出一个更有效的解决方案吗?

感谢您的帮助。


编辑:我想我需要更精确。 我的数据集看起来像这样:

id: 89 %positive integer as id
data: 'xxxxxx'%several lines of strings

我有一个数据流,其中指定了一个id。我无法控制这个id,我只知道它只能是正整数。 进入的ID可以更小,更大,甚至等于我之前已经拥有的身份。

在我获得相同ID的情况下,数据是不同的。我只想添加附加到我以前保存的数据的字符串行(比如“yyyyyy”)

id: 89 %positive integer as id
data: 'xxxxxxyyyyyy'%several lines of strings

但这不是困难的部分。

我很难通过增加ID来在某种数据结构中对它们进行排序,以便以后更容易找到我的数据。但我仍然希望我的代码能够有效地将新数据集添加到整个集合中。可以预先分配单元格但不能解决获取id小于目前获得的较大id的数据集的问题(这需要更改所有这些数据集的索引)。

我正在考虑的解决方案是附加数据而不关心我得到的新ID是大还是小......

1 个答案:

答案 0 :(得分:1)

Matlab使用不? =)

我目前正在帮助物理学家从Matlab过渡到Python。在python中,我使用字典来跟踪你的数据集,所以我快速搜索了“matlab中的字典”,找到了"How to use Hash Tables (dictionaries) in MATLAB?",它可能适合你。

编辑:链接到我的原始链接与"How to use Hash Tables (dictionaries) in MATLAB?"

重复的问题