簡體   English   中英

使用vertcat的Matlab錯誤內存不足

[英]Matlab Error using vertcat Out of memory

我正在運行以下代碼。 它適用於較小的NumberOfVariables,但由於內存不足,不適用於8或更大的NumberOfVariables。 我真的只需要第一個不包含零的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
 s = combnk(integers,NumberOfVariables);

是所有Number of Variables大小的integers組合的列表。 所以這是一個清單

ķ!/((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)²!)

你明白了。 如果您實際上是通過為#s元素分配內存來接近它的話,那么這不是您的朋友。 實際上,看着這個,對於x> = 4,它的增長速度將比e ^ x快。

對於從10開始的NumberOfVariables,它變得非常大。

算一算!

https://www.wolframalpha.com/share/clip?f=d41d8cd98f00b204e9800998ecf8427euo0stpao37

使用Wolfram Alpha創建的圖像

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM