我有一个问题。我认为其中一个答案是"不要使用matlab",但我更愿意找到其他的。
我有未知数量的数据集。每个集合由一个数字id(一个正整数)指定。我没有选择本我。我想按id名称对这些数据集进行排序,但这些id并不会相互跟随。例如
[3 9 17 35 69 101]
当我从数据流中得到一个新的数据集时,我可以得到一个id,它可以取任何值,例如19。我想把它插入到"17"one_answers"35"之间
一个肮脏的解决方案是创建一个数据集单元格。如果N是到目前为止数据集的总数而Ind是一个数据集的索引。如果有(N+1)个数据集我想插入到单元格中id正好在中间,我需要上移所有索引更大的数据集。你会认为这不是很有效。
然后我想起了我上过的一门罕见的编程课(我是一名物理学家)。它处理的是链表。这里的解决方案很简单,我只需要将前一组的指针更改为我的新数据集,并添加指向下一个数据集的指针:效率更高。
没有内置的matlab函数,但是有一个叫做dlnode的类示例。通过在网上更多地搜索这个话题,我的第一个命中是可悲的:http://abandonmatlab.wordpress.com/category/thirty-misfeature-pileup/基本上,这个人展示了创建一个包含510个元素的双列表,然后清除两个列表会产生一堆警告。我自己试过了,通过清除这两个变量,我得到了一堆警告。我还尝试保存变量(右键单击>另存为):它在链表中为510组工作,但会使Matlab崩溃10000(注意:这里保存的每组数据只有1个数值,在我的情况下,它是每组一千个字符-我预计至少10000组)。因此,链表似乎不是Matlab的解决方案。
你已经遇到这个问题了吗?你能想出一个更有效的解决办法吗?
谢谢你的帮助。
编辑:我想我需要更精确。我有这样的数据集:
id: 89 %positive integer as id
data: 'xxxxxx'%several lines of strings
我有一个指定id的数据流。我无法控制这个id,我只知道它只能是正整数。输入的id可以更小,更大甚至等于之前已经得到的id。
在我得到相同id的情况下,数据是不同的。我只是想添加的字符串行(说"yyyyyy")附加到我以前保存的数据
id: 89 %positive integer as id
data: 'xxxxxxyyyyyy'%several lines of strings
但这还不是最困难的部分。
困难的是我想通过增加id在某种数据结构中对它们进行排序,以便以后更容易找到我的数据。但我仍然希望我的代码在向整个集合添加新数据集时是有效的。预分配单元格是可能的,但无法解决获取id小于目前获得的id的数据集的问题(这需要更改所有这些数据集的索引)。
我正在考虑的一个解决方案是追加数据,而不关心我得到的新id是大还是小…
Matlab用不中用?=)
我正在帮助物理学家从Matlab过渡到Python。在python中,我会使用字典来跟踪你的数据集,所以我快速搜索了"Matlab中的字典",发现了"如何在Matlab中使用哈希表(字典)?"这可能对你有用。
编辑:链接到我的原始链接的问题是一个副本:"如何在MATLAB中使用哈希表(字典)?"