使用vertcat内存不足时出现Matlab错误

使用vertcat内存不足时出现Matlab错误,matlab,Matlab,我正在运行以下代码。它适用于较小数量的变量,但不适用于8或更大数量的变量,因为内存不足。我真的只需要第一个不包含零的AllAnswers,但如果可能的话,我想要所有AllAnswers NumberOfVariables = 9; k=NumberOfVariables^2-NumberOfVariables+1; integers = 0:k-1; numbers = 1:k-1; tic s = combnk(integers,NumberOfVariables); AllAnswers =

我正在运行以下代码。它适用于较小数量的变量,但不适用于8或更大数量的变量,因为内存不足。我真的只需要第一个不包含零的AllAnswers,但如果可能的话,我想要所有AllAnswers

NumberOfVariables = 9;
k=NumberOfVariables^2-NumberOfVariables+1;
integers = 0:k-1;
numbers = 1:k-1;
tic
s = combnk(integers,NumberOfVariables);
AllAnswers = [];
for i = 1:size(s,1)
G=combnk(s(i,:),2);
G = [(G(:,1)'-G(:,2)') (G(:,2)'-G(:,1)')];
G = sort(mod(G,k));
if (isequal(G,numbers))
AllAnswers = [AllAnswers;s(i,:)];
end
end
toc
整数中所有
变量数
大小的元素组合的列表。所以这是一个列表

k/((NumberOfVariables!(k-NumberOfVariables)!)

或者,因为k=NumberOfVariables^2-NumberOfVariables

(NumberOfVariables^2-NumberOfVariables)!/((NumberOfVariables!(NumberOfVariables^2-2*NumberOfVariables)!)

将x用于NumberOfVariables,以保持可读性:

      (x²-x)!        x²!            x²!            x²!     
#s= ----------  > ---------- > ------------ = ------------ 
     x!(x²-2x)!   x!(x²-2x)!   x!(x²-2x+1)!    x!((x-1)²!)
你明白了。如果你真的通过为#的元素分配内存来接近它,那么这个东西就不是你的朋友。事实上,看看这个,对于x>=4,它的增长速度会比e^x快

对于从10开始的NumberOfVariables来说,这个值简直太大了

算算

整数中所有
变量数
大小的元素组合的列表

k!/((NumberOfVariables!(k-NumberOfVariables)!)

或者,因为k=NumberOfVariables^2-NumberOfVariables

(NumberOfVariables^2-NumberOfVariables)!/((NumberOfVariables!(NumberOfVariables^2-2*NumberOfVariables)!)

将x用于NumberOfVariables,以保持可读性:

      (x²-x)!        x²!            x²!            x²!     
#s= ----------  > ---------- > ------------ = ------------ 
     x!(x²-2x)!   x!(x²-2x)!   x!(x²-2x+1)!    x!((x-1)²!)
你明白了。如果你真的通过为#的元素分配内存来接近它,那么这个东西就不是你的朋友。事实上,看看这个,对于x>=4,它的增长速度会比e^x快

对于从10开始的NumberOfVariables来说,这个值简直太大了

算算


从您的代码中,我不理解您正在实现什么。可能创建
s
已经填满了内存,因此没有剩余的空间用于结果,可能可以根据需要在
s
中创建行。从您的代码中,我不理解您正在实现什么。可能已经创建了
s
内存已满,因此结果没有剩余空间,可以选择按需在
s
中创建行。