Matlab 迭代排列而不将其保存在内存中

Matlab 迭代排列而不将其保存在内存中,matlab,out-of-memory,octave,permutation,Matlab,Out Of Memory,Octave,Permutation,假设我有一个非常大的向量(超过10个元素),我必须检查每个排列的一些内容,但我不需要所有排列都保存在内存中。举个例子,对于包含12个元素的向量,我遇到了内存问题: >> A = [1 2 3 4 5 6 7 8 9 10 11 12]; >> perms(A) error: out of memory or dimension too large for Octave's index type 我的问题是:有没有一种简单的方法可以像迭代器一样在向量上获得所有可能的排列,

假设我有一个非常大的向量(超过10个元素),我必须检查每个排列的一些内容,但我不需要所有排列都保存在内存中。举个例子,对于包含12个元素的向量,我遇到了内存问题:

>> A = [1 2 3 4 5 6 7 8 9 10 11 12];
>> perms(A)
error: out of memory or dimension too large for Octave's index type
我的问题是:有没有一种简单的方法可以像迭代器一样在向量上获得所有可能的排列,而不需要将它们全部保存在内存中,这样我就可以将它们制作成任意大小的向量,并在循环中对每一个向量执行一些操作


当然,我知道如何在任何编程语言上编程此算法,但我正在寻找octave或Matlab上的现成解决方案。

您可能可以实现此算法的您的版本:@MohsenNosratinia我已经找到了使用Heap算法的很好解决方案,并将发布我自己的答案soon@MohsenNosratinia如果你感兴趣,我已经发布了自己的解决方案。